Signed-off-by: Elyes Haouas <ehaouas@noos.fr> Change-Id: I698a9501fd3d47e1e5793df32ae1e4118dfd95f6 Reviewed-on: https://review.coreboot.org/c/coreboot/+/68328 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Singer <felixsinger@posteo.net>
		
			
				
	
	
		
			61 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Payloads
 | |
| 
 | |
| coreboot doesn't try to mandate how the boot process should look, it merely
 | |
| does hardware init and then passes on control to another piece of software
 | |
| that we carry along in firmware storage, the _payload_.
 | |
| 
 | |
| There is various software in that space that is either explicitly written as
 | |
| payload or can be made to work as one.
 | |
| 
 | |
| ## SeaBIOS
 | |
| 
 | |
| [SeaBIOS](https://www.seabios.org) is an open source implementation of
 | |
| the PCBIOS API that exists since the original IBM PC and was extended
 | |
| since. While originally written for emulators such as QEMU, it can be built
 | |
| as a coreboot payload. It supports executing Option ROMs in a more complete
 | |
| fashion than coreboot. It also supports Multiboot.
 | |
| 
 | |
| When chainloaded from GRUB2, the following menuentry could be used:
 | |
| 
 | |
|     menuentry "SeaBIOS" --unrestricted {
 | |
|         root=(cbfsdisk)
 | |
|         multiboot /img/seabios
 | |
|         module /vgaroms/seavgabios.bin
 | |
|     }
 | |
| 
 | |
| ## edk2
 | |
| 
 | |
| [edk2](https://github.com/tianocore/tianocore.github.io/wiki/Getting-Started-with-EDK-II) is an open-source modern, feature-rich,
 | |
| cross-platform firmware development environment for the UEFI and UEFI
 | |
| Platform Initialization (PI) specifications.
 | |
| 
 | |
| ## GRUB2
 | |
| 
 | |
| GRUB2 was originally written as a bootloader and that's its most popular
 | |
| purpose, but it can also be compiled as a coreboot payload.
 | |
| 
 | |
| ## Linux
 | |
| 
 | |
| There are several projects using Linux as a payload (which was the
 | |
| configuration that gave coreboot its original name, LinuxBIOS). That kernel is
 | |
| often rather small and serves to load a current kernel from somewhere, e.g.
 | |
| disk or network, and run that through the kexec mechanism.
 | |
| 
 | |
| Two aspects emphasized by proponents of Linux-as-a-payload are the
 | |
| availability of well-tested, battle-hardened drivers (as compared to
 | |
| firmware project drivers that often reinvent the wheel) and the ability to
 | |
| define boot policy with familiar tools, no matter if those are shell scripts
 | |
| or compiled userland programs written in C, Go or other programming languages.
 | |
| 
 | |
| ## Heads
 | |
| 
 | |
| [Heads] is a distribution that bundles coreboot, Linux, busybox and custom
 | |
| tools to provide reproducible ROMs. [Heads] aims to provide a secure and
 | |
| flexible boot environment for laptops and servers.
 | |
| It supports features like measured boot, kexec, GPG, OTP, TLS, firmware
 | |
| updates, but only works on a limited amount of mainboards.
 | |
| For more details have a look at [heads-wiki].
 | |
| 
 | |
| [Heads]: https://github.com/osresearch/heads
 | |
| [heads-wiki]: http://osresearch.net/
 |