[coreboot] cbfstool, Linux trampoline and SeaBIOS

ron minnich rminnich at gmail.com
Fri Aug 29 18:20:46 CEST 2014


Curt, what you are doing is similar to what linuxbios was designed
for. At Los Alamos in 2001, we were booting thousand node systems with
linux as the "payload" (the payload name came later -- at the time,
linuxbios always used linux as the payload). Note that linuxbios was
renamed to coreboot, it's the same code base. We did this on powerpc,
x86, and alpha. The parallels between then and now are interesting.

Our path to boot linux from "whatever" (usb, disk, network) was via
bash scripts, which we bundled into the initramfs. My preferred
interface for a boot menu is still the shell command line. That way,
when things go wrong, you have more there than just a menu. So I'm not
yet convinced, once you can put linux and initramfs in flash, that you
need seabios, unless the issue is INTxx support for things like grub.
But as a Plan 9 GSOC project we put Plan 9 in the boot sector, and
that worked fine; I'm not convinced that at any step we need
old-fashioned boot loaders at all. The kernels do just fine, in flash,
in the boot sector, and over the network. But that's me ;-)

We could boot small (128) node clusters in well under a minute,
including the 'linux boots linux' part of the boot; individual nodes
took seconds from power on to full functioning; and medium clusters
(1500 nodes) would boot in under 150 seconds from power on to all
nodes usable, including all the infiniband network config and 'linux
boots linux' step. As a contrast, the rom-based iPXE bootstraps were
unable to finish configuring ONE interface in the time it took us to
boot 1000 nodes.More here:
http://lacsi.rice.edu/workspace/downloads/symposium/lacsi_2004/pap124.pdf/

My latest work involves embedding go programs as source in the flash,
and compiling them on demand into a ramfs. I'll be talking about this
at ELC Europe. Go programs are far more compact than even busybox
binaries, and it looks like I can fit the go compilers, all packages,
and all the programs into about 8M in flash as part of a linux
payload. I've got a ways to go but so far I have not seen any
showstoppers. That code is all available on github if you're
interested. Once you get a real kernel in your boot path, life can get
very interesting.

Have you considered using the payload chooser (bayou) to let you
choose linux as the payload or seabios? Then you would not need to
have seabios boot linux from flash. Life might be simpler. Bayou can
be made to work again -- I did it recently, even for ARM -- and it is
kind of handy.

My interest is purely in getting back to the linuxbios scenario -- the
only payload being linux.

The ONIE thing is just what I've been looking for for the Go project;
I'll be taking a close look.

ron



More information about the coreboot mailing list