Solved Cannot import rpool at boot after zpool upgrade

I’ve completely screwed my system, a couple weeks back when I did my last zfs scrub I saw a message from zpool status telling me to upgrade features via zpool upgrade. Even if I admittedly did something stupid, it’s incredibly f*cking stupid for zfs to recommend an action to a user which will completely hose the system and render it unbootable… so much for data being so important
The pool was created with zfs 2.1.x I believe, definitely not a pool over a year old. I use ZFSBootMenu as my bootloader, as soon as I boot the system it tells me unable to import pool, and the only option I have is to drop into a rescue shell.
I have tried mounting the pool readonly but I still get an error, have I completely lost all the data on this pool?

arch linux, kernel 6.5.9, zfs 2.2.0


Will absolute never ever ever again in my life allow zfs to upgrade a damn thing

1 Like

tl:dr data fine, just need to upgrade the base system (somehow) perhaps with a live USB, and the chroot tool

I also ran into arch upgrading the zfs pool out of step with the zfs toolset in the repo. (years ago now)

I’m sure the data is there, and safe, but you need a version of zfs that has that feature.

I only had a data pool, not a boot pool, so was able to get a newer version of zfs, which had the extra feature.

sorry it’s been a long time, but “all” you need is a newer version of the zfs/zpool/zdb toolset.

Perhaps there might be a newer arch kernel you can boot into?

I’m not sure there is a “downgrade” feature, apart from sending the data to another (older) pool

and either way, would require a kernel / system with the newer toolset in.

Not your fault, just the way the upgrades are done in Arch.

I get that you can’t easily upgrade the system it self, which is complicated, and

requires you do some complicated live boot, then downloading a new version of zfs, then chroot the rpool, then upgrade the arch install on the rpool, then you should be able to boot. I think.

Thanks for the reply
The kernel on the system is the latest one that works via zfs-dkms, 6.5.9-arch2_1

I have managed to fire up my old SSD, has the same version of zfs that I initially created the pool with, by base system do you mean the ZFSBootMenu mini system?
It’s all one pool, I don’t have a separate boot pool

From the rescue shell if I do ‘zfs --version’ I get zfs-2.1.11-1
How can I upgrade this package?

1 Like

Real sorry bud, I don’t know how, only vague ideas of chrooting from a live device.
Sorry it does not help

If your zfsbootmenu install is from pre-september, perhaps downloading the 2.2.2 recovery image might allow you to boot? Then rebuild/update zfsbootmenu?

I could be wrong

It just seems like the pool version, 2.2.0 is too new for the bootmenu 2.1.1 but I have not used the system, so am just spitballing.

1 Like

I was able to fix this without any data loss. Mounted my efi partition and copied over the latest zfsbootmenu.EFI, booted from this efi file next boot and all is good and well

3 Likes

Success! Well done!

1 Like

Glad to hear. I admire everyone running ZFS on Arch…but I’m also happy that I don’t have to deal with these issues. Good that everything can be patched and there are ways to get everything back running again. My blood pressure just can’t handle it :wink:

“The brave and reckless vanguard of ZFS-kind!” :clap:

1 Like