Upgrading from Proxmox 8 to 9 issues; Couldn't find EFI system partition. It is recommended to mount it to /boot or /efi.

[deleted]


What an adventure indeed! Just wanted to say thank you for saving me from a reinstall (although I was able to reboot using the Rescue Boot and had backups so it wouldn't have been a huge deal). I also didn't see any warnings of note during pve8to9 -full, and yet this caused a fatal flaw in the upgrade. My previous install was a vanilla PVE 8.4 install from ISO, so I'm not quite sure what went awry.

Ah well, all good now!
Glad I was help to help!
 
Thanks for the great explanation, that makes sense. I also have an efi boot system.
I can also comment, that my system did not boot, but grub crashed after the migration.
I have run pve8to9 -all with no warnings.
Now, the system is manually reinstalled.

I have also verified the hint with the grub bug, but the relevant package was already installed.
My pleasure, glad this helped!
 
I had a similar issue today:

fully upgraded to pve 8.4.11. running the `pve8to9` command to do a check, complained that i had to remove the systemd-boot package. ok, so i removed it. i than reran the proxmox-boot-tool and did an init on the /boot/efi partition to make sure everything is ok. i rebooted the system before the upgrade and all good, proxmox 8.4.11 came up like normal.

than i did the upgrade with the usual changes in the apt sources list and so. proxmox 9 installed itself like normal and debian upgrade to trixie. BUT, when i rebooted, the system was stuck and went to the bios directly.

tried multiple different boot options, nothing.

so, even with a perfectly booting 8.4.11 before, the upgrade to 9.0.5 managed to corrupt or move the efi boot so that the system could not boot anymore.

the only solution that got me going again was:
- boot from a pve9 iso install -> advanced -> rescue boot
- checked the boot/efi partition via `lsblk`
- unmounted the boot partition `umount /boot/efi`
- init the proxmox-boot-tool again on that partition `proxmox-boot-tool init /dev/nvme0nxxx`
- mounted all again `mount -a`
- did a refresh `proxmox-boot-tool refresh`
- i also triggered an initramfs again `update-initramfs -u -k all`
- reboot

just in case anyone of you is running into the same issue
 
  • Like
Reactions: knifeowl
Thank you Machtl, I also just attempted upgrading PVE 8.4.11 to 9 on minisforum MS-01 and ran into seemingly same situation.

After upgrade and rebooting the text "Welcome to GRUB" flashed shortly on the screen followed by nothing but black for 20sec after which system restarts itself to uefi menu. After retrying couple times managed to end up in this thread, dug up a USB stick, booted to rescue, ran the step you listed and the system started up into grub's blue menu and then booted fine.
 
Hi, all.

I fixed the crashed grub. The problem was with a grubx64.efi file. I just run:
cp -v /boot/efi/EFI/proxmox/grubx64.efi /boot/efi/EFI/debian/grubx64.efi
And reboot to new Proxmox v9 working system.

I need that because I have this proxmox boot lines by default pointed to /debian/ path:
root@pve22:~# efibootmgr
BootCurrent: 000B
Timeout: 3 seconds
BootOrder: 000B,0002,000C,000D,000E,000F,0010,0011,0012,0013
Boot0002* debian HD(1,GPT,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,0x800,0x200000)/File(\EFI\DEBIAN\GRUBX64.EFI)0000424f
Boot000B* debian HD(1,GPT,xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx,0x800,0x200000)/File(\EFI\DEBIAN\GRUBX64.EFI)0000424f
...

But despite this, default file /boot/efi/EFI/debian/grubx64.efi does not updated automatically with proxmox from 8 to 9.
And I copied it manually:

total 4492
drwx------ 2 root root 4096 dec 7 2024 .
drwx------ 5 root root 4096 aug 7 10:13 ..
-rwx------ 1 root root 112 dec 7 2024 BOOTX64.CSV
-rwx------ 1 root root 88568 dec 7 2024 fbx64.efi
-rwx------ 1 root root 152 dec 7 2024 grub.cfg
-rwx------ 1 root root 2685544 aug 7 11:34 grubx64.efi
-rwx------ 1 root root 851368 dec 7 2024 mmx64.efi
-rwx------ 1 root root 952384 dec 7 2024 shimx64.efi

i'll change the `efibootmgr` record later to point it to `/boot/efi/EFI/proxmox/grubx64.efi` to avoid such problems in the future.
This was the fix for me. Seems during the provisioning of my server, my efibootmgr is still reliant on the debian\grubx64.efi. After replacing it with proxmox, my server started fine.
 
Well looks like I'm finding answers faster than anyone can answer (especially since I'm still awaiting approval for my post to be displayed publicly).. Hopefully this will help anyone who has faced the same issues.. So for the boot issue, I was missing the boot-efi partition, i.e.
'UUID=xxxx-xxxx /boot/efi vfat defaults 0 1' where XXXX-XXXX is my own boot/efi partition ID.. I am not sure why but during the upgrade from proxmox 8 to 9 it was removed....

