If you've recently upgraded your Proxmox VE server from version 8 to version 9 and found yourself staring at a black screen with cryptic GRUB errors, you're not alone. Many users running MD RAID configurations have hit this frustrating issue, and we're here to help you get your server back up and running.
What's happening?
After upgrading to Proxmox VE 9 (which is based on Debian Trixie), you might see error messages like these during boot:
symbol grub_efi_load_image not found
The good news? This isn't your fault, and your data is safe. The bad news? There's a bug in the newer version of GRUB (the bootloader) that ships with Debian Trixie / Proxmox VE 9.
Why did this happen?
Proxmox VE 9 includes GRUB version 2.12, which has a known bug affecting certain hardware configurations, especially:
Systems with MD RAID on EFI partitions (like many dedicated server providers use)
Certain UEFI firmware implementations
The bootloader simply fails to load, leaving your server unbootable even though all your data and configuration are perfectly fine.
The Fix: Downgrade GRUB to version 2.06
The solution is straightforward: we'll downgrade GRUB back to version 2.06 (the one from Proxmox 8) and tell the system not to upgrade it again until the bug is fixed.
Don't worry - this is a safe, tested solution that many Proxmox users have successfully applied.
Before you start
Haven't upgraded yet? You can avoid this problem entirely by holding the GRUB packages before running the upgrade:
apt-mark hold grub-common grub2-common grub-efi-amd64 grub-efi-amd64-bin apt-mark showhold pve8to9 --upgrade
This keeps your working GRUB 2.06 in place during the upgrade. When the Proxmox team fixes GRUB 2.12, you can unhold and upgrade normally.
Already upgraded and stuck? Continue reading for the recovery steps.
Recovery guide
Step 1: Rescue Mode to the Rescue
First, you'll need to boot into a rescue environment. Depending on your setup: - Boot from a Proxmox VE installation ISO - Use your hosting provider's rescue mode (OVH, Hetzner, etc.) - Use any Linux live USB/rescue system
Step 2: Find your partitions
Once in rescue mode, let's see what we're working with:
lsblk -f
Look for these partitions:
- **EFI partition**: Will show `vfat` filesystem, often labeled "EFIBOOT" - **Boot partition**: Usually `ext3` or `ext4` - **Root partition**: Inside an LVM volume, typically called `pve-root`
Important tip: If you see device names like
md124,md127, etc., note that these numbers can change between boots. Always identify partitions by their filesystem type and labels, not just the device number.
Step 3: Mount everything
Now let's mount your Proxmox VE 9 installation:
# Activate your LVM volumes vgchange -ay # Mount your filesystems (adjust md device numbers to match YOUR lsblk output!) mount /dev/mapper/pve-root /mnt mount /dev/md127 /mnt/boot # Your boot partition mount /dev/md124 /mnt/boot/efi # Your EFI partition # Set up for chroot (this lets us work inside your Proxmox installation) mount --bind /dev /mnt/dev mount --bind /dev/pts /mnt/dev/pts mount --bind /sys /mnt/sys mount --bind /proc /mnt/proc mount --bind /run /mnt/run # Enter your Proxmox VE 9 system chroot /mnt
Step 4: Download the working GRUB packages from Proxmox VE 8
We're going to download GRUB 2.06 from the Proxmox VE 8 repository:
cd /tmp wget http://download.proxmox.com/debian/pve/dists/bookworm/pve-no-subscription/binary-amd64/grub-common_2.06-13+pmx5_amd64.deb wget http://download.proxmox.com/debian/pve/dists/bookworm/pve-no-subscription/binary-amd64/grub2-common_2.06-13+pmx5_amd64.deb wget http://download.proxmox.com/debian/pve/dists/bookworm/pve-no-subscription/binary-amd64/grub-efi-amd64_2.06-13+pmx5_amd64.deb wget http://download.proxmox.com/debian/pve/dists/bookworm/pve-no-subscription/binary-amd64/grub-efi-amd64-bin_2.06-13+pmx5_amd64.deb
Step 5: Remove the problematic packages
Let's remove the broken GRUB 2.12 packages:
dpkg --force-all --purge grub-efi-amd64-unsigned grub-efi-amd64-signed
If grub-efi-amd64-signed refuses to remove, try this workaround:
sed -i 's/protected: yes/protected: no/' /var/lib/dpkg/status dpkg --purge grub-efi-amd64-signed
Step 6: Install GRUB 2.06 from Proxmox VE 8
dpkg -i grub-common_2.06-13+pmx5_amd64.deb \
grub2-common_2.06-13+pmx5_amd64.deb \
grub-efi-amd64-bin_2.06-13+pmx5_amd64.deb \
grub-efi-amd64_2.06-13+pmx5_amd64.deb
Step 7: Update all GRUB binaries
Here's an important step many guides miss. The working grubx64.efi file should be about 557KB. We need to make sure all copies in your EFI partition are replaced:
# Check current file sizes ls -lh /boot/efi/EFI/*/grubx64.efi # Copy the working version to all EFI boot locations cp /boot/efi/EFI/proxmox/grubx64.efi /boot/efi/EFI/BOOT/grubx64.efi cp /boot/efi/EFI/proxmox/grubx64.efi /boot/efi/EFI/debian/grubx64.efi # Verify all files are now ~557KB ls -lh /boot/efi/EFI/*/grubx64.efi
Step 8: Prevent future Auto-Upgrades
This is critical. We need to tell the system not to automatically upgrade GRUB back to the broken version:
apt-mark hold grub-common grub2-common grub-efi-amd64 grub-efi-amd64-bin # Confirm it worked apt-mark showhold
You should see all four packages listed as held.
Step 9: Reboot
Time to test:
exit umount -R /mnt reboot
Cross your fingers and watch your server boot successfully!
After server is back online
Once you've logged back into your Proxmox VE 9 server, clean up some unnecessary packages:
apt autoremove
This removes the shim-signed packages that are no longer needed (we've essentially bypassed Secure Boot with the downgraded GRUB).
Verify verything is working
Let's confirm the fix is properly applied:
# Check your GRUB version (should show 2.06-13+pmx5) dpkg -l | grep grub # Confirm packages are held apt-mark showhold # Verify grubx64.efi file sizes (should all be 557056 bytes) ls -l /boot/efi/EFI/*/grubx64.efi
What about future updates?
When you run apt upgrade, you'll see these packages listed as upgradable but "kept back":
grub-common/stable 2.12-9+pmx2 amd64 [upgradable from: 2.06-13+pmx5] grub-efi-amd64-bin/stable 2.12-9+pmx2 amd64 [upgradable from: 2.06-13+pmx5] grub-efi-amd64/stable 2.12-9+pmx2 amd64 [upgradable from: 2.06-13+pmx5] grub2-common/stable 2.12-9+pmx2 amd64 [upgradable from: 2.06-13+pmx5]
This is completely normal and expected. Your system will continue to receive all other updates, just not GRUB.
When can I upgrade GRUB again?
Keep an eye on the Proxmox forums and update changelogs. When a fixed version of GRUB 2.12 is released, you can safely upgrade:
apt-mark unhold grub-common grub2-common grub-efi-amd64 grub-efi-amd64-bin apt update && apt upgrade
Troubleshooting
I see a proxmox-boot-tool warning
If you encounter:
E: cannot determine parent device of '/dev/disk/by-uuid/...' - please provide a partition, not a full disk.
This is just a cosmetic warning with MD RAID setups. To silence it:
cat /proc/cmdline > /etc/kernel/cmdline proxmox-boot-tool refresh
Technical details
For those interested:
- Broken version: GRUB 2.12-9+pmx2 (~2.6MB grubx64.efi)
- Working version: GRUB 2.06-13+pmx5 (~557KB grubx64.efi)
- Affects: Proxmox VE 9 / Debian Trixie
- Common on: MD RAID configurations, certain UEFI implementations ~~~
Tip: If you need assistance or support for a similar issue, you can contact us ;)