linuxboot / linuxboot/book

describe strategies to fit LinuxBoot into boot chains

Open
#198 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
JavaScript
Stars
300
Forks
54
PR merge metrics
No merged PRs in 30d

Description

## coreboot and oreboot

### Tools

Use the existing build system.
These projects already support providing a LinuxBoot image as a payload.

### Strategy

With coreboot, it is a Kconfig option. Already in use (by who?).

With oreboot, pass an argument to the build system.

### Open issues

Building the kernel etc through coreboot's build system may be intimidating and harder to grasp than building the payload independently and including it as a binary. More documentation needed for full automation.

In the case of oreboot, the LinuxBoot image must be built by the user.
We could eventually provide prebuilt ones per platform.

## U-Boot

### Tools

The U-Boot build system is already there.

### Strategy

Rework the U-Boot build setup so that any FIT image can be provided as a payload in place of U-Boot Proper, similar to coreboot.

Allow passing an env var, just like when inserting a TF-A image.

### Open issues

Keep the framework from building U-Boot proper when it's not needed.

## UEFI PI

Basically retrofitting onto TianoCore and its derivatives.
This one is the trickiest, since it starts from binaries, not sources.

### Tools

- [Fiano](https://github.com/linuxboot/fiano/) `utk` + `dxecleaner`/`tightenme` visitors
- [Fiedka](https://fiedka.app/)
- `me_cleaner` / [`intel_fw`](https://github.com/platform-system-interface/intel_fw)

### Strategy

Remove as many UEFI modules as necessary to gain enough space for the LinuxBoot image. Start with educated guessing and a "good enough" result.

With Fiedka, save the list of removals for sharing in a repo.
Create a simple CLI for replay, so that it can be automated.

With `utk` as a CLI, save the commands in a `Makefile` (as in [linuxboot/mainboards/aeeon/up](https://github.com/linuxboot/linuxboot/blob/main/mainboards/aeeon/up/Makefile)) or save the list of removals in a text file (needs better tooling; Heads had developed [Perl scripts](https://github.com/linuxboot/linuxboot/blob/main/lib/EFI.pm) and `awk` snippets, see e.g. [linuxboot/boards/monolake](https://github.com/linuxboot/linuxboot/blob/main/boards/monolake/Makefile.board) and [linuxboot/Makefile](https://github.com/linuxboot/linuxboot/blob/main/Makefile)).
Maybe align with Fiedka, save the removals in a JSON file and add a replay command/visitor or similar to Fiano/`utk`.

Possibly rework partitioning in order to gain more space; for Intel platforms, see `utk`'s `tightenme` visitor or `intel_fw`/`me_cleaner` to remove unnecessary parts of the (CS)ME (e.g., consumers need no AMT).

Add a `README.md` with general instructions and further necessary operations. Explain the hardware setup and caveats.

### Open issues

Tooling for AMD platforms still needs improvement; see [Romulan](https://github.com/fiedka/romulan) and (planned) [`amd_fw`](https://github.com/platform-system-interface/amd_fw).
How about UEFI PI on aarch64? Which vendors implement it?

For automated removal (`dxecleaner`) of as much as possible, a hardware tool such as 3mdeb RTE is necessary in order to reflash, reset, and monitor the result. It may take a lot of hours.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the linked linuxboot Makefiles, including mainboards/aeeon/up/Makefile, boards/monolake/Makefile.board, Makefile, and lib/EFI.pm, then compare the coreboot, oreboot, U-Boot, and UEFI PI strategies described here. A completed effort would provide README.md guidance, explain hardware setup and caveats, and document or automate the relevant payload-building and firmware-module-removal workflows.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
documentation, operating-systems, tooling
Issue type
Documentation
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.