On Thu, 21 Dec 2023 14:22:14 +0100
Dimitry Andric <d...@freebsd.org> wrote:

> Yeah, my procedure is the same as yours: I first copy 
> /boot/efi/efi/freebsd/loader.efi to /boot/efi/efi/freebsd/loader.old, then 
> copy the freshly built and installed /boot/loader.efi to 
> /boot/efi/efi/freebsd/loader.efi. I don't see a technical reason why this 
> could not be just another step in the installworld procedure.
> 
> That said, I am unsure if the pathname /boot/efi/efi is always the same, at 
> least for all UEFI systems. It is the default layout when you do a regular 
> install with recent installer onto a UEFI system, but some users may use 
> completely different mount points. So you should still have some way of 
> configuring the default location for loader installation.
> 
> Also, on default installations a fallback entry named 
> /boot/efi/efi/boot/bootx64.efi is made, essentially another copy of 
> loader.efi but with a different name. Namely, the default name that UEFI (on 
> x86_64 at least) searches for, if it doesn't know anything else. I.e. if it 
> isn't configured via efibootmgr(8), or the EFI variables have been junked for 
> some reason. It might make sense to also update that file.
> 
> -Dimitry

Just an idea.

It would be nice if loader.efi (hopefully, boot1.efi,too) could pass
"where am I placed?" info, maybe via kenv.

Would need boot1.efi to pass something (ideally, "where am I booted
from?", but "boot1_used=1" is sufficient).

To do so, loader.efi can confirm whether it was loaded via boot1.efi or
directly from UEFI firmware. If nothing is passed to it, it can probe
"where it is?" using UEFI call and set it, otherwise, it should
be /boot/loader.efi, so nothing is needed to do.

If no related kenv is set and freebsd-boot partition exists, it should
be booted with legacy (BIOS) boot.

The easiest to be set by loader.efi and/or boot1.efi would be raw UEFI
device path. So would need analyzing where actually is on booted
FreeBBSD environment.

> 
> > On 21 Dec 2023, at 13:59, Nuno Teixeira <edua...@freebsd.org> wrote:
> > 
> > Hello Dimitry,
> > 
> > For a moment I forgot that efiboot is a fat system...
> > I am inspired on what installworld does to kernel and kernel.old.
> > I was thinking in something like it but with efi boot, something automatic.
> > 
> > Thanks! 
> > 
> > Dimitry Andric <d...@freebsd.org> escreveu no dia quinta, 21/12/2023 à(s) 
> > 12:48:
> > On 21 Dec 2023, at 13:22, Nuno Teixeira <edua...@freebsd.org> wrote:
> > > 
> > > On every current upgrade I update efi/freebsd/loader.efi (amd64) and 
> > > efi/boot/boota64 (aarch64) with new copies on /boot/loader.efi.
> > > For safety reasons I always have a copy of last running loader by 
> > > appending "-old.efi" to loader or boota64 and use beinstall to get BEs if 
> > > needed.
> > > 
> > > Is that possible to link, e.g., /boot/efi/efi/freebsd/loader.efi -> 
> > > /boot/loader.efi ?
> > 
> > Symlinks do not work on FAT file systems, so I assume you mean a symlink 
> > placed in /boot (assuming that is UFS or ZFS), which points to 
> > /boot/efi/efi/freebsd?
> > 
> > At the moment I think installworld would not write 'through' such a 
> > symlink. In fact, it makes a hard link from /boot/loader_lua.efi to 
> > /boot/loader.efi, unlinking any previous /boot/loader.efi.
> > 
> > That said, it would be nice to have some sort of semi-official way of 
> > upgrading the real EFI loader through installworld. It would probably 
> > require some top-level Makefile magic.
> > 
> > -Dimitry
> > 
> > 
> > 
> > -- 
> > Nuno Teixeira
> > FreeBSD Committer (ports)


-- 
Tomoaki AOKI    <junch...@dec.sakura.ne.jp>

Reply via email to