Find a file
Leah Rowe 58a17c8d15 mk check_project_hashes: handle error on sha512sum
We can't do set -o pipefail in POSIX sh, which we're using,
but the build system has x_ which wraps around a command
and executes it, exiting with non-zero status if it does.

This fact enables lbmk to have functionality that is actually
superior to pipefail, since you can more easily control
specifically which parts error.

For example:

foo | bar | foo2 | bar2 | $err "error"

ERROR exits with non-zero status, but foo2, bar and foo
would not exit on error, only bar2 would. In *bash*, which
we avoid, set -o pipefail would make all of them exit on
error, but what if you wanted "bar" to not exit?

With lbmk, you could do, in the above example, and with the
above question asked ("what if you wanted bar not to exit"):

x_ foo | bar | x_ foo2 | bar2 > file | $err "error"

of course, you could also do, if not outputting to "file":

x_ foo | bar | x_ foo2 | x_ bar2

NOTE: in lbmk, $err is a variable containing the name of
a function that does something (whatever you want) and
then exits with non-zero status.

This entire explanation is beyond the scope of simply
providing (and explaining) this fix, but I also wanted to
use this commit as an example of the power of lbmk with
regards to POSIX shell scripting.

Signed-off-by: Leah Rowe <leah@libreboot.org>
2025-04-14 01:59:41 +01:00
config cbmk: unified PWD handling (work directory) 2025-04-11 20:39:55 +01:00
include Revert "lib.sh: use eval for the command in x_" 2025-04-14 01:58:37 +01:00
util util/nvmutil: remove excessive comments 2025-04-04 10:09:46 +01:00
.gitignore lib.sh: write version/versiondate to dotfiles 2025-04-14 01:19:20 +01:00
COPYING censored libreboot c20230710 2023-10-26 20:20:43 +01:00
mk mk check_project_hashes: handle error on sha512sum 2025-04-14 01:59:41 +01:00
README.md snip 2025-01-18 01:38:13 +00:00

Canoeboot

Find canoeboot documentation at https://canoeboot.org/

The canoeboot project provides libre boot firmware that initializes the hardware (e.g. memory controller, CPU, peripherals) on specific Intel/AMD x86 and ARM targets, which then starts a bootloader for your operating system. Linux/BSD are well-supported. It replaces proprietary BIOS/UEFI firmware. Help is available via #canoeboot IRC on Libera IRC.

Canoeboot is maintained in parallel with Libreboot, by the same developer. Strictly speaking, it is a fork of Libreboot, but with a twist:

Canoeboot is provided for the purists who absolutely wish to have no proprietary software of any kind. Regardless of any other firmware that exists outside of it, the boot flash on your system will be entirely free software if you install Canoeboot on it. That includes a complete lack of CPU microcode updates.

This policy is described here: https://canoeboot.org/news/policy.html

Project goals

  • Obviously, support as much hardware as possible (within the limitations imposed by our policy) and using what coreboot happens to have in its source tree - Canoeboot also heavily patches coreboot, sometimes adding new mainboards out-of-tree).
  • Make coreboot easy to use. Coreboot is notoriously difficult to install, due to an overall lack of user-focused documentation and support. Most people will simply give up before attempting to install coreboot. Canoeboot's automated build system and user-friendly installation instructions solves this problem.

Canoeboot attempts to bridge this divide by providing a build system automating much of the coreboot image creation and customization. Secondly, the project produces documentation aimed at non-technical users. Thirdly, the project attempts to provide excellent user support via IRC.

Canoeboot already comes with a payload (GRUB), flashprog and other needed parts. Everything is fully integrated, in a way where most of the complicated steps that are otherwise required, are instead done for the user in advance.

You can download ROM images for your canoeboot system and install them without having to build anything from source. If, however, you are interested in building your own image, the build system makes it relatively easy to do so.

Not a coreboot fork!

Canoeboot is not a fork of coreboot. Every so often, the project re-bases on the latest version of coreboot, by virtue of maintaining sync with Libreboot releases (minus unCanoe parts), with the number of custom patches in use minimized. Tested, stable (static) releases are then provided in Canoeboot, based on specific coreboot revisions.

LICENSE FOR THIS README

It's just a README file. This README file is released under the terms of the Creative Commons Zero license, version 1.0 of the license, which you can read here:

https://creativecommons.org/publicdomain/zero/1.0/legalcode.txt

The documentation in Canoeboot will use a mix of other licenses, so you should check that for more information.