so what I had to do is this

1) execute 'fdisk -l'

which will get you all your drives partitions and you need to find where your EFI System parition is installed
View attachment 88908

In my case it was /dev/nvme0n1p2

2) execute command 'blkid'

This will give you the IDs of all your partitions and you need to find the device you found above where EFI System is to find its ID

View attachment 88909

In my case it was EB51-AD07

3) Edit /etc/fstab

You will need to add the following to your fstab

View attachment 88910

Basically add your EFI partition using the UUID you found.

4) Reboot

After rebooting you'll need to execute the command 'update-initramfs -u -k all'

It is possible this will complain for each of your kernel profiles and tell you to reinstall grub. Just do what it tells you and then you should be fine

View attachment 88911

What an adventure right?! I hope this helps anyone who got this issue after upgrading to Proxmox 9 where somehow the boot/efi partition is removed.

As for the next issue, passing through the LSI SAS2008, I'm on something and I'll see if it works and post a follow-up here.



This solved my inability to boot which struck a couple weeks after upgrading from 7 to 8 to 9. I really appreciate the detailed instructions, would've been a full reinstall without them.
 
Last edited:
I had a similar issue today:

fully upgraded to pve 8.4.11. running the `pve8to9` command to do a check, complained that i had to remove the systemd-boot package. ok, so i removed it. i than reran the proxmox-boot-tool and did an init on the /boot/efi partition to make sure everything is ok. i rebooted the system before the upgrade and all good, proxmox 8.4.11 came up like normal.

than i did the upgrade with the usual changes in the apt sources list and so. proxmox 9 installed itself like normal and debian upgrade to trixie. BUT, when i rebooted, the system was stuck and went to the bios directly.

tried multiple different boot options, nothing.

so, even with a perfectly booting 8.4.11 before, the upgrade to 9.0.5 managed to corrupt or move the efi boot so that the system could not boot anymore.

the only solution that got me going again was:
- boot from a pve9 iso install -> advanced -> rescue boot
- checked the boot/efi partition via `lsblk`
- unmounted the boot partition `umount /boot/efi`
- init the proxmox-boot-tool again on that partition `proxmox-boot-tool init /dev/nvme0nxxx`
- mounted all again `mount -a`
- did a refresh `proxmox-boot-tool refresh`
- i also triggered an initramfs again `update-initramfs -u -k all`
- reboot

just in case anyone of you is running into the same issue
I had exactly same issue. But when boot from pve9 iso -> rescue boot, then I noticed, that proxmox is working again. So I went and executed this command now from remotely connected ssh:
```
# Reinstall GRUB for UEFI systems
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=proxmox

# Update GRUB configuration
update-grub
```

And then it started loading. By the way in UEFI I have two possible boot entries:
One with mentioning boot and another mentioning UEFI
If I boot to UEFI, then it shows something like GRUB is running. Another boot entry just boots up.
Should I fix something further to be prepared for next updates?
 
please post the output of "efibootmgr -v", "pveversion -v" and "pve8to9"
 
I did a few additional commands. When doing additional apt full-upgrade it asked something about removable boot partition. I did those two commands:
Code:
root@pve:~# echo 'grub-efi-amd64 grub2/force_efi_extra_removable boolean true' | debconf-set-selections -v -u
apt install --reinstall grub-efi-amd64

Then after finalizing noticed, that both proxmox and uefi os boots without any issues. So question which should be first and if anything is still wrong on my side?
1757072193252.png

My output of efibootmgr -v
Code:
BootCurrent: 0004
Timeout: 1 seconds
BootOrder: 0004,0000
Boot0000* proxmox       HD(2,GPT,aadbca99-9ac6-40dd-b4ec-de2ac7c0f7bd,0x800,0x200000)/File(\EFI\proxmox\grubx64.efi)
      dp: 04 01 2a 00 02 00 00 00 00 08 00 00 00 00 00 00 00 00 20 00 00 00 00 00 99 ca db aa c6 9a dd 40 b4 ec de 2a c7 c0 f7 bd 02 02 / 04 04 36 00 5c 00 45 00 46 00 49 00 5c 00 70 00 72 00 6f 00 78 00 6d 00 6f 00 78 00 5c 00 67 00 72 00 75 00 62 00 78 00 36 00 34 00 2e 00 65 00 66 00 69 00 00 00 / 7f ff 04 00
Boot0004* UEFI OS       HD(2,GPT,aadbca99-9ac6-40dd-b4ec-de2ac7c0f7bd,0x800,0x200000)/File(\EFI\BOOT\BOOTX64.EFI)0000424f
      dp: 04 01 2a 00 02 00 00 00 00 08 00 00 00 00 00 00 00 00 20 00 00 00 00 00 99 ca db aa c6 9a dd 40 b4 ec de 2a c7 c0 f7 bd 02 02 / 04 04 30 00 5c 00 45 00 46 00 49 00 5c 00 42 00 4f 00 4f 00 54 00 5c 00 42 00 4f 00 4f 00 54 00 58 00 36 00 34 00 2e 00 45 00 46 00 49 00 00 00 / 7f ff 04 00
    data: 00 00 42 4f

pveversion -v
Code:
root@pve:~# pveversion -v
proxmox-ve: 9.0.0 (running kernel: 6.14.11-1-pve)
pve-manager: 9.0.6 (running version: 9.0.6/49c767b70aeb6648)
proxmox-kernel-helper: 9.0.4
pve-kernel-6.2: 8.0.5
proxmox-kernel-6.14.11-1-pve-signed: 6.14.11-1
proxmox-kernel-6.14: 6.14.11-1
proxmox-kernel-6.8.12-14-pve-signed: 6.8.12-14
proxmox-kernel-6.8: 6.8.12-14
proxmox-kernel-6.2.16-20-pve: 6.2.16-20
proxmox-kernel-6.2: 6.2.16-20
pve-kernel-6.2.16-3-pve: 6.2.16-3
ceph-fuse: 19.2.3-pve1
corosync: 3.1.9-pve2
criu: 4.1.1-1
frr-pythontools: 10.3.1-1+pve4
ifupdown2: 3.3.0-1+pmx10
ksm-control-daemon: 1.5-1
libjs-extjs: 7.0.0-5
libproxmox-acme-perl: 1.7.0
libproxmox-backup-qemu0: 2.0.1
libproxmox-rs-perl: 0.4.1
libpve-access-control: 9.0.3
libpve-apiclient-perl: 3.4.0
libpve-cluster-api-perl: 9.0.6
libpve-cluster-perl: 9.0.6
libpve-common-perl: 9.0.9
libpve-guest-common-perl: 6.0.2
libpve-http-server-perl: 6.0.4
libpve-network-perl: 1.1.6
libpve-rs-perl: 0.10.10
libpve-storage-perl: 9.0.13
libspice-server1: 0.15.2-1+b1
lvm2: 2.03.31-2+pmx1
lxc-pve: 6.0.4-2
lxcfs: 6.0.4-pve1
novnc-pve: 1.6.0-3
proxmox-backup-client: 4.0.14-1
proxmox-backup-file-restore: 4.0.14-1
proxmox-backup-restore-image: 1.0.0
proxmox-firewall: 1.1.2
proxmox-kernel-helper: 9.0.4
proxmox-mail-forward: 1.0.2
proxmox-mini-journalreader: 1.6
proxmox-widget-toolkit: 5.0.5
pve-cluster: 9.0.6
pve-container: 6.0.9
pve-docs: 9.0.8
pve-edk2-firmware: 4.2025.02-4
pve-esxi-import-tools: 1.0.1
pve-firewall: 6.0.3
pve-firmware: 3.16-4
pve-ha-manager: 5.0.4
pve-i18n: 3.5.2
pve-qemu-kvm: 10.0.2-4
pve-xtermjs: 5.5.0-2
qemu-server: 9.0.19
smartmontools: 7.4-pve1
spiceterm: 3.4.0
swtpm: 0.8.0+pve2
vncterm: 1.9.0
zfsutils-linux: 2.3.4-pve1
root@pve:~#


pve8to9
Code:
= CHECKING VERSION INFORMATION FOR PVE PACKAGES =

Checking for package updates..
PASS: all packages up-to-date

Checking proxmox-ve package version..
PASS: already upgraded to Proxmox VE 9

Checking running kernel version..
PASS: running new kernel '6.14.11-1-pve' after upgrade.
INFO: Found outdated kernel meta-packages, taking up extra space on boot partitions.
      After a successful upgrade, you can remove them using this command:
      apt remove pve-kernel-6.2

= CHECKING CLUSTER HEALTH/SETTINGS =

SKIP: standalone node.

= CHECKING HYPER-CONVERGED CEPH STATUS =

SKIP: no hyper-converged ceph setup detected!

= CHECKING CONFIGURED STORAGES =

PASS: storage 'local' enabled and active.
INFO: Checking storage content type configuration..
PASS: no storage content problems found
PASS: no storage re-uses a directory for multiple content types.
INFO: Check for usage of native GlusterFS storage plugin...
PASS: No GlusterFS storage found.
INFO: Checking whether all external RBD storages have the 'keyring' option configured
SKIP: No RBD storage configured.

= VIRTUAL GUEST CHECKS =

SKIP: Skipping check for running guests - already upgraded.
INFO: Checking if LXCFS is running with FUSE3 library, if already upgraded..
PASS: systems seems to be upgraded and LXCFS is running with FUSE 3 library
INFO: Checking for VirtIO devices that would change their MTU...
PASS: All guest config descriptions fit in the new limit of 8 KiB
INFO: Checking container configs for deprecated lxc.cgroup entries
PASS: No legacy 'lxc.cgroup' keys found.
INFO: Checking VM configurations for outdated machine versions
PASS: All VM machine versions are recent enough

= MISCELLANEOUS CHECKS =

INFO: Checking common daemon services..
PASS: systemd unit 'pveproxy.service' is in state 'active'
PASS: systemd unit 'pvedaemon.service' is in state 'active'
PASS: systemd unit 'pvescheduler.service' is in state 'active'
PASS: systemd unit 'pvestatd.service' is in state 'active'
INFO: Checking for supported & active NTP service..
PASS: Detected active time synchronisation unit 'chrony.service'
INFO: Checking if the local node's hostname 'pve' is resolvable..
INFO: Checking if resolved IP is configured on local node..
PASS: Resolved node IP '192.168.86.200' configured and active on single interface.
INFO: Check node certificate's RSA key size
PASS: Certificate 'pve-root-ca.pem' passed Debian Busters (and newer) security level for TLS connections (4096 >= 2048)
PASS: Certificate 'pve-ssl.pem' passed Debian Busters (and newer) security level for TLS connections (2048 >= 2048)
INFO: Checking backup retention settings..
PASS: no backup retention problems found.
INFO: checking CIFS credential location..
PASS: no CIFS credentials at outdated location found.
INFO: Checking permission system changes..
INFO: Checking custom role IDs
PASS: no custom roles defined
INFO: Checking node and guest description/note length..
PASS: All node config descriptions fit in the new limit of 64 KiB
INFO: Checking if the suite for the Debian security repository is correct..
PASS: found no suite mismatch
INFO: Checking for existence of NVIDIA vGPU Manager..
PASS: No NVIDIA vGPU Service found.
INFO: Checking bootloader configuration...
PASS: bootloader packages installed correctly
INFO: Check for dkms modules...
SKIP: could not get dkms status
INFO: Check for legacy 'filter' or 'group' sections in /etc/pve/notifications.cfg...
INFO: Check for legacy 'notification-policy' or 'notification-target' options in /etc/pve/jobs.cfg...
PASS: No legacy 'notification-policy' or 'notification-target' options found!
INFO: Check for LVM autoactivation settings on LVM and LVM-thin storages...
PASS: No problematic volumes found.
INFO: Checking lvm config for thin_check_options...
PASS: Check for correct thin_check_options passed
INFO: Check post RRD metrics data format migration situation...
PASS: No old RRD metric files found, normally this means all have been migrated.
INFO: Checking for IPAM DB files that have not yet been migrated.
PASS: No legacy IPAM DB found.
PASS: No legacy MAC DB found.
INFO: Checking if the legacy sysctl file '/etc/sysctl.conf' needs to be migrated to new '/etc/sysctl.d/' path.
PASS: Legacy file '/etc/sysctl.conf' is not present.
INFO: Checking if matching CPU microcode package is installed.
WARN: The matching CPU microcode package 'intel-microcode' could not be found! Consider installing it to receive the latest security and bug fixes for your CPU.
        apt install intel-microcode
SKIP: NOTE: Expensive checks, like CT cgroupv2 compat, not performed without '--full' parameter

= SUMMARY =

TOTAL:    40
PASSED:   33
SKIPPED:  6
WARNINGS: 1
FAILURES: 0

ATTENTION: Please check the output for detailed information!
 
Then after finalizing noticed, that both proxmox and uefi os boots without any issues. So question which should be first and if anything is still wrong on my side?
after you ran that command, it shouldn't matter. the removable entry allows you to boot "from the disk", while the "proxmox" entry is more explicit.
 
  • Like
Reactions: vukisz