Can't upgrade 13.3->13.4, kernel hangs at launch, "Loader needs to be updated" with 13.4 loader.efi
Date: Fri, 24 Jan 2025 14:03:45 UTC
I have a server currently running 13.3. I'm unable to upgrade it to 13.4 because when I try to boot the upgraded boot environment, the loader hangs where it would normally launch the kernel. The graphical boot menu shows the "Loader needs to be updated" warning despite using the loader.efi from 13.4. My setup is EFI boot to a ZFS root (zpool mirror) using boot environments. Steps: 1. Use bectl to create a 13.4 BE 2. Mount, chroot, freebsd-upgrade 13.3->13.4 as of 24 Jan 2025 3. mount EFI partitions 4. copy loader.efi from 13.4 to both EFI partitions 5. unmount the aforementioned 6. bectl activate -t 13.4 7. shutdown -r now 8. Observe loader hang trying to launch the 13.4 kernel 9. Reset, observe BE safely return to 13.3 Watching the console, the pre-graphical part goes by too quickly for me to read, but I do catch a big box made of asterisks that looks like the one shown in a forum thread[1] about this issue. When I get to the graphical boot menu, it has the "Loader needs to be updated" warning just above the autoboot countdown. The loader loads the kernel and modules, shows EFI framebuffer information, then where it normally would launch the kernel, it hangs[2]. Hard reset and the system happily boots back into 13.3 (many gratitudes to those who created Boot Environments). I've tried recreating the 13.4 BE thinking I broke something, but it's repeatable. If I try to boot 13.4, I get the loader update warning and a hung system. Reboot back to 13.3, update warning disappears, kernel boots without issue. I also verified that the loader in each EFI partition is the one from 13.4: # bectl mount 13.4 /tmp/BE13.4 Successfully mounted 13.4 at /tmp/BE13.4 # mount /boot/efi0 # mount /boot/efi1 # ls -l /boot/loader.efi /tmp/BE13.4/boot/loader.efi /boot/efi0/efi/freebsd/loader.efi /boot/efi1/efi/freebsd/loader.efi -r-xr-xr-x 1 root wheel 868352 Jan 24 04:47 /boot/efi0/efi/freebsd/loader.efi* -r-xr-xr-x 1 root wheel 868352 Jan 24 04:47 /boot/efi1/efi/freebsd/loader.efi* -r-xr-xr-x 2 root wheel 906752 Jun 27 2024 /boot/loader.efi* -r-xr-xr-x 2 root wheel 868352 Jan 24 04:47 /tmp/BE13.4/boot/loader.efi* and confirmed those are the only loaders configured: # efibootmgr -v Boot to FW : false BootCurrent: 0000 Timeout : 10 seconds BootOrder : 0000, 0001, 0004, 0014 +Boot0000* FreeBSD-disk0 HD(2,GPT,fa3c15e1-1bdb-11ee-a300-ac1f6b6b9e1c,0x28,0x32000)/File(\efi\freebsd\loader.efi) nvd1p2:/efi/freebsd/loader.efi (null) Boot0001* FreeBSD-disk1 HD(2,GPT,f6e68146-1bdb-11ee-a300-ac1f6b6b9e1c,0x28,0x32000)/File(\efi\freebsd\loader.efi) nvd0p2:/efi/freebsd/loader.efi (null) Boot0004* UEFI: Built-in EFI Shell VenMedia(5023b95c-db26-429b-a648-bd47664c8012) Boot0014 Hard Drive BBS(HD,,0x0) I saw PR/282001 related to this, and I also saw some of the earlier mailing list about it with the RC versions. But this is a release version of 13.4, so I figured it would be fixed already. What am I missing? 1: https://forums.freebsd.org/threads/loader-needs-to-be-updated-14-stable.94857/ 2: https://pasteboard.co/8gC1qfLY6zmL.png