[coreboot] CarPC project, with MB899 MB
kevin at koconnor.net
Sun Oct 17 22:27:04 CEST 2010
On Wed, Oct 13, 2010 at 06:43:21PM -0400, Corey Osgood wrote:
> On Wed, Oct 13, 2010 at 6:15 PM, Nasa <nasa01 at comcast.net> wrote:
> > I have read a little about payloads and noted that SeaBIOS would
> > be the easiest way to go... However (this being important for the
> > flash chip), I didn't see anything about the benefits of putting a
> > linux kernel as a payload. I did read from the FAQ that most
> > chips aren't large enough to have the kernel added as a
> > payload. If my goal is the fastest boot time possible, while
> > still supporting the basic system, would going to a Linux payload
> > be the way to go? If so, what size flash chip should I get?
> Most likely, you won't be able to find a flash chip large enough to
> support a full-fledged linux kernel for a payload. It's been done
> (like here: http://youtu.be/nuzRsXKm_NQ ), and would probably be the
> fastest way to go, but you would have to give up a lot of kernel
> features in order to get the kernel down to small enough of a size. If
> you're going with a linux payload though, I'd look at FILO rather then
> SeaBIOS, just because you don't need the legacy BIOS features that
> SeaBIOS implements.
SeaBIOS boots much faster than filo. The time to initialize the
legacy BIOS interface is on the order of microseconds so it doesn't
have any real impact on boot time. On the other hand, SeaBIOS has
several optimizations that filo lacks (eg, parallel hardware init, ATA
DMA, EHCI USB).
In my tests, the fastest way I could boot my machine was to use
SeaBIOS and launch linux from an SSD. The SSD I tried (OCZ) had no
detectable "spin up" delay, and could transfer over 100MB per second.
The built-in flash, on the other hand, could only read at 1MB per
second. (So, for a 2MB linux flash image there could be a 2s load
delay - compare to 50K seabios flash image and 2MB Linux SSD image at
~100ms load delay.)
There is a tool in the SeaBIOS repo (tools/readserial.py) that can
generate timings from normal serial debug output. It can be used with
SeaBIOS, Linux, and FILO. I encourage anyone interested in boot times
to run tests and compare the results.
More information about the coreboot