Virtualbox, ZFS, freebsd-update 8.0->8.1-RC1, zfsloader problem

I upgraded a 8.0/ZFS running in Virtualbox to the latest test version of 8.1 using freebsd-update, but I found that the zfsloader that is copied to /boot prevents the system to boot (FATAL: int13_harddisk: function 42. Can't use 64bits lba). My system boots fine if I copy a backup of that file to /boot.

What changed with that new loader that make it incompatible with Virtualbox all the sudden?
 
interfasys said:
What changed with that new loader that make it incompatible with Virtualbox all the sudden?
Freebsd-update will replace the bootloader with the standard non-zfs one.
 
OK, but how come the simple replacement of /boot/zfsloader fixes that? If it's called zfsloader, it must be the correct loader, no?
 
You'll need to search freebsd-stable mailing list archives for "zfs boot loader". There was one version somewhere between 8.0-BETA and 8.0-STABLE that would not boot off ZFS.
 
OK, I will, but what's worrying is that it means that, under certain circumstances (Virtualbox), an upgrade to 8.1 using freebsd-update creates a bad zfsloader. Or maybe there is a conflict with something else like AHCI (unstable on 8.1)?
 
I checked the mailing list and couldn't find much information on problems with zfsloader, only with the standard loader.
 
zfsloader == loader

Hi,

I just discovered that somehow after a buildkernel, zfsloader has exactly the same size as the normal loader (204800), although the md5 sums differ. The zfsloader should be bigger i think...

Don't know why the zfsloader from BETA1 is different, but i've just build the one from 9.0-CURRENT and its zfsloader has the same md5 checksum as the one included in the BETA1 release...
 
Just did an upgrade from 8.0 to 8.1-RC2, same problem.
The message says the I'm using a ZFS enabled bootstrap loader revision 1.1, so it should load, but it doesn't.
This is quite a serious issue, but is it a VB one?
 
I did an upgrade from 8.0-RELEASE-p2 to 8.1-RC2 on bare metal. The reboot after first # freebsd-updater install -r 8.1-RC2 went into a recovery shell. But no zfs-filesystem was available (mirrored zroot).

I fixed the issue within the fixit environment with these commands:
[CMD="Fixit#"]gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad0[/CMD]
[CMD="Fixit#"]gpart bootcode -b /mnt2/boot/pmbr -p /mnt2/boot/gptzfsboot -i 1 ad1[/CMD]
 
Ignore my post, i was stupid enough to set WITHOUT_FORTH=YES in src.conf ... commenting that fixed my 'problem'. After a buildworld, zfsloader works again. I don't think that upgrading with freebsd-update would alter anything you would fix with gpart.
 
martijn said:
I don't think that upgrading with freebsd-update would alter anything you would fix with gpart.
You're thinking wrong. Between 8.0 and 8.1-RC2, the bootloader code has changed. For the newer bootloader to succesfully boot off ZFS, you will need to update the PMBR of your drives to the newer boot blocks used by the newer bootloader. The PMBR blocks are updated using gpart as described above.
 
Back
Top