Canoeboot 26.01 RC1 “Thrifty Tomato” released!

Leah Rowe

25 December 2025


Return to index

Article published by: Leah Rowe

Date of publication: 25 December 2025

Today’s Canoeboot 26.01 RC1 revision is a testing release, whereas the previous stable release was Canoeboot 20241206. This revised release log lists all changes as of today, 25 December 2025, since the Canoeboot 20241206 release of December 2024.

You can find today’s release in https://rsync.libreboot.org/canoeboot/26.01rc1/ or you can use one of the mirrors.

This is the first Release Candidate (RC1) in the Canoeboot 26.01 release series, codenamed “Thrifty Tomato”. It is expected that new RCs will be issued weekly, between now and the time of the full release.

PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING, OR YOU MAY BRICK YOUR MACHINE!! - Please click the link and follow the instructions there, before flashing. For posterity, here is the link again.

Open source BIOS/UEFI firmware

Canoeboot is a free/open source 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 Debian is a Linux distribution. It provides an automated build system to produce coreboot ROM images with a variety of payloads such as 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 Linux distro, providing a source-based package manager (called lbmk) which patches sources and compiles coreboot images. It makes use of coreboot for hardware initialisation, and then a payload such as SeaBIOS or GRUB to boot your operating system; on ARM(chromebooks) and certain x86 mainboards, we provide U-Boot (as a coreboot payload), which provides a lightweight UEFI implementation..

Detailed list of changes

Revision updates

TODO: Only include the latest rev updates. Don’t mention earlier duplicates, unless there’s something special about them.

In descending order from latest changes to earliest changes:

Security

In descending order from latest changes to earliest changes:

Feature changes

In descending order from latest changes to earliest changes:

Configuration changes

In descending order from the latest changes to the earliest changes:

Bug fixes

This combines both build system fixes, and changes to upstream sources (e.g. coreboot and various payloads like SeaBIOS/GRUB, utilities like flashprog, and so on).

The following bug fixes have been merged (in descending order from the latest changes to the earliest changes):

General code cleanup

Another bug focus in this release was to clean up the logic of Canoeboot’s build system, and fix several bugs, especially those relating to error handling.

One of the bigger cleanups here is that previously, a lot of temporary files were placed under cache/, but the latter is meant for permanent files, not temporary files.

In descending order from the latest changes to the earliest changes:

Git log

This log shows all changes in today’s release, from 30 June 2025, ever since the Canoeboot 20241206 release of 6 December 2025:

* cd47d1bb3f bring cb/default in sync with lbmk 26.01rc1 
* 9afcd12c55 inject: fix mac address insertion 
* 8bd85e924d Libreboot 26.01 RC1 Tenacious Tomato 
* 1c9d30dbc3 update pcsx-redux openbios 
* 94efbdc4d0 bump flashprog rev: ffcf92fb, December 2025 
* c83acb11fe init.sh: Explicitly export UTF-8 locale 
* 2238f824d3 grub modules: add more gcry_ ciphers 
* 2f548c0aa5 bump seabios revision 
* 80d5d8cfe3 update grub again, to 25b7f6b93 
* d5d9d38fec GRUB: update to rev 2.14-rc1 December 2025 
* c68ef0dc20 grub: add a keyboard layout for norway 
* cc16ab949e tree.sh: tidy up check_gnu_path 
* 6b54002a48 lib.sh: reduce indentation in setvars 
* 5fd508070b get.sh: reduce indendation in fetch_targets 
* 7b301c254d get.sh: reduce indentation in clone_project 
* 43e14e7641 WIP: chromebook integration script 
* 09949c222d fam15h: add missing file to nuke.list 
*   270e868802 Merge pull request 'fixed typo in "grub_scan_disk" for macbook11_16mb' (#26) from honzo/cbmk:macbook11_16mb_fixed_typo into master 
|\  
| * 8e500eddb1 fixed typo in "grub_scan_disk" for macbook11_16mb 
* |   8fe97c6c58 Merge pull request 'removed duplicate "payload_uboot" for e6230_12mb' (#25) from honzo/cbmk:e6230_12mb_deduplicated into master 
|\ \  
| |/  
|/|   
| * 65ff6b4362 removed duplicate "payload_uboot" for e6230_12mb 
|/  
* e19c98729d get.sh: return clone_project if multi-tree 
* 9ebd848451 Revert "get.sh: don't frivolously copy tmp git clones" 
* 8d954b5700 Revert "get.sh: remove a redundant check" 
* 08e2dccf71 get.sh: remove a redundant check 
* b99c428d16 get.sh: don't frivolously copy tmp git clones 
* d8c4e62dda Revert "get.sh: make forcepull a macro" 
* b7ff64ecff get.sh: make forcepull a macro 
* b041853100 tree.sh: unify -f/-F in case/switch handling 
* 5cf29c219d tree.sh: convert do_make into a macro 
* 49f3ac4dc4 git: don't use review.coreboot.org as main 
* f19bc135ec xbmk: sort global variables alphabetically 
* 03d1c843c8 get.sh: use the same directory map as --mirror 
* b673643460 get.sh: use --keep-cr on git-am 
* f4950dd2aa get.sh: More reliable git remote caching 
* df9f0ae7fa xbmk: minor code cleanup (79 character rule) 
* 46a4f21949 update config/dependencies 
* d63ba0adee tree.sh: add missing -F flag 
* 30de713fe6 get.sh: use git-show instead, for rev checks 
* 873c3ee28e rom.sh/tree.sh: clean up if_not_dry_build 
* 83e8fcb5a2 rom.sh: use if_dry_build macro 
* 5cd80a5d19 rom.sh: don't run add_cbfs_option on dry builds 
* ea1be97a1f rom.sh: support CBFS coreboot option backend 
* e87ee65e6f init.sh: only create cache/ here 
* 29c53c86fa Revert "init.sh: explicitly create cache/" 
* 2c2163a222 init.sh: explicitly create cache/ 
* ab98359f5f Revert "remove unar from dependencies" 
* 1a642f50f3 xbmk: don't call mkdir. use xbmkdir (new function) 
* 114fe7ffe1 update parabola and trisquel12 dependencies 
* 8d9e37fea6 release.sh: preserve clean sbase before building 
* 289bd9e84b xbmk: use sbase sha512sum, not host sha512sum 
* 6c292bd581 config/git: import suckless sbase 
* 0eee56ac36 xbmk: rename cv variables, for clarity 
* 68c84e4d6b tree.sh: rename xtree to xgcctree, for clarity 
* 123f9c3191 tree.sh: rename btype to buildtype, for clarity 
* 122cd86f4a tree.sh: rename _f to flag, for code clarity 
* 971cf95550 get.sh: delete tmp patch list when done 
* 6ef3eaf197 get.sh: sort patches when applying 
* 2de1f1c22c release.sh: remove eval statement in nuke() 
* e43818a9a4 xbmk: rename the "dry" variable to if_not_dry_run 
* 89e18ea5e4 coreboot/mkhelper: don't use eval 
* 1ad0160019 xbmk: remove even more eval statements 
* 7f61b0da20 xbmk: remove the setcfg function 
* 387f0bbe01 xbmk: clean up a few err calls 
* 609995ed6b xbmk: remove more eval statements 
* 1c778872a2 xbmk: general cleanup: unroll condensed code lines 
* a10826c411 grub/xhci_nvme: fix target.cfg 
* 0d9286c279 add fedora42 dependencies from bauduser 
* c0329efd9f dependency/debian: libstdc++-arm-none-eabi-newlib 
* 5e1a20772e grub/xhci: rename to grub/xhci_nvme 
* 1c76e4f33c tree.sh: remove superfluous eval statements 
* cf62353735 rom.sh: remove superfluous eval statement 
* 87e5704d70 inject: remove superfluous use of eval 
* 552348db6b init.sh: reduce the use of eval statements 
* 6a166843c0 get.sh: reduce the number of eval statements 
* ae5b1cbeb5 get.sh: allow force-pull via -F instead of -f 
* 6c760e1e85 get.sh: only pull if the local revision is missing 
* a0b25c0057 init.sh: break up xbmk_set_env 
* d06402a04a tree.sh: break up check_gnu_path to subfunctions 
* 0da1d6d6e6 add trisquel12 dependencies 
* ceed1d9f17 rom.sh: support "fspgop" init mode (won't be used) 
* 4317de947b libarchive: also copy bsdunzip and bsdcpio 
* dfa5c940aa remove unar from dependencies 
* 82f65c8e66 config/git: Support building libarchive 
* 20e99455cb gru bob/kevin: make u-boot bootflow timeout 8secs 
* 5118bdacb3 rom.sh: remove TODO note 
* 6effdcfc27 inject.sh: don't exit from patch_release 
* ca6be85523 init.sh: remove comment in pybin 
* 88724d234e get.sh: remove unnecessary check in try_copy 
* e724e86715 get.sh: rename try_file to try_fetch 
* cba989b313 xbmk: tidy up some if statements 
* d1d18f80c5 init.sh: remove TODO note 
* 028cc03ead init.sh: create TMPDIR *after* suid check 
* 1471c62976 release.sh: use cache src on release builds 
* 109afed152 init.sh: remove symlink check on XBMK_CACHE 
* 87cc4930b3 init.sh: switch back to old TMPDIR checks 
* 683dec94f0 make notices a bit more readable 
* cd25737e25 release.sh: fix typo in script: ./mk, not ./mx 
* 52f15ebe40 xbmk: cleanup of recent code refactoring 
* b985fcdb9f mk: unroll condensed code lines 
* 25e25144e9 get.sh: unroll condensed code lines 
* 4747bba128 init.sh: unroll condensed code lines 
* e920949da8 inject.sh: unroll condensed code lines 
* 6c308b8b25 lib.sh: unroll condensed code lines 
* 25ae11c2b7 release.sh: unroll condensed code lines 
* 6023e69c40 rom.sh: unroll condensed code lines 
* 897520a003 tree.sh: unroll condensed commands 
* 2fd121f503 init.sh: make TMPDIR *after* calling xbmkpkg 
* ca5bdb4047 Revert "xbmk: don't use backticks for command substitution" 
* a356acad18 tree.sh: fix bad variable reference 
* fcce35d703 xbmk: much more verbose error messages 
* 4c6d317b5b lib.sh: use xprintf in err() 
* a7f88ca425 lib.sh: use xprintf in x_ 
* a40030800c lib.sh: check args for errors in fx_ and dx_ 
* 9fa9cd9a76 inject.sh: add missing semicolon in case 
* 9a2dbd5db8 xbmk: don't use backticks for command substitution 
* 4f05c70c6b Revert "inject.sh: put tmpromdel in xbtmp, not cache/" 
* a8cc2d795f Update arch dependencies 
* e7079e11bd init.sh: write-protect the lock file on startup 
* 45ea594d1d Revert "git/grub: use codeberg as the main mirror" 
* bfe56dcaa4 Revert "change grub git again" 
* 35b0b08752 change grub git again 
* c0d9580493 tree.sh: don't combine remkdir/cd gnupath 
* b993e8322b release.sh: delete xbmkwd on src tarballs 
* fd32a81d42 inject.sh: put tmpromdel in xbtmp, not cache/ 
* 110a3bf6f3 init.sh/tree.sh: put PATH dirs in xbtmp 
* 0dd4d13664 init.sh: bail if date is non-GNU (for now) 
* 43ac862f92 lib/init.sh: sanitize the version string 
* acbaf22f97 release.sh: put vdir in xmtmp, not XBMK_CACHE 
* 4697275691 mk: hardened PWD check (deny symlinks) 
* 27ab9c98fe git/grub: use codeberg as the main mirror 
* 93f69904ba get.sh: put tmpgit in xbtmp 
* 629a1364e7 Revert "get.sh: put tmpclone dirs in xbtmp" 
* c67129c985 Revert "tree.sh: add missing colon at the end of trees()" 
* f784f7daad init.sh: create separate lock in release dirs 
* cecdf23fa1 tree.sh: add missing colon at the end of trees() 
* 66eee27e07 get.sh: put tmpclone dirs in xbtmp 
* c7308f6769 xbmk: remove xbloc, re-use xbtmp instead 
* be4fe8df2d init.sh: put TMPDIR inside xbmkpwd, not /tmp 
* bc133aaaa0 get.sh: remove unnecessary variable, repofail 
* 65baac8eec rom.sh: simplify rmodtool copy handling 
* e958a5069a release.sh: remove support for the -d flag 
* 8b8714af06 get.sh xbget: don't use eval for file/dir checks 
* 154d4c9da1 release.sh: fix broken release lock file handling 
* e31d41edf3 lib.sh and rom.sh: stricter mktemp usage 
* 8f9c8ec960 inject.sh: stricter set + usage 
* a786d3cf32 init.sh: tidy up xbmk_set_env 
* 141632d59d init.sh: tidy up xbmk_child_set_tmp 
* 76453a4a09 init.sh: remove unnecessary lockfile checks 
* 05c7ce99e8 init.sh: move TMPDIR handling to own functions 
* c73ede6578 init.sh: prevent race condition with TMPDIR 
* ed056dad5b init.sh: MUCH safer TMPDIR handling 
* 5a4e5aa1c5 mk: simplify the main script check 
* 70af3c187d config/dependencies: add --no-install-recommends 
* 7698ba930f inject.sh: redirect stderer to /dev/null FIRST 
* 0370760ae5 add missing zero file for coreboot 
* 332731f33f rom.sh: safer use of cat in copyps1bios 
* f2bf56c3a3 tree.sh: tidy up check_cross_compiler 
* 54dbcc53ab tree.sh: don't re-check xgcc needlessly 
* 49003ccb05 tree.sh: check xgcc AFTER checking elfdir 
* 602fc3cfa0 lib.sh: safer pad_one_byte function 
* 948546a684 lib.sh: additional error handling on cat 
* 03061e8316 tree.sh: Delete files *before* updating hashes 
* df15bf8e11 tree.sh: rename hashtype to hashname 
* 4299af2400 tree.sh: rename hashname to hashdir 
* 76df3f3ce2 tree.sh: rename hashvar to badhashvar 
* 5b4ebbaa29 tree.sh: rename function and remove comments 
* df97fe0930 tree.sh: don't delete builds if tree==target 
* ae489f834c tree.sh: re-add comments to check_hashes 
* c4984cc6a2 tree.sh: unified project hash handling 
* 116860abbb rom.sh: Don't run mkhelpers if release=n 
* c945efdb53 coreboot/default: probe EDID twice in libgfxinit 
* bfbc6874ad rom.sh: Don't build coreboot utils if dry=":" 
* b1d24ccd5c cache coreboot builds in elf/ again 
* 2e906fb4d3 tree.sh: delete individual target builds if needed 
* d4cf50173c tree.sh: Remove redundant deletion 
* 82b0b05ed3 tree.sh: Place target builds under tree/target/ 
* 4dda8a24f3 rom.sh: bump pcsx-redux copyright date to 2025 
* 5b47f6b82f pcsx-redux: bump rev 8f8cc3d5, 20 June 2025 
* 57a58a10c4 coreboot/default: bump rev 812d0e2f62, 5 Apr 2025 
* 1dee34148f GRUB: Bump to rev a68a7dece, 23 June 2025 
* bd322c05e2 SeaBIOS/default: Bump to rev b686f460, 28 Jun 2025 
* 6395f3f20f ifd/hppro3500: unlock regions by default 
* fc201b7f08 ifd/hppro3500: set HAP bit by default 
* 0b8cccdcab cb/hppro3500: use seagrub, not grubsea 
* b7c4c41a26 Add HP Pro 3500 Series 
* 09c02817e5 lib.sh: remove erroneous break from fx_ 

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

Site map

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