Technical

Upgrade PVE 8 to 9 systemd-boot ZFS rpool UEFI: the path that works

Upgrade PVE 8 to 9 systemd-boot ZFS rpool UEFI: the path that works

Upgrade PVE 8 to 9 with systemd-boot and a ZFS rpool on UEFI, no secure boot. The upgrade itself is easy, but systemd-boot needs a couple of extra steps the forum thread never settles.

Vibrant close-up of network cable connectors with colorful lighting.

Back up first, and not just the VMs

Run vzdump on everything. Then grab /etc/pve, /etc/network/interfaces, and the output of zpool status. If the bootloader breaks, the pool is still there, but the config files are the annoying part to rebuild.

Update PVE 8 fully before the upgrade

Get every package current on 8 first. A half-updated 8 is the fastest way to a broken 9.

apt update && apt full-upgrade -y

Reboot, then check pveversion. It should show the latest 8.x.

Switch repos from 8 to 9

Edit /etc/apt/sources.list and the files under /etc/apt/sources.list.d/. Change bookworm to trixie. The Proxmox repo line should look like:

deb http://download.proxmox.com/debian/pve trixie pve-no-subscription

Also update the Ceph repo if you use it, same word change.

Multi-colored cables intertwined against a dark background, showing technology connections.

Run the upgrade

apt update && apt dist-upgrade -y

This pulls in the new kernel, new systemd, new ZFS. It takes a while. Don’t interrupt it.

Now the systemd-boot part

PVE 9 uses a newer systemd-boot. The bootloader on the ESP needs updating. If you skip this, the box can boot the old kernel and then get weird.

Check which disk holds the ESP:

lsblk -o NAME,PARTLABEL,MOUNTPOINT | grep -i esp

Usually it’s a small vfat partition on the rpool disk. Then reinstall the bootloader:

proxmox-boot-tool refresh

If that complains, run it with the disk path:

proxmox-boot-tool format /dev/sdX2 --force

Replace sdX2 with your actual ESP partition. Then refresh again.

Reboot and verify

Reboot. Check pveversion shows 9.x. Check zpool status is clean. Check bootctl status shows the new systemd-boot and the correct ESP.

What I’d do different

I’d run the upgrade from a console, not SSH. If networking drops mid-upgrade, you’re blind. And I’d keep the old kernel around for a week. The new one usually works, but ZFS and systemd-boot have a history of not agreeing right after a major version bump.

If you hit a wall, the random reboots guide covers the kernel and watchdog side, which is where most post-upgrade weirdness shows up.

Leave a comment

Comments are reviewed before they appear. Your email is never published.