EFI boot: can we make loader.efi work as BOOT{x64, aa64, arm, ia32}.efi?

Warner Losh imp at bsdimp.com
Mon Aug 1 05:52:32 UTC 2016

On Sun, Jul 31, 2016 at 12:51 AM, Nathan Whitehorn
<nwhitehorn at freebsd.org> wrote:
> On 07/30/16 23:20, Xin Li wrote:
>> Hi,
>> I finally got some time to explore the UEFI boot process (kudos to
>> everyone who made this work!) and getting myself familiarize with the
>> basics.
>> One quick question -- Is there some technical restriction that prevents
>> us from merging boot1.efi and loader.efi into one binary?
>> Cheers,
> No technical reason (and, in fact, when you boot from CD, that's how it
> works). The reason they are different is that we traditionally don't mount
> the EFI partition and so make installworld can't replace things there.
> boot1.efi is a basically static piece of code that doesn't need updates and
> can load loader, which does get updates, from a UFS/ZFS system.

boot1.efi is anything *BUT* a static piece of code. It was written to be
such, but it's functionality is so limited that it is severely limiting what
we can do on systems that want to, for example, boot off one partition
after updating from another. That cannot be in loader.efi since that's part
of the installed package.

> loader.efi additionally assumes that it is started from the same partition
> that contains the kernel, loader.conf, fstab, etc., which are also generally
> not on the EFI partition (except in the CD case).

That's likely one of several issues. Our EFI support is immature still. It
works great if you have one disk that you want to boot off of. Once you
stray far beyond that, there are many dragons. I think trying to merge
the two is premature.


More information about the freebsd-current mailing list