cbwww/site/news/canoeboot20240510.md

8.6 KiB

% Canoeboot 20240510 released! % Leah Rowe % 10 May 2024

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. GNU+Linux). 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.

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 very old idea. Old is often better. 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.

This new release, Canoeboot 20240510, released today 10 May 2024, is a new stable release of Canoeboot. The previous release was Canoeboot 20240504, just 6 days ago. This is a minor release, with minimal changes; if you already installed Canoeboot 20240504, you probably don't need to update, but the SeaBIOS revision was updated, and has some fixes.

Changes in this release

Extensive changes have been made to the documentation and website, which you may or may not notice. I won't say what they are. You'll just have to review the git log yourself :)

There was originally a long-winded article about these changes, which could have sparked a major international incident. They very nature and purpose of those changes means that direct discussion of them, even in the most diplomatic way possible and with the most amount of brevity, would completely defeat the purpose of said changes. I've deleted that article, prior to publishing.

Said article will never be published. I will never discuss it. I will ignore all questions, provocations or praise pertaining to said changes. Not making reference to them in any way would also be bad; making cryptic reference to it is optimal, so that is what I've done, now.

If you now go and look at said changes, I will say only one thing further:

Probably nothing will happen, but I'm leaving everything open to interpretation. Who knows what will happen? Stay tuned to find out. Or not. Again, it could be that nothing happens. In fact, it's extremely likely that nothing will happen; we shall see.

The gravity of this change means that I must make reference to it, albeit indirectly. What I will say is this: my opinions have not changed at all. I remain resolute and steadfast in my resolve. I'm simply taking a completely different approach from now on. It is an approach that those familiar with the history of Canoeboot probably never expected I'd ever take.

ALSO:

Build system changes

The following improvements have been made, most of them not affecting the final build (the actual code that goes in-flash):

  • bump seabios (payload) to the latest upstream revision as of today
  • main build script: exit (with non-zero status) if not running it from the main cbmk work directory (the design of cbmk makes this mandatory)
  • merge script/build/serprog into script/build/roms - now you run e.g. ./build roms serprog rp2040 instead of ./build serprog rp2040
  • merge include/err.sh into include/option.sh
  • build/roms: more code cleanup in general
  • build/roms: split up main() into smaller functions
  • build/roms: allow status search by mismatch (e.g. list all targets that are not stable, instead of only being able to list ones that are)
  • Update the README.md file, applying the same change as described above (adopt a neutral/concilliatory tone toward FSF/GNU, and don't tell everyone Libreboot is a superior project that everyone should use).

Regarding SeaBIOS, the following upstream changes have been merged into this Canoeboot release:

    * e5f2e4c6 pciinit: don't misalign large BARs
    * 731c88d5 stdvgaio: Only read/write one color palette entry at a time
    * c5a361c0 stdvga: Add stdvga_set_vertical_size() helper function
    * 22c91412 stdvga: Rename stdvga_get_vde() to stdvga_get_vertical_size()
    * 549463db stdvga: Rename stdvga_set_scan_lines() to stdvga_set_character_height()
    * c67914ac stdvga: Rename stdvga_set_text_block_specifier() to stdvga_set_font_location()
    * aa94925d stdvga: Rework stdvga palette index paging interface functions
    * 8de51a5a stdvga: Rename stdvga_toggle_intensity() to stdvga_set_palette_blinking()
    * 96c7781f stdvga: Add comments to interface functions in stdvga.c
    * 2996819f stdvga: Rename CGA palette functions
    * 91368088 stdvgamodes: Improve naming of dac palette tables
    * 70f43981 stdvgamodes: No need to store pelmask in vga_modes[]
    * 1588fd14 vgasrc: Rename vgahw_get_linesize() to vgahw_minimum_linelength()
    * d73e18bb vgasrc: Use curmode_g instead of vmode_g when mode is the current video mode
    * 192e23b7 vbe: implement function 09h (get/set palette data)
    * 3722c21d vgasrc: round up save/restore size
    * 5d87ff25 vbe: Add VBE 2.0+ OemData field to struct vbe_info
    * 163fd9f0 fix smbios blob length overflow
    * 82faf1d5 Add LBA 64bit support for reads beyond 2TB.
    * 3f082f38 Add AHCI Power ON + ICC_ACTIVE into port setup code
    * 3ae88886 esp-scsi: terminate DMA transfer when ESP data transfer completes
    * a6ed6b70 limit address space used for pci devices.

And that's all. If you installed Canoeboot 20240504, you probably don't need to update to today's release. If you didn't install 20240504, then you may aswell update to today's release (Canoeboot 20240510).

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)

Again, very minor release. I wasn't fully happy with the last one, specifically the last Canoeboot release, so I decided to another quick one.

That is all.