[coreboot] Minimal seabios for coreboot

Kevin O'Connor kevin at koconnor.net
Tue Jul 22 05:09:21 CEST 2008


Hi,

Several people have raised the possibility of replacing the coreboot
BIOS emulation for option roms with SeaBIOS.

My original goal with SeaBIOS was to make it a payload that was
capable of booting the system.  However, I can understand the desire
to leave coreboot as it is and add a little bit of bios emulation so
that option roms work.  It may also be useful to have some minimal
support for simple calls from the payload.  (For an example of a
payload use - see the recent thread on Linux failing due to EBDA not
being initialized.)

On that note, I spent a few minutes to see how much I could strip down
seabios to make it as small as possible.  If I turn off everything
besides basic coreboot support, I can get the lzma compressed rom down
to 5695 bytes.  Note that this still includes e820 map support, timer
support, acpi/mptable/pir table relocation, and many other basic bios
features.  It's probably a good idea to turn on pcibios support as
option roms tend to want this (rom then totals 6113 bytes).  Also
keyboard support might be useful to some payloads (total 8131 bytes).

So, I can see a mode where coreboot would lzma uncompress a minimal
seabios into 0xf0000, call into seabios, seabios would then init
itself and return to coreboot.  Then coreboot would finish
initialization and launch the payload from flash.

I can see where the above would be useful if the payload is always
coming out of flash.  However, if the user ever needs to boot using
seabios (or via a scsi/pxe option rom) then I think seabios needs to
be the payload and needs to drive the bootup.

If there is interest in doing this, we'll need to figure out how to
work out the interactions.  Zhang Rui is currently working on having
seabios return to coreboot.  As for code integration - I'd like to
avoid forking the seabios code.  Perhaps it would be okay to simply
copy a seabios binary into the svn repo with directions on how to
build it manually.  (This is what qemu and bochs do for their bios
blobs.)

Thoughts?
-Kevin




More information about the coreboot mailing list