Skip to content

Commit

Permalink
intro: Clarify what LinuxBoot is
Browse files Browse the repository at this point in the history
The idea of using the Linux kernel for a boot firmware implementation is
much larger than the build tool and configuration named linuxboot.
Therefore focus on the importance of the idea over the implementation.

Also clarify the implementation, which is confusing to newcomers.

Signed-off-by: Philip Molloy <philip@philipmolloy.com>
  • Loading branch information
pamolloy committed Nov 3, 2024
1 parent bf7e911 commit dba09a0
Showing 1 changed file with 32 additions and 6 deletions.
38 changes: 32 additions & 6 deletions src/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,12 +10,38 @@ This is the official “LinuxBoot Book” for the LinuxBoot project. The book:

## What is LinuxBoot?

LinuxBoot is a project that aims to replace specific [firmware](./glossary.md)
functionality with a Linux kernel and runtime. Over the years this project has
grown to include various initiatives with the overarching goal of moving from
obscure, complex firmware to simpler, open source firmware.

The goal of LinuxBoot is to reduce the role of firmware to a small,
LinuxBoot is based on the idea of replacing proprietary or corporate-driven
late-stage boot [firmware](./glossary.md) with the Linux kernel and a
community-based userland. That idea grew into a project that over the years
includes various initiatives with the overarching goal of moving from obscure
and complex firmware to simpler and open source firmware.

The LinuxBoot project provides two reference implementations; linuxboot and
Heads. The [linuxboot](https://github.com/linuxboot/linuxboot) build system
outputs a boot payload consisting of a Linux kernel and an
[initramfs](https://de.wikipedia.org/wiki/Initramfs) that contains a Golang
userland built using [u-root](https://github.com/u-root/u-root).

The Heads build system is more focused on local attestation and uses BusyBox
instead of Golang.

There are several other active projects based on the same idea:

- [petitboot](https://github.com/open-power/petitboot) under the OpenPOWER
project originally targeting the PS3
- [k-boot](https://github.com/BayLibre/k-boot) developed by BayLibre in 2023
using BusyBox
- [nmbl](https://github.com/rhboot/nmbl-poc) developed by RedHat in 2024
- [Giving bootloaders the boot with nmbl](https://lwn.net/Articles/979789)

And there is a long history of similar implementations including projects that
are no longer maintained:

- MILO on Alpha started before 2000 (see [What is
MILO?](https://tldp.org/HOWTO/MILO-HOWTO/what-section.html))
- kboot developed by Werner Almesberger in 2005

These projects all attempt to reduce the role of firmware to a small,
fixed-function core whose only purpose is to get a flash-based Linux kernel
started. This “bare essentials” firmware prepares the hardware and starts a
Linux kernel and a userland environment will run on the machine. Go is the
Expand Down

0 comments on commit dba09a0

Please sign in to comment.