13 KiB
Canoeboot provides coreboot for machine initialisation, which then jumps to a payload in the boot flash; coreboot works with many payloads, which boot your operating system e.g. Linux/BSD.
Canoeboot provides GRUB and SeaBIOS payloads on x86/x86_64 Intel/AMD motherboards, and a U-Boot UEFI payload for coreboot on ARM64(Aarch64) motherboards. An x86/x86_64 U-Boot UEFI payload is also available on some boards. The x86, x86_64 and arm64 U-Boot payloads provide a lightweight UEFI boot implementation. Canoeboot's design incorporates all of these payloads in a single image, and you choose one at boot time.
Canoeboot makes coreboot easy to use for non-technical users, by providing a fully automated build system, automated build process and user-friendly installation instructions, in addition to regular binary releases that provide pre-compiled ROM images for installation on supported hardware. Without automation such as that provided by Canoeboot, coreboot would be inaccessible for most users; you can also still reconfigure Canoeboot however you wish.
Why use Canoeboot?
If you're already inclined towards free software, maybe already a coreboot user, Canoeboot makes it easier to either get started or otherwise maintain coreboot on your machine, via build automation. It provides regular tested releases, pre-assembled, often with certain patches on top of coreboot (and other code) to ensure stability. By comparison, coreboot uses a rolling-release model, with a snapshot of the codebase every few months; it is very much developer-oriented, whereas Canoeboot is specifically crafted for end users. In other words, the purpose of Canoeboot is to Just Work. Direct configuration and installation of coreboot is also possible, but Canoeboot makes it much easier.
Canoeboot gives you Free Software that you otherwise can't get with most other boot firmware, plus faster boot speeds and better security. It's extremely powerful and configurable for many use cases. If you're unhappy with the restrictions (not to mention, security issues) imposed on you by proprietary BIOS vendors, then Canoeboot is one possible choice for you. Since it inherits coreboot, it doesn't have any known backdoors in the code, nor does it contain legacy cruft from the 1980s. Canoeboot provides a sleek, fast boot experience for Linux/BSD systems, based on coreboot which is regularly audited and improved.
Canoeboot is more reliable than proprietary firmware. Many people use proprietary (non-libre) boot firmware, even if they use a libre OS. Proprietary firmware often contains backdoors, and can be buggy. The Canoeboot project was founded in October 2023, with the express purpose of making coreboot firmware accessible for non-technical users; the Libreboot project, upon which Canoeboot is based, was founded for the same reason, in December 2013.
Canoeboot is a community-oriented project, with a focus on helping users escape proprietary boot firmware; we ourselves want to live in a world where all software is free, and so, Canoeboot is an effort to help get closer to that world. Unlike the big vendors, we don't try to stifle you in any way, nor do we see you as a security threat; we regard the ability to use, study, modify and redistribute software freely to be a human right that everyone must have. Extended to computers, these are products that you purchased, and so you should have the freedom to change them in any way you like. When you see Intel talk about their Boot Guard (which prevents coreboot by only letting firmware signed by them be executed) or other vendors imposing similar restrictions, and you hear them talk about "security", they are only talking about their security, not yours. In the Canoeboot project, it is reversed; we see Intel Boot Guard and similar such technologies as an attack on your freedom over your own property (your computer), and so, we make it our mission to help you wrest back such control.
Canoeboot is not a fork of coreboot
In fact, Canoeboot tries to stay as close to stock coreboot as possible, for each board, but with many different types of configuration provided automatically by the Canoeboot build system.
In the same way that Alpine Linux is a Linux distribution, Canoeboot is
a coreboot distribution. If you want to build a ROM image from scratch, you
otherwise have to perform expert-level configuration of coreboot, GRUB and
whatever other software you need, to prepare the ROM image. With Canoeboot,
you can literally download from Git or a source archive, and run a simple script,
and it will build entire ROM images. An automated build system, named cbmk
(CanoeBoot MaKe), builds these ROM images automatically, without any user input
or intervention required. Configuration has already been performed in advance.
If you were to build regular coreboot, without using Canoeboot's automated build system, it would require a lot more intervention and decent technical knowledge to produce a working configuration.
Regular binary releases of Canoeboot provide these ROM images pre-compiled, and you can simply install them, with no special knowledge or skill except the ability to follow simplified instructions, written for non-technical users.
How to help Canoeboot
The Libreboot tasks page lists tasks that could (will) be worked on. It will be updated over time as more tasks are added/completed. If you want to help, you could pick one of these tasks and work on it.
Canoeboot tracks Libreboot, on a per-commit basis. This is done by Leah Rowe, who also maintains Libreboot, but Canoeboot only merges those changes that are conducive to a zero-blob setup; for example, a change pertaining to boards that require Intel ME firmware would not be imported into Canoeboot. Libreboot changes are cherry-picked, so that Canoeboot remains in relative sync at all times. This may seem extreme, but the way it's done actually minimizes development overhead completely, and you can read about that process on the about page.
Unless you want to work on a feature that is truly specific to Canoeboot, that Libreboot genuinely doesn't have, then you should contribute directly to Canoeboot. Otherwise, it is our preference that you submit to Libreboot first; however, if you're ideologically uncomfortable with Libreboot, you may submit to Canoeboot and your changes will (if conducive to Libreboot development) also be cherry-picked into Libreboot; the usual development workflow is the other way around, as described above.
The single biggest way you can help is to add new motherboards in Libreboot, by submitting a config. Anything coreboot supports can be integrated in Libreboot, with ROM images provided in releases. If the board is suitable for Canoeboot, it will then also be merged in Canoeboot. See:
- Apply to become a Libreboot board maintainer/tester
- Libreboot porting guide for new motherboards
- Libreboot build system documentation
- Canoeboot build system documentation
After that, there is build system maintenance (see above), and documentation which we take seriously. Documentation is critical, in any project.
User support is also critical. Stick around on IRC, and if you're competent
to help someone with their issue (or wily enough to learn with them), that is
a great service to the project. A lot of people also ask for user support
on the r/canoeboot
subreddit.
You can check bugs listed on the Libreboot bug tracker; please also check the Canoeboot bug tracker.
If you spot a bug and have a fix, here are instructions for how to send Canoeboot patches, and you can also report it. Also, this entire website is written in Markdown and hosted in a separate repository where you can send patches.
The above links, in the previous paragraph, are to Canoeboot resources. Again, please submit to Libreboot first, if that seems more appropriate, and your changes will be cherry-picked into Canoeboot. Please look at Libreboot's Git page and Libreboot's lbwww repository where you can send patches.
Any and all development discussion and user support are all done on the IRC channel. More information is on the contact page.
Translations needed, for canoeboot.org
If you want to help with translations, you can translate pages, update existing translations and submit your translated versions. For instructions, please read:
How to submit translations for libreboot.org
You can also adapt these instructions for the Canoeboot website. Where a page is identical on both projects, it may make sense to submit a translation there, otherwise please also send to Canoeboot simultaneously if that seems wise; otherwise, simply sending translations to Libreboot will be appreciated, and your translation will be adapted for canoeboot.org.
Even if someone is already working on translations in a given language, we can always use multiple people. The more the merrier!