1# Payloads 2 3coreboot doesn't try to mandate how the boot process should look, it merely 4does hardware init and then passes on control to another piece of software 5that we carry along in firmware storage, the _payload_. 6 7There is various software in that space that is either explicitly written as 8payload or can be made to work as one. 9 10## SeaBIOS 11 12[SeaBIOS](https://www.seabios.org) is an open source implementation of 13the PCBIOS API that exists since the original IBM PC and was extended 14since. While originally written for emulators such as QEMU, it can be built 15as a coreboot payload. It supports executing Option ROMs in a more complete 16fashion than coreboot. It also supports Multiboot. 17 18When 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, 29cross-platform firmware development environment for the UEFI and UEFI 30Platform Initialization (PI) specifications. 31 32## GRUB2 33 34GRUB2 was originally written as a bootloader and that's its most popular 35purpose, but it can also be compiled as a coreboot payload. 36 37## Linux 38 39There are several projects using Linux as a payload (which was the 40configuration that gave coreboot its original name, LinuxBIOS). That kernel is 41often rather small and serves to load a current kernel from somewhere, e.g. 42disk or network, and run that through the kexec mechanism. 43 44Two aspects emphasized by proponents of Linux-as-a-payload are the 45availability of well-tested, battle-hardened drivers (as compared to 46firmware project drivers that often reinvent the wheel) and the ability to 47define boot policy with familiar tools, no matter if those are shell scripts 48or 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 53tools to provide reproducible ROMs. [Heads] aims to provide a secure and 54flexible boot environment for laptops and servers. 55It supports features like measured boot, kexec, GPG, OTP, TLS, firmware 56updates, but only works on a limited amount of mainboards. 57For more details have a look at [heads-wiki]. 58 59[Heads]: https://github.com/osresearch/heads 60[heads-wiki]: http://osresearch.net/ 61