Difference between revisions of "Payloads"

From coreboot
Jump to: navigation, search
m
Line 1: Line 1:
coreboot in itself is "only" minimal code for initializing a
+
coreboot in itself is "only" minimal code for initializing a mainboard with peripherals. After the initialization, it jumps to a '''payload'''.
mainboard with peripherals just enough for a Linux kernel to take
+
over and do the rest. coreboot does not contain a kernel per se.
+
  
After the initialization, coreboot jumps to a '''payload''' and while
+
== Payloads ==
there has been discussion about stacking payloads that's currently
+
 
not in practice.
+
* [http://www.kernel.org Linux] — Boot into a Linux kernel directly.
 +
* [[FILO]] — Simple bootloader with filesystem support.
 +
* [[GRUB2]] — Will replace FILO. Does not work, yet.
 +
* Mitch Bradley's [http://www.openbios.org/Open_Firmware Open Firmware] — IEEE1275-1994 Open Firmware
 +
* [[OpenBIOS]] — IEEE1275-1994 Open Firmware
 +
* [[Etherboot]] — Includes FILO, and its FILO supports SATA and USB booting.
 +
* [[ADLO]] — Glue layer to 16-bit Bochs BIOS. Allows [[Booting Windows using coreboot|booting Windows]] and [http://openbsd.org/ OpenBSD].
 +
* [[memtest86]] — Can stress-test your RAM.
 +
* [[coreinfo]]
 +
* [[GRUB invaders]]
 +
* [[tint]] -- A falling blocks game
 +
 
 +
== Possible future payloads ==
 +
 
 +
The following payloads might or might not work (with more or less changes required) with coreboot -- their usage hasn't been tested or documented so far.
 +
 
 +
* CodeGen's [http://www.openbios.org/SmartFirmware SmartFirmware] — IEEE1275-1994 Open Firmware
 +
* [http://www.gnu.org/software/gnufi/ GNUFI] (UEFI)
 +
* [[Plan 9]] — A distributed operating system.
 +
* [[RedBoot]] / [[eCos]] — Real-time OS for embedded systems; initial port to ELF completed but no longer available.
 +
 
 +
== History ==
  
 
The payload was originally intended to be a Linux kernel stored in
 
The payload was originally intended to be a Linux kernel stored in
Line 24: Line 43:
 
one you want to run in your system. Just set it up with the correct
 
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.
 
root and init commandline so that it can start init.
 
== Possible Payloads ==
 
 
* [http://www.kernel.org Linux] — Boot into a Linux kernel directly.
 
* [[FILO]] — Simple bootloader with filesystem support.
 
* [[GRUB2]] — Will replace FILO. Does not work, yet.
 
* Mitch Bradley's [http://www.openbios.org/Open_Firmware Open Firmware] — IEEE1275-1994 Open Firmware
 
* CodeGen's [http://www.openbios.org/SmartFirmware SmartFirmware] — IEEE1275-1994 Open Firmware
 
* [[OpenBIOS]] — IEEE1275-1994 Open Firmware
 
* [http://www.gnu.org/software/gnufi/ GNUFI] (UEFI)
 
* [[Etherboot]] — Includes FILO, and its FILO supports SATA and USB booting.
 
* [[ADLO]] — Glue layer to 16-bit Bochs BIOS. Allows [[Booting Windows using coreboot|booting Windows]] and [http://openbsd.org/ OpenBSD].
 
* [[Plan 9]] — A distributed operating system.
 
* [[memtest86]] — Can stress-test your RAM.
 
* [[RedBoot]] / [[eCos]] — Real-time OS for embedded systems; initial port to ELF completed but no longer available.
 

Revision as of 20:29, 17 April 2008

coreboot in itself is "only" minimal code for initializing a mainboard with peripherals. After the initialization, it jumps to a payload.

Payloads

Possible future payloads

The following payloads might or might not work (with more or less changes required) with coreboot -- their usage hasn't been tested or documented so far.

  • CodeGen's SmartFirmware — IEEE1275-1994 Open Firmware
  • GNUFI (UEFI)
  • Plan 9 — A distributed operating system.
  • RedBoot / eCos — Real-time OS for embedded systems; initial port to ELF completed but no longer available.

History

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. During testing, a payload may also be downloaded via X-Modem from the serial debug console, saving flashing time.

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.