Documentation: Describe our ecosystem

Neither payloads nor distributors are an integral part of the coreboot
source tree, but they're very important parts of the coreboot
ecosystems, so add some descriptions.

Change-Id: Id64744c252b6b78c4811fbded48c441ef486ad94
Signed-off-by: Patrick Georgi <pgeorgi@google.com>
Reviewed-on: https://review.coreboot.org/c/31180
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Arthur Heymans <arthur@aheymans.xyz>
Reviewed-by: Angel Pons <th3fanbus@gmail.com>
This commit is contained in:
Patrick Georgi 2019-01-31 17:01:50 +01:00
parent 0cd9366df1
commit 7bb9a4f98b
3 changed files with 90 additions and 0 deletions

View File

@ -0,0 +1,46 @@
# Distributions
coreboot doesn't provide binaries but provides a toolbox that others can use
to build boot firmware for all kinds of purposes. These third-parties can be
broadly separated in two groups: Those shipping coreboot on their hardware,
and those providing after-market firmware to extend the usefulness of devices.
## Shipping coreboot on hardware
### Purism
[Purism](https://www.puri.sm) sells laptops with a focus on privacy and
part of that is their push to remove as much unaccounted code (that is,
binary only) from their devices as possible.
### Chromebooks
All Chromebooks (and related devices) that hit the market after 2013 are
using coreboot as their main firmware. And even the Embedded Controller,
a small microcontroller to support various peripherals (like battery
management or the keyboard) is running open source firmware.
## After-market firmware
### Libreboot
[Libreboot](https://libreboot.org) is a project that provides ready-made
binaries for platforms where those can be built entirely from source
code. Their copy of the coreboot repository is therefore stripped of
all devices that require binary components to boot.
### Mr. Chromebox
[Matt Devo](https://mrchromebox.tech/) provides replacement firmware for
various Chromebooks. Why replace coreboot with coreboot? You might want
to do different things than what the Google engineers prepared for the
mass market, that's why. This firmware is "with training wheels off".
### John Lewis
[John Lewis](https://johnlewis.ie/custom-chromebook-firmware) also
provides replacements for Chromebook firmware, for the same reasons
as Mr. Chromebox. It's a somewhat different set of devices, and with
different configurations, so check out both if Chromebooks are what
you're dealing with.

View File

@ -13,6 +13,8 @@ Contents:
* [Code of Conduct](community/code_of_conduct.md) * [Code of Conduct](community/code_of_conduct.md)
* [Community forums](community/forums.md) * [Community forums](community/forums.md)
* [coreboot at conferences](community/conferences.md) * [coreboot at conferences](community/conferences.md)
* [Payloads](payloads.md)
* [Distributions](distributions.md)
* [Timestamps](timestamp.md) * [Timestamps](timestamp.md)
* [Intel IFD Binary Extraction](Binary_Extraction.md) * [Intel IFD Binary Extraction](Binary_Extraction.md)
* [Dealing with Untrusted Input in SMM](technotes/2017-02-dealing-with-untrusted-input-in-smm.md) * [Dealing with Untrusted Input in SMM](technotes/2017-02-dealing-with-untrusted-input-in-smm.md)

42
Documentation/payloads.md Normal file
View File

@ -0,0 +1,42 @@
# 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 made
to work as a coreboot payload and all the necessary code is in SeaBIOS'
mainline code.
## Tianocore
[Tianocore](https://www.tianocore.org) is the open source reference
implementation of the UEFI Specifications that modern firmware for PCs is
based on. There were various projects in the past to make it suitable as a
coreboot payload, but these days this function is available directly in the
CorebootPayloadPkg part of its source tree.
## 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.