tests: Always run all unit tests
[coreboot.git] / Documentation / payloads.md
blobeee841eacd8593129e2fffba0b86ed1e3ffaa4c5
1 # Payloads
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_.
7 There is various software in that space that is either explicitly written as
8 payload or can be made to work as one.
10 ## SeaBIOS
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 made
15 to work as a coreboot payload and all the necessary code is in SeaBIOS'
16 mainline code.
18 ## Tianocore
20 [Tianocore](https://www.tianocore.org) is the open source reference
21 implementation of the UEFI Specifications that modern firmware for PCs is
22 based on. There were various projects in the past to make it suitable as a
23 coreboot payload, but these days this function is available directly in the
24 CorebootPayloadPkg part of its source tree.
26 ## GRUB2
28 GRUB2 was originally written as a bootloader and that's its most popular
29 purpose, but it can also be compiled as a coreboot payload.
31 ## Linux
33 There are several projects using Linux as a payload (which was the
34 configuration that gave coreboot its original name, LinuxBIOS). That kernel is
35 often rather small and serves to load a current kernel from somewhere, e.g.
36 disk or network, and run that through the kexec mechanism.
38 Two aspects emphasized by proponents of Linux-as-a-payload are the
39 availability of well-tested, battle-hardened drivers (as compared to
40 firmware project drivers that often reinvent the wheel) and the ability to
41 define boot policy with familiar tools, no matter if those are shell scripts
42 or compiled userland programs written in C, Go or other programming languages.
44 ## Heads
46 [Heads] is a distribution that bundles coreboot, Linux, busybox and custom
47 tools to provide reproducible ROMs. [Heads] aims to provide a secure and
48 flexible boot environment for laptops and servers.
49 It supports features like measured boot, kexec, GPG, OTP, TLS, firmware
50 updates, but only works on a limited amount of mainboards.
51 For more details have a look at [heads-wiki].
53 [Heads]: https://github.com/osresearch/heads
54 [heads-wiki]: http://osresearch.net/