On Fri, Feb 19, 2021 at 8:13 AM David Marec <david.marec at lapinbilly.eu>
wrote:
> I have just upgrade one machine from 12-stable to 13-stable.
>
> Everything runs fine until the main ZFS pool was upgraded.
>
> Then the box stopped booting.
>
> Thanks to a FreeBSD-13 Beta2 usb stick, I was able to fix the issue by
> copying `BOOTx64.efi` from the stick to the hard-drive.
>
> Looking to `/boot` to check out for a new EFI boot-loader available, I
> noticed that `boot1.efifat` was removed, but `gptboot.efifat` is still
> there.
>
> Unfortunately it contains an old version of the boot loader:
>
> root at machine:/boot # mdconfig -f gptboot.efifat -u 0
> root at machine:/boot # mount -t msdosfs /dev/md0 /mnt
> root at machine:/boot # ll /mnt/efi/boot/
> total 385
> -rwxr-xr-x 1 root wheel 393216 Apr 16 2018 BOOTx64.efi*
> -rwxr-xr-x 1 root wheel 12 Apr 16 2018 startup.nsh*
>
> The boot firmware I got from the 13-Beta2 installer is different:
>
> -rwxr-xr-x 1 root wheel 894464 Feb 18 21:07 BOOTx64.efi*
>
> What did I missed ?
An error message would be more helpful :)
However, I think I know what's going on. The old boot blocks have a filter
on the enabled features of the zpool. If anything that's not in the allowed
list is enabled, it won't boot off that pool.
I suspect that your 'zpool upgrade' enabled things that weren't
enabled
before. This caused the old boot blocks to no longer work.
We should be better about upgrading boot blocks, but EFI is kinda new and
kinda different than the other out-of-root-filesystem boot blocks we've had
in the past, so there's still some rough edges.
You should be able to update bootx64.efi to the one that's in the 13-beta2
installer and the system should boot off your zpool.
Warner