Proxmox VE 8 to 9 in-place update but kernel still on 6.8

alia80

Member
Sep 21, 2021
10
0
21
56
I did an in-place upgrade from PVE8 to PVE9 but after the update the kernel and zfs are still showing old versions even though they both seem to have updated:

Code:
# pveversion
pve-manager/9.1.4/5ac30304265fbd8e (running kernel: 6.8.12-18-pve)

# uname -a
Linux ghar80 6.8.12-18-pve #1 SMP PREEMPT_DYNAMIC PMX 6.8.12-18 (2025-12-15T18:07Z) x86_64 GNU/Linux

# zfs version
zfs-2.3.4-pve1
zfs-kmod-2.2.9-pve1

 # [ -e  /sys/firmware/efi/efivars/ ] && echo "EFI" || echo "BIOS"
EFI

# cat /sys/module/zfs/version
2.2.9-pve1

I think it has something to do with the efi partition:

Bash:
/boot/efi/loader/entries# ls
memtest.conf
proxmox-5.15.158-2-pve.conf
proxmox-6.8.12-18-pve.conf

# proxmox-boot-tool refresh
Running hook script 'proxmox-auto-removal'..
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/cmdline found - falling back to /proc/cmdline
/dev/disk/by-uuid/AED9-4562 contains no grub directory - skipping

Any ideas on how I can resolve this issue?
 
Last edited:
Well, what's in /boot?
And what does pveversion -v tell you, and apt policy proxmox-default-kernel proxmox-kernel-6.17 ?
I guess installing proxmox-kernel-6.17 will bring it to you, but maybe check further why it didn't update itself.
 
Unfortunately this could be one of the problems, as I originally started with PVE6 I have a lot of old version:

# ls /boot
config-5.11.22-1-pve
config-5.11.22-7-pve
config-5.13.19-2-pve
config-5.13.19-6-pve
config-5.15.158-2-pve
config-6.17.4-2-pve
config-6.8.12-18-pve
efi
grub
initrd.img-5.11.22-1-pve
initrd.img-5.11.22-7-pve
initrd.img-5.13.19-2-pve
initrd.img-5.13.19-6-pve
initrd.img-5.15.158-2-pve
initrd.img-6.17.4-2-pve
initrd.img-6.8.12-18-pve
memtest86+ia32.bin
memtest86+ia32.efi
memtest86+x64.bin
memtest86+x64.efi
pve
System.map-5.11.22-1-pve
System.map-5.11.22-7-pve
System.map-5.13.19-2-pve
System.map-5.13.19-6-pve
System.map-5.15.158-2-pve
System.map-6.17.4-2-pve
System.map-6.8.12-18-pve
vmlinuz-5.11.22-1-pve
vmlinuz-5.11.22-7-pve
vmlinuz-5.13.19-2-pve
vmlinuz-5.13.19-6-pve
vmlinuz-5.15.158-2-pve
vmlinuz-6.17.4-2-pve
vmlinuz-6.8.12-18-pve

I know that the new kernel did install as it is there but at boot it is only showing the PVE8 version and the PVE7..

# apt policy proxmox-default-kernel proxmox-kernel-6.17
proxmox-default-kernel:
Installed: 2.0.2
Candidate: 2.0.2
Version table:
*** 2.0.2 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
100 /var/lib/dpkg/status
2.0.1 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
2.0.0 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
proxmox-kernel-6.17:
Installed: 6.17.4-2
Candidate: 6.17.4-2
Version table:
*** 6.17.4-2 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
100 /var/lib/dpkg/status
6.17.4-1 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
6.17.2-2 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
6.17.2-1 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages
6.17.1-1 500
500 http://download.proxmox.com/debian/pve trixie/pve-no-subscription amd64 Packages

Could it be that I need to force it by the changing the default in /etc/default/grub and replace "GRUB_DEFAULT=0" to the actual entry in /boot/grub/grub.cfg which seems to be 'Proxmox VE GNU/Linux, with Linux 6.17.4-2-pve'? Although I want to be careful since I don't want to crash the system and cause data loss
 
Please use code blocks. Try this and reboot
Bash:
proxmox-boot-tool kernel unpin
proxmox-boot-tool refresh
 
Hmm, it's weird, can you run update-grub ? I'm guessing something went wrong when it tried to configure it..
Or maybe something like apt install --reinstall proxmox-kernel-6.17

Or proxmox-boot-tool commands from @Impact, though it's weird that update-grub didn't pick up the latest version.. but maybe it has, and indeed EFI conf doesn't know about it..
 
Last edited:
Hmm, it's weird, can you run update-grub ? I'm guessing something went wrong when it tried to configure it..
Or maybe something like apt install --reinstall proxmox-kernel-6.17

Or proxmox-boot-tool commands from @Impact, though it's weird that update-grub didn't pick up the latest version.. but maybe it has, and indeed EFI conf doesn't know about it.
update-grub didn't help and neither did proxmox-boot-tool refresh but I tried that a while ago
 
Last edited:
Please use code blocks. Try this and reboot
Bash:
proxmox-boot-tool kernel unpin
proxmox-boot-tool refresh
Code:
# proxmox-boot-tool kernel unpin
Removed /etc/kernel/next-boot-pin.
Removed /etc/kernel/proxmox-boot-pin.

# proxmox-boot-tool refresh
Running hook script 'proxmox-auto-removal'..
Running hook script 'zz-proxmox-boot'..
Re-executing '/etc/kernel/postinst.d/zz-proxmox-boot' in new private mount namespace..
No /etc/kernel/cmdline found - falling back to /proc/cmdline
/dev/disk/by-uuid/AED9-4562 contains no grub directory - skipping

# proxmox-boot-tool kernel list
Manually selected kernels:
None.

Automatically selected kernels:
6.17.4-2-pve
6.8.12-18-pve

Should this match the selection on bootup? see attached image from last bootup:

1769392557787.png
 
Last edited:
update-grub didn't help and neither did proxmox-boot-tool refresh but I tried that a while ago
Bash:
# update-grub
Generating grub configuration file ...
W: This system is booted via proxmox-boot-tool:
W: Executing 'update-grub' directly does not update the correct configs!
W: Running: 'proxmox-boot-tool refresh'

No /etc/kernel/cmdline found - falling back to /proc/cmdline
/dev/disk/by-uuid/AED9-4562 contains no grub directory - skipping
Found linux image: /boot/vmlinuz-6.17.4-2-pve
Found initrd image: /boot/initrd.img-6.17.4-2-pve
Found linux image: /boot/vmlinuz-6.8.12-18-pve
Found initrd image: /boot/initrd.img-6.8.12-18-pve
Found linux image: /boot/vmlinuz-5.15.158-2-pve
Found initrd image: /boot/initrd.img-5.15.158-2-pve
Found linux image: /boot/vmlinuz-5.13.19-6-pve
Found initrd image: /boot/initrd.img-5.13.19-6-pve
Found linux image: /boot/vmlinuz-5.13.19-2-pve
Found initrd image: /boot/initrd.img-5.13.19-2-pve
Found linux image: /boot/vmlinuz-5.11.22-7-pve
Found initrd image: /boot/initrd.img-5.11.22-7-pve
Found linux image: /boot/vmlinuz-5.11.22-1-pve
Found initrd image: /boot/initrd.img-5.11.22-1-pve
Found memtest86+ 64bit EFI image: /boot/memtest86+x64.efi
Found memtest86+ 32bit EFI image: /boot/memtest86+ia32.efi
Found memtest86+ 64bit image: /boot/memtest86+x64.bin
Found memtest86+ 32bit image: /boot/memtest86+ia32.bin
Adding boot menu entry for UEFI Firmware Settings ...
done
 
Tried the following so far:

Code:
proxmox-boot-tool kernel unpin
proxmox-boot-tool refresh

and also:

Code:
apt install --reinstall proxmox-kernel-6.17
reboot

made no difference.
 
GRUB sees your kernel now, we have that info. What does proxmox-boot-tool kernel list tell you now? It should see 6.17, and let you refresh the ESP EFI using that new kernel (no need to pin it).

EDIT: Ah, sorry.. read to fast. you did that already. Well, what do proxmox-boot-tool status and efibootmgr tell you now?
 
Last edited:
Also.. you mentioned ZFS, but do you use ZFS on root?
If so, maybe you are using systemd-boot instead of GRUB, so next question that the latest commands should hint about: do you use secure boot? What does bootctl tell you?

You may have missed some feedback from pve8to9, so depending on your setup, it may be advisable to fix systemd-boot, or to replace it with GRUB, you can get more info about that on the Wiki
 
GRUB sees your kernel now, we have that info. What does proxmox-boot-tool kernel list tell you now? It should see 6.17, and let you refresh the ESP EFI using that new kernel (no need to pin it).

EDIT: Ah, sorry.. read to fast. you did that already. Well, what do proxmox-boot-tool status and efibootmgr tell you now?
Bash:
# proxmox-boot-tool status
Re-executing '/usr/sbin/proxmox-boot-tool' in new private mount namespace..
System currently booted with uefi
AED9-4562 is configured with: uefi (versions: 5.15.158-2-pve, 6.8.12-18-pve, grubx64.efi)
 
Also.. you mentioned ZFS, but do you use ZFS on root?
If so, maybe you are using systemd-boot instead of GRUB, so next question that the latest commands should hint about: do you use secure boot? What does bootctl tell you?

You may have missed some feedback from pve8to9, so depending on your setup, it may be advisable to fix systemd-boot, or to replace it with GRUB, you can get more info about that on the Wiki
I don't have ZFS on the boot drive.

I cleared all warnings from pve8to9 prior to apt update && apt dist-upgrade .

I don't have bootctl command available.
 
OK, what about efibootmgr ?
It seems that proxmox-boot-tool is not set to use grub.. so I'd say either format / init the partition (proxmox-boot-tool init /dev/disk/by-uuid/AED9-4562 grub probably), so that it gets back on grub.
 
OK, what about efibootmgr ?
It seems that proxmox-boot-tool is not set to use grub.. so I'd say either format / init the partition (proxmox-boot-tool init /dev/disk/by-uuid/AED9-4562 grub probably), so that it gets back on grub.
Code:
# efibootmgr
BootCurrent: 0006
Timeout: 2 seconds
BootOrder: 0006,0007,0000,0001,0002,0003,0004,0005
Boot0000  Windows Boot Manager  HD(1,GPT,427c6545-b546-4f7d-8427-a87559c5930d,0x800,0x100000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)57494e444f5753000100000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300630031002d006600330032006200330034003400640034003700390035007d0000000e000100000010000000040000007fff0400
Boot0001* EFI Network 1 PcieRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x0)/MAC(f8bc123d7ba4,1)/IPv4(0.0.0.00.0.0.0,0,0)
Boot0002* EFI Network 2 PcieRoot(0x0)/Pci(0x1,0x1)/Pci(0x0,0x1)/MAC(f8bc123d7ba5,1)/IPv4(0.0.0.00.0.0.0,0,0)
Boot0003* EFI Network 3 PcieRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x0)/MAC(f8bc123d7ba6,1)/IPv4(0.0.0.00.0.0.0,0,0)
Boot0004* EFI Network 4 PcieRoot(0x0)/Pci(0x1,0x0)/Pci(0x0,0x1)/MAC(f8bc123d7ba7,1)/IPv4(0.0.0.00.0.0.0,0,0)
Boot0005* EFI Fixed Disk Boot Device 1  PcieRoot(0x0)/Pci(0x2,0x2)/Pci(0x0,0x0)/SAS(500056b36789abeb,0,1,NoTopology)/HD(2,GPT,cf76793c-f52a-4917-88a5-cd606f2eb0de,0x800,0x100000)
Boot0006* Linux Boot Manager    HD(2,GPT,cf76793c-f52a-4917-88a5-cd606f2eb0de,0x800,0x100000)/File(\EFI\systemd\systemd-bootx64.efi)
Boot0007* proxmox       HD(2,GPT,cf76793c-f52a-4917-88a5-cd606f2eb0de,0x800,0x100000)/File(\EFI\proxmox\grubx64.efi)
 
yeah, re-init with grub using proxmox-boot-tool, as I suggested, that should do it. Or switch to UEFI entry 0007 (cue the James Bond theme..), possibly with efibootmgr, but more likely in your UEFI/BIOS setup.
 
Last edited:
yeah, re-init with grub using proxmox-boot-tool, as I suggested, that should do it. Or switch to UEFI entry 0007 (cue the James Bond theme..), possibly with efibootmgr, but more likely in your UEFI/BIOS setup.
Could this also solve the problem?

Bash:
proxmox-boot-tool kernel pin 6.17.4-2-pve

what are the risks of formatting and re-initializing the efi partition?
 
Could this also solve the problem?

Bash:
proxmox-boot-tool kernel pin 6.17.4-2-pve

what are the risks of formatting and re-initializing the efi partition?
well, proxmox-boot-tool here thinks it's driving systemd-boot, and so does the UEFI setup. You could re-enable it (install the tooling, then make sure it boots the proper kernel). But I'd suggest going back with GRUB if you don't need systemd-boot.

You don't need to reformat, init will just basically do grub-install on your current ESP, which is probably already there.. What you want is to switch the EFI boot to grub rather than systemd-boot, so in your case:
efibootmgr -o 0007,0006,0000,0001,0002,0003,0004,0005
Assuming you want to keep the systemd-boot entry as a fallback.. but my guess is you can get rid of it once you know GRUB works.
You can also just try it, using efibootmgr -n 0007 that will simply select GRUB for the next boot. Then if it works, set it in the config.