Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Dec 2023 11:36:24 +0200
From:      Toomas Soome <tsoome@me.com>
To:        Mark Millard <marklmi@yahoo.com>
Cc:        Tomoaki AOKI <junchoon@dec.sakura.ne.jp>, Current FreeBSD <freebsd-current@freebsd.org>
Subject:   Re: symlink to /boot/loader.efi
Message-ID:  <94C108FE-3D2F-4116-B071-810F64DECEC4@me.com>
In-Reply-To: <AF65AD57-5D93-4FC2-84E8-58E1D7C0C3BC@yahoo.com>
References:  <AF65AD57-5D93-4FC2-84E8-58E1D7C0C3BC.ref@yahoo.com> <AF65AD57-5D93-4FC2-84E8-58E1D7C0C3BC@yahoo.com>

next in thread | previous in thread | raw e-mail | index | archive | help


> On 22. Dec 2023, at 11:09, Mark Millard <marklmi@yahoo.com> wrote:
>=20
> Tomoaki AOKI <junchoon_at_dec.sakura.ne.jp> wrote on
> Date: Thu, 21 Dec 2023 23:21:00 UTC :
>=20
>> On Thu, 21 Dec 2023 14:22:14 +0100
>> Dimitry Andric <dim@FreeBSD.org> wrote:
>>=20
>>> 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.
>>>=20
>>> 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.
>>>=20
>>> 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.
>>>=20
>>> -Dimitry
>>=20
>> Just an idea.
>>=20
>> It would be nice if loader.efi (hopefully, boot1.efi,too) could pass
>> "where am I placed?" info, maybe via kenv.
>>=20
>> Would need boot1.efi to pass something (ideally, "where am I booted
>> from?", but "boot1_used=3D1" is sufficient).
>>=20
>> 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.
>=20
> To my knowledge aarch64 and armv7 never use the copy in
> /boot/loader.efi during a boot. It has to have been copied
> into the appropriate msdosfs such that it has an
> appropriate path and name there. That is what is found
> and used during the boot.


All UEFI systems start from ESP (EFI System Partition). The only good =
reason to install boot1.efi there is when you have very small ESP and =
need to save that space - and in that case the boot1.esp will search and =
execute /boot/loader.efi.

The problem about boot1.efi (or any other UEFI chainload) is that =
loading file and executing it will not replace current program in =
memory, but will add new one, this may be problem with systems with =
minimal memory configurations. And yes, boot1.efi is not really platform =
specific - it is just another EFI application - one can build and use it =
on arm (or any other) systems and then it will load and start =
/boot/loader.efi.

starting loader directly from ESP has few advantages =E2=80=94 you wont =
waste memory for boot1.efi, you save a bit of boot time, you can use =
auxiliary files from ESP to pass some information to loader.efi (for =
example to tell where your rootfs is in case of multiboot setups).

the boot1.efi could be a bit more appealing if it would be able to load =
and start kernel directly, allowing to build very memory limited setups, =
but then again, it does sound like very specific corner case.

rgds,
toomas


>=20
>> If no related kenv is set and freebsd-boot partition exists, it =
should
>> be booted with legacy (BIOS) boot.
>=20
> If there even is a "legacy (BIOS) boot" is a platform
> specific issue as far as I know.
>=20
>> 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.
>=20
> See the earlier point about aarch64 and armv7 not using
> /boot/* files while loading the FreeBSD loader: the
> FreeBSD loader variant used is the first stage able to
> look inside UFS or ZFS file systems. Loading and
> starting the FreeBSD loader happens before that stage
> in those types of contexts.
>=20
>> . . .
>=20
> Also, to my knowledge, powerpc (32-bit), powerpc64, and
> powerpc64le do not involve any variant of loader.efi or
> UEFI/ACPI or UEFI/DeviceTriee in their boot sequnces.
> Again: more platform specific rather than generic.
>=20
> =3D=3D=3D
> Mark Millard
> marklmi at yahoo.com
>=20
>=20




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?94C108FE-3D2F-4116-B071-810F64DECEC4>