On Wed, Jan 26, 2005 at 09:52:11PM -0800, Adam Talbot wrote:
-Ron (Linuxbios team)
Humm, had one of my strange ideas. Would it be possible to use the
linuxbios kernel as the system kernel?? So instead of calling a
new kernel through FILO or booting from etherboot, could I just
have Linux bios call INIT, like a normal kernel. I am looking to
get the best possible boot time. 1 kernel loads MUCH faster then 2
That's how LinuxBIOS was initially designed.
LinuxBIOS in itself is "only" minimal code for initializing a
mainboard with peripherals just enough for a Linux kernel to take
over and to the rest.
LinuxBIOS does not contain a kernel per se.
After the initialization, LinuxBIOS jumps to a payload and while
there has been discussion about stacking payloads that's currently
not in practice.
The payload was originally intended to be a Linux kernel stored in
flash. Flash ROM grow rate was anticipated optimistically however,
today there are not many mainboards that actually have enough flash
ROM room for a kernel. 512KB can be seen here-and-there and a few
boards come with 1MB. Recent kernels really want that MB, and then
you'll only have room for 3-400 KB of initial ramdisk, which could
be too small too, depending on the application.
So, other payloads are used; the two major ones are FILO and
Etherboot. FILE loads a kernel from a filesystem on an IDE device and
Etherboot loads a kernel from the network or from a filesystem on an
If you're using FILO there is no Linux kernel until FILO loads it,
and the kernel loaded by FILO (or Etherboot) can absolutely be the
one you want to run in your system. Just set it up with the correct
root and init commandline so that it can start init.
Another option is to chain two kernels after each other, this is
useful for loading a system kernel from some place that FILO or
Etherboot can not reach, but which a Linux kernel can. Imagine all
sorts of "strange" storage ranging from local JFS to "unusual"
network systems and beyond. This uses the kexec feature in 2.6,
where a kernel can execute another kernel.
Hope this helps.