summaryrefslogtreecommitdiff
path: root/Documentation
diff options
context:
space:
mode:
authorPatrick Georgi <pgeorgi@google.com>2019-01-31 17:01:50 +0100
committerPatrick Georgi <pgeorgi@google.com>2019-02-05 21:21:45 +0000
commit7bb9a4f98b3e897d372207df17ba65ececa9d445 (patch)
tree77703770971e5ac8047c3db70e5f5c29acc01268 /Documentation
parent0cd9366df16f3ee904f2b5792d39efdd7ac65c56 (diff)
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>
Diffstat (limited to 'Documentation')
-rw-r--r--Documentation/distributions.md46
-rw-r--r--Documentation/index.md2
-rw-r--r--Documentation/payloads.md42
3 files changed, 90 insertions, 0 deletions
diff --git a/Documentation/distributions.md b/Documentation/distributions.md
new file mode 100644
index 0000000000..837a744544
--- /dev/null
+++ b/Documentation/distributions.md
@@ -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.
diff --git a/Documentation/index.md b/Documentation/index.md
index af3886e779..c5bfa9b29f 100644
--- a/Documentation/index.md
+++ b/Documentation/index.md
@@ -13,6 +13,8 @@ Contents:
* [Code of Conduct](community/code_of_conduct.md)
* [Community forums](community/forums.md)
* [coreboot at conferences](community/conferences.md)
+* [Payloads](payloads.md)
+* [Distributions](distributions.md)
* [Timestamps](timestamp.md)
* [Intel IFD Binary Extraction](Binary_Extraction.md)
* [Dealing with Untrusted Input in SMM](technotes/2017-02-dealing-with-untrusted-input-in-smm.md)
diff --git a/Documentation/payloads.md b/Documentation/payloads.md
new file mode 100644
index 0000000000..b1eae615ec
--- /dev/null
+++ b/Documentation/payloads.md
@@ -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.