Error: "Loader need to be updated" on boot in various combinations
Date: Tue, 24 Dec 2024 16:09:03 UTC
I'm in the process of updating a set of machines from FreeBSD 13.2 and FreeBSD 13.3 to 13.4. If the machine starts on 13.2, then my process is: ``` # freebsd-update upgrade -r 13.3-RELEASE ... # freebsd-update install; reboot ... # freebsd-update install ... # freebsd-update upgrade -r 13.4-RELEASE ... ``` I haven specifically watched, but I will next time, but when I do this I end up with a machine that boots fine but sends the message: - "Loader needs to be updated" All of the machines are VMs running of VMware Fusion or ESXi so I can Snapshot the machines leaving me free to do some experimentation in my search for a solution. However, searching around the internet hasn't produced a solution to this problem. I'll give two examples: One of the machines is an aarch64 VM with ZFS root filesystem. ``` $ gpart show => 40 83886000 nda0 GPT (40G) 40 532480 1 efi (260M) 532520 2008 - free - (1.0M) 534528 33554432 2 freebsd-swap (16G) 34088960 49795072 3 freebsd-zfs (24G) 83884032 2008 - free - (1.0M) => 40 268435376 nda1 GPT (128G) 40 33554432 1 freebsd-swap (16G) 33554472 234880944 2 freebsd-zfs (112G) $ mount | egrep efi /dev/gpt/efiboot0 on /boot/efi (msdosfs, local) $ ``` I've copied `/boot/loader.efi` to both `/boot/efi/efi/freebsd/loader.efi` and `/boot/efi/efi/boot/bootaa64.efi`. The `efibootmgr -v` command reports that the `.../freebsd/loader.efi` file is the one in use. Unfortunately, this didn't fix the problem. ---------------------------------------- My second machine is an amd64 VM with a UFS root filesystem: ``` $ gpart show => 40 33554352 da0 GPT (16G) 40 1024 1 freebsd-boot (512K) 1064 2096128 2 freebsd-ufs (1.0G) 2097192 8388608 3 freebsd-swap (4.0G) 10485800 12582912 4 freebsd-ufs (6.0G) 23068712 2097152 5 freebsd-ufs (1.0G) 25165864 8388528 6 freebsd-ufs (4.0G) $ ``` I found a [post on the FreeBSD forums](https://forums.freebsd.org/threads/update-of-the-bootcodes-for-a-gpt-scheme-x64-architecture.80163/) that suggested using gpart as follows: `gpart bootcode -b /boot/pmbr -p /boot/gptboot -i 1 da0` Again, since this is a virtual machine, and honestly not a hard one to rebuild, I took a snapshot, fired off the gpart command, and again found the "Loader needs to be updated" error message. ---------------------------------------- I understand that there are lots of different situations here. I'm willing to fork my question into two questions to keep things easy to follow. **Q:** _What's the root cause here?_ It seems like I'm not addressing the root cause. -- Chris __o "All I was trying to do was get home from work." _`\<,_ -Rosa Parks ___(*)/_(*)____.___o____..___..o...________ooO..._____________________ Christopher Sean Hilton [chris/at/vindaloo/dot/com]