Canoeboot 20240504 released!

Leah Rowe in GNU Leah Mode™

4 May 2024


Return to index

Article published by: Leah Rowe in GNU Leah Mode™

Date of publication: 4 May 2024

Do not use the Canoeboot 20240504 release, because it had problems with it. Please use the Canoeboot 20240612 release instead.

Introduction

Canoeboot is a free/libre BIOS/UEFI replacement on x86 and ARM, providing boot firmware that initialises the hardware in your computer, to then load an operating system (e.g. Linux/BSD). It is specifically a coreboot distribution, in the same way that Trisquel is a GNU+Linux distribution. It provides an automated build system to produce coreboot ROM images with a variety of payloads such as GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy to use as possible for non-technical users. From a project management perspective, this works in exactly the same way as a GNU+Linux distro, providing the same type of infrastructure, but for your boot firmware instead of your operating system. It makes use of coreboot for hardware initialisation, and then a payload such as SeaBIOS or GNU GRUB to boot your operating system; on ARM(chromebooks), we provide U-Boot (as a coreboot payload).

Canoeboot provides many additional benefits such as fast boot speeds, greater security and greater customisation, but the primary benefit is software freedom. With use of GRUB in the flash, you can make use of many advanced features such as the ability to boot from an encrypted /boot partition and verify kernel GPG signature at boot time. Canoeboot’s GRUB payload is heavily patched; for example, today’s release uses GRUB based on version 2.12, but Canoeboot adds argon2 KDF support (for LUKS2) and xHCI support - you can use USB 3.0 devices natively, in GRUB, including distro install media via USB3. Some desktops supported by Canoeboot can have USB3 cards installed on them.

Another example of the type of benefit you could get from Canoeboot: you can boot from NVMe SSDs in the SeaBIOS payload, if your board can take them (e.g. desktop board with an NVMe adapter in the PCI-E slot). If your vendor’s BIOS/UEFI firmware only supports SATA, then this is a nice bonus for you. With Canoeboot, you get continued firmware updates over time, adding new features on both older and newer hardware. Canoeboot still provides updates for machines that are nearly 20 years old, while also supporting newer machines. More hardware support is being added all the time!

These and other examples are just the start. Canoeboot provides a superior boot experience compared to proprietary BIOS/UEFI, giving you the same power and level of control that a fully free GNU+Linux system would afford. It’s your computer to boot however you wish. Canoeboot lets you get more out of the hardware. All your favourite GNU+Linux distros are compatible, even Qubes(on most machines).

If you’re fed up of the control that proprietary UEFI vendors have over you, then Canoeboot is for you. Although many would agree that it is a major step forward for most users, it’s actually a conservative idea socially. It used to be that computers were much more open for learning, and tinkering. Canoeboot implements this old idea in spirit and in practise, helping you wrest back control. Unlike the hardware vendors, Canoeboot does not 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, and the same is true of hardware. Your computer is your property to use as you wish. Free Software protects you, by ensuring that you always have control of the machine.

Hardware supported in this release

This release supports the following hardware:

Servers (AMD, x86)

Desktops (AMD, Intel, x86)

Laptops (Intel, x86)

Laptops (ARM, with U-Boot payload)

Highlights

S3 fixed on GM45 thinkpads

This was broken in the previous Canoeboot release, but now it works again.

S3 suspend/resume (when you put the laptop to sleep and later wake it up).

Modest code size reduction

See: Libreboot build system audit 4

These and subsequent changes were adapter for today’s release. The build system has been further optimised, both in terms of code size and performance.

Canoeboot is maintained in parallel with Libreboot, by the same person, so a lot of code is shared back and forth between the two, while ensuring that Canoeboot strictly complies with the GNU Free System Distribution Guidelines, or GNU FSDG for short.

GRUB 2.12 revision now used

The previous Canoeboot release used a revision from GRUB 2.12-rc1, but now it uses the GRUB 2.12 released during December 2023, with some additional revisions and patches on top of that.

GRUB support for EFI System Partition

We don’t use UEFI on x86, but the GRUB config in Canoeboot’s GRUB payload has now been modified, to also scan grub.cfg from EFI/ directories. It also now scans directly for extlinux and syslinux configs, in addition to GRUB configs (GRUB can parse syslinux/extlinux configs). This should make Canoeboot’s GRUB payload more compatible with a wider variety of distro setups.

The above change pertaining to ESP has also been applied to booting of installers (e.g. USB media). Syslinux/Extlinux/GRUB config scanning has been merged together there, so now a lot more distro installers should boot automatically, without manual tweaking/intervention from the user.

U-Boot release script

The script at script/update/release now supports generating standalone U-Boot source archives, like so:

./update release -m u-boot

The usual -d option also works, for specifying a directory other than release/. Canoeboot still provides U-Boot embedded within the larger source release archive, and does not yet actually provide U-Boot as a standalone project, but some people may find this useful.

Flashprog now used, not flashrom

Essentially, flashprog has better leadership and is more stable than flashrom; flashrom has had new leadership for a while now, and in my view they are not doing a very good job. That is the executive summary; the full reasoning, again, can be found in the Libreboot 20240225 release.

Flashprog started due to disagreement between its founder (Nico Huber) and the new leadership of the flashrom project. Flashprog focusus on stability, while also adding newer chips all the time. Indeed, flashrom started becoming unreliable on a lot of older platforms such as i945 thinkpads, whereas flashprog is more stable.

Canoeboot will use flashprog from now on, not flashrom.

Work done since Canoeboot 20231107

The following log will now acount for changes since Canoeboot 20231107, from most recent descending to very earliest commits. The most interesting changes are highlighted in bold:

Disabled boards

Canoeboot’s build system can be configured to exclude certain boards in release archives, while still permitting them to be re-built.

All of the following boards have been disabled in the build system:

D510MO and D945GCLF images not included either, due to lack of testing.

All other boards have ROM images in this release.

Errata

See: https://codeberg.org/libreboot/lbmk/issues/216

This bug has been fixed in lbmk.git, and the fix will be included in the next release, but it wasn’t caught in the 20240504 release. The same fix has been applied to Canoeboot’s build system, cbmk.

It is almost certainly guaranteed that no Canoeboot users were ever affected by this, but extreme measures have been taken to ensure that it is entirely guaranteed from now on. Read on to know more:

The bug is quite serious, and it was previously decided that documentation should be written warning about it (in docs/install/). The bug was only triggered on Intel Sandybridge hardware (e.g. ThinkPad X220) and was never reported on other boards, but there’s no way to fully know; what is known is that the offending patch that caused the bug has been removed; namely, xHCI GRUB patches, which are now only provided on Haswell and Broadwell hardware (where the bug has not occured) in Libreboot; in Canoeboot, the GRUB tree with xHCI support is provided, but not currently used on any mainboards in Canoeboot. Therefore, we know that the bug will no longer occur.

The next release will exclude xHCI support on machines that don’t need it, which is every machine that Canoeboot supports (as of Canoeboot 20240504/20240510), and a mitigation is in place that makes SeaBIOS the primary payload, to prevent effective bricks in the future; the bug was in GRUB, but if SeaBIOS is the first payload then the machine remains bootable even if a similar bug occurs.

It is now the default behaviour, in the next release, that certain images contain a bootorder file in CBFS, making SeaBIOS try GRUB first, but you can still press ESC to access the SeaBIOS boot menu if you want to directly boot an OS from that. This, and the other change mentioned above, will guarantee stability. GRUB is no longer the primary payload, on any mainboard.

However, it was later decided to put this release in the testing directory instead; it was initially designated as a stable release.

All ROM images for the 20240504/20240510 releases have been removed from rsync, but the source tarball remains in place.

For now, you are advised to use the November 2023 release, or build from cbmk.git at revision 4f6fbfde81f5176e5892d1c00627f8f680fd3780 (which is known to be reliable and is the current revision as of this time of writing) - or, alternatively, you are advised to use the next release after 20240510.

A new audit has been conducted, marked complete as of 9 June 2024, fixing this and many issues; a new true stable release will be made available some time in June 2024.

Markdown file for this page: https://canoeboot.org/news/canoeboot20240504.md

Subscribe to RSS for this site

Site map

This HTML page was generated by the Untitled Static Site Generator.