[coreboot] Rettungsboot

ron minnich rminnich at gmail.com
Sat Nov 26 23:46:33 CET 2016


coreboot today is linuxbios minus the linux. The original intent was always
that linux be our lifeboat. The current set of (as you point out) not
terrific options is a result of linux growing too big for flash, and flash
growing too big for linux, ca. 2002, when we adopted the payload model. The
original keyword in the config file was 'linux', not 'payload'. The
bootloaders we adopted (etherboot, filo, ...) were never (to me) a very
satisfactory replacement for linux. They always came with lots of
limitations.

But why linux? Why a full OS? Simple observation, here in my 35th year of
working with firmware and bootloaders.

Every bootloader starts simple, and becomes an OS. Every single one starts
with the intent of being small and compact and only supporting some needed
subset of file systems/devices/protocols and ends up implementing
everything. Because there was an attempt to start out simple, no matter how
good the intial design is, that design is overwhelmed by the continuous
addition of features, the result being a badly bloated, huge system with no
apparent design.

The exception, it has been argued, is EFI, which had some sort of design in
1999. From my point of view, it skipped right past all the initial stages
and entered the world bloated and with no apparent design, or at least not
a very good one.

So you need to think, not in terms of lean and clean, but in terms of what
it looks like after a few years when everyone has attached their favorite
features to your lifeboat. I think it's a mistake to ever think you are
going to implement some limited-function, limited-footprint bootloader,
because people will jump on it and just add code. Just look at what's
happened with systemd.

Also worth considering is that the tinykernel configs have got linux down
to 400K. You can trim it down to that, and carefully add features back.
This comes with huge benefits I think. You get drivers that work, protocols
that work, all the file systems you want, and you can put nice interactive
boot UIs in user mode. Today's flash parts are more than large enough to do
a good environment -- tinycore linux could be used, for example, once it
was trimmed a bit. It's only about 12M today with a full X environment.

Power8 and Power9 systems use linux in flash as their bootloader. This
example has not been lost on other systems being developed today.

I think it's worth considering a tinykernel linux as bootloader before you
start with a new thing.

ron
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.coreboot.org/pipermail/coreboot/attachments/20161126/086d743d/attachment.html>


More information about the coreboot mailing list