<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jan 2, 2024 at 9:30 PM Theodore Ts'o <<a href="mailto:tytso@mit.edu">tytso@mit.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Tue, Jan 02, 2024 at 08:57:34PM -0700, Warner Losh wrote:<br>
> <br>
> Indeed. I got to deal with all of that, and more. I have finished writing<br>
> LinuxBoot support for FreeBSD. The normal kexec-tools, u-root, etc aren't<br>
> sufficient for FreeBSD because FreeBSD's kernel expects the boot loader<br>
> to setup a number of meta-data items that go with the kernel that include<br>
> all the information about the system that the kernel simply can't get once<br>
> you've entered long mode...<br>
> <br>
> Even with LinuxBoot, you are booting with UEFI, albeit with a much small<br>
> much smaller UEFI.<br>
<br>
Yeah, one of the older names of LinuxBoot was NERF (Non-Extensible<br>
Reduced Firmware).</blockquote><div><br></div><div>I love the secondary meaning for nerf from gaming too:</div><div>"to reconfigure (an existing character or weapon), making it less powerful."<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"> I was confusing LinuxBoot with coreboot, which is<br>
used on all ChromeOS devices after 2012, and which completely doesn't<br>
use any magic binary blobs supplied by the mainbord vendor.  The<br>
tradeoff is that coreboot only supports a very restricted set of<br>
hardware, since it has to do all of the things that are "normally"<br>
done by the vendor's binary blobs to initialize the hardware devices,<br>
etc.  This only works if you have very tight control over hardware,<br>
and you have enough influence that you can lean on the mainboard<br>
vendors to allow the low-level programming details of their devices to<br>
be released in open source code which that can be independently<br>
verified and digitally signed by the OS vendor (such as Google in the<br>
case of ChromeOS).<br></blockquote><div><br></div><div>I think that some of the open laptops might have a binary blob or two</div><div>buried deep in their coreboot implementation. But it is far more open</div><div>system than EDK2 is... Most of the open parts of EDK2 are what are nerfed</div><div>by LinuxBoot. The private hidden ones are all that remain, alas.</div><div><br></div><div>So if you are large enough, you can get all the sources. If not, then you</div><div>have to put up with the binary blob, or not run on some computers. :(. </div><div><br></div><div>There's also a rewrite of coreboot in Rust called 'oreboot' which is coreboot<br></div><div>without the 'C', since they want it to be even safer.</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Many hyper-scale cloud companies will tend to use coreboot or related<br>
software instead of UEFI.  A public/published example of this is<br>
Facebook's Open Compute Project.<br></blockquote><div><br></div><div>Yes. It was a concerted effort of all these stakeholders that got the</div><div>Linux kernel so it could tolerate such an early handoff.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
It *is* nice not to have to deal with UEFI at all, if you're lucky<br>
enough to be able to use hardware where it's not necessary....  Of<br>
course you won't be able to run Windows on those systems, but some<br>
would consider that a feature.  :-)<br></blockquote><div><br></div><div>Yea... There's several experimental attempts at booting windows on</div><div>at least the UEFI-remnant machines. And it's (a) too F'ing weird and</div><div>(b) to far afield to get into here... </div><div><br></div><div><a href="https://www.osfc.io/2019/talks/booting-windows-on-linuxboot/">https://www.osfc.io/2019/talks/booting-windows-on-linuxboot/</a></div><div><br></div><div>has all the horrors of one such attempt. I think this is the 'create an</div><div>exec handler in Linux that can run .efi programs and emulate UEFI'</div><div>version...</div><div><br></div><div>Warner </div></div></div>