Payloads: Difference between revisions

From coreboot
Jump to navigation Jump to search
mNo edit summary
m (Small fixes. Added memtest86 payload.)
Line 1: Line 1:
LinuxBIOS in itself is "only" minimal code for initializing a
LinuxBIOS in itself is "only" minimal code for initializing a
mainboard with peripherals just enough for a Linux kernel to take
mainboard with peripherals just enough for a Linux kernel to take
over and to the rest. LinuxBIOS does not contain a kernel per se.
over and do the rest. LinuxBIOS does not contain a kernel per se.


After the initialization, LinuxBIOS jumps to a payload and while
After the initialization, LinuxBIOS jumps to a '''payload''' and while
there has been discussion about stacking payloads that's currently
there has been discussion about stacking payloads that's currently
not in practice.
not in practice.
Line 12: Line 12:
ROM room for a kernel. 512KB can be seen here-and-there and a few
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
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
you'll only have room for 300-400 KB of initial ramdisk, which could
be too small too, depending on the application.
be too small too, depending on the application.


So, other payloads are used; the two major ones are FILO and
So, other payloads are used; the two major ones are [[FILO]] and
Etherboot. FILO loads a kernel from a filesystem on an IDE device and
[[Etherboot]]. FILO loads a kernel from a filesystem on an IDE device and
Etherboot loads a kernel from the network or from a filesystem on an
Etherboot loads a kernel from the network or from a filesystem on an
IDE device.
IDE device.
Line 25: Line 25:
root and init commandline so that it can start init.
root and init commandline so that it can start init.


== Possible Payloads ==


[[Etherboot]] --- it includes FILO, and its FILO support SATA and USB booting.
* [[Etherboot]] — Includes FILO, and its FILO supports SATA and USB booting.
 
* [[FILO]] — Simple bootloader with filesystem support.
[[FILO]] - Simple bootloader with filesystem support
* [http://www.openbios.org/ OpenBIOS] — IEEE1275-1994 Open Firmware  
 
* [[ADLO]] — Glue layer to 16-bit Bochs BIOS. Allows booting Windows.
[http://www.openbios.org/ OpenBIOS] - IEEE1275-1994 Open Firmware  
* [[memtest86]] — Can stress-test your RAM.
 
[[ADLO]] - Glue layer to 16-bit Bochs BIOS.

Revision as of 14:31, 5 October 2006

LinuxBIOS in itself is "only" minimal code for initializing a mainboard with peripherals just enough for a Linux kernel to take over and do 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 growth 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 300-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. FILO loads a kernel from a filesystem on an IDE device and Etherboot loads a kernel from the network or from a filesystem on an IDE device.

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.

Possible Payloads

  • Etherboot — Includes FILO, and its FILO supports SATA and USB booting.
  • FILO — Simple bootloader with filesystem support.
  • OpenBIOS — IEEE1275-1994 Open Firmware
  • ADLO — Glue layer to 16-bit Bochs BIOS. Allows booting Windows.
  • memtest86 — Can stress-test your RAM.