/ Documentation / payloads.md
payloads.md
 1  # Payloads
 2  
 3  coreboot doesn't try to mandate how the boot process should look, it merely
 4  does hardware init and then passes on control to another piece of software
 5  that we carry along in firmware storage, the _payload_.
 6  
 7  There is various software in that space that is either explicitly written as
 8  payload or can be made to work as one.
 9  
10  ## SeaBIOS
11  
12  [SeaBIOS](https://www.seabios.org) is an open source implementation of
13  the PCBIOS API that exists since the original IBM PC and was extended
14  since. While originally written for emulators such as QEMU, it can be built
15  as a coreboot payload. It supports executing Option ROMs in a more complete
16  fashion than coreboot. It also supports Multiboot.
17  
18  When chainloaded from GRUB2, the following menuentry could be used:
19  
20      menuentry "SeaBIOS" --unrestricted {
21          root=(cbfsdisk)
22          multiboot /img/seabios
23          module /vgaroms/seavgabios.bin
24      }
25  
26  ## edk2
27  
28  [edk2](https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II) is an open-source modern, feature-rich,
29  cross-platform firmware development environment for the UEFI and UEFI
30  Platform Initialization (PI) specifications.
31  
32  ## GRUB2
33  
34  GRUB2 was originally written as a bootloader and that's its most popular
35  purpose, but it can also be compiled as a coreboot payload.
36  
37  ## Linux
38  
39  There are several projects using Linux as a payload (which was the
40  configuration that gave coreboot its original name, LinuxBIOS). That kernel is
41  often rather small and serves to load a current kernel from somewhere, e.g.
42  disk or network, and run that through the kexec mechanism.
43  
44  Two aspects emphasized by proponents of Linux-as-a-payload are the
45  availability of well-tested, battle-hardened drivers (as compared to
46  firmware project drivers that often reinvent the wheel) and the ability to
47  define boot policy with familiar tools, no matter if those are shell scripts
48  or compiled userland programs written in C, Go or other programming languages.
49  
50  ## Heads
51  
52  [Heads] is a distribution that bundles coreboot, Linux, busybox and custom
53  tools to provide reproducible ROMs. [Heads] aims to provide a secure and
54  flexible boot environment for laptops and servers.
55  It supports features like measured boot, kexec, GPG, OTP, TLS, firmware
56  updates, but only works on a limited amount of mainboards.
57  For more details have a look at [heads-wiki].
58  
59  [Heads]: https://github.com/osresearch/heads
60  [heads-wiki]: http://osresearch.net/