Canoeboot 25.06 “Onerous Olive” released!

Leah Rowe

30 June 2025


Return to index

Article published by: Leah Rowe

Date of publication: 30 June 2025

A corresponding Libreboot 25.06 release is also available.

There was a Canoeboot 25.04 release in April 2025, but that is retroactively regarded as an RC of 25.06. The original 25.06 release announcement showed changes since 25.04, but the changelog is now relative to December 2024. This reflects the revised release schedule. It means that the changelog is much bigger, and also includes the changes that went in Canoeboot 25.04.

Today’s Canoeboot 25.06 revision is a stable release, whereas the previous stable release was Canoeboot 20241207. This revised release log lists all changes as of today, 30 June 2025, since the Canoeboot 20241207 release of December 2024.

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..

Summarised list of changes

Board support

This board, which was also added in Canoeboot 25.04, is available in Canoeboot 25.06:

The following boards have been added since the Canoeboot 25.04 release:

These newer boards also happen to work just fine without microcode updates, which is great since Canoeboot doesn’t provide such updates at all.

The priority for the first half of 2025 has been on further auditing the Libreboot build system, so fewer board ports were added. More board ports will be added instead in the December 2025 release (a lot more).

These boards use Intel ME, and they’re inherited from Libreboot; in Canoeboot, we tell the user to avoid re-flashing the original Intel ME, but still disable the ME after early bringup, using a specially modified Intel Flash Descriptor that sets the altMeDisable (HAP) bit - additionally, we use Soft Temporary ME Disable in coreboot.

Canoeboot itself doesn’t distribute Intel ME at all. You simply skip re-flashing the one you already have, while disabling it during early boot time by setting the HAP bit.

This is functionally equivalent to running me_cleaner, in that only the ROMP and BUP modules are executed; the ME initialises itself but then shuts down, during early boot. Using me_cleaner itself cannot be done in Canoeboot, because that would mean either distributing (directly or indirectly) or otherwise handling me.bin, which would go against Canoeboot policy.

Therefore, when installing Canoeboot on these newer machines, you can flash just the BIOS region of the flash, and the IFD/GbE regions. In this way, Canoeboot still provides a fully free coreboot distro on these machines.

This differs greatly from the Libreboot implementation, which downloads an Intel ME at build time, shrinks it using mecleaner, and shrinks the ME region, enlarging the BIOS region; as a result, Libreboot can build full images, where all of the flash can be reprogrammed without issue.

This is because of differences in Libreboot and Canoeboot policies, which you can learn by reading their policies:

Canoeboot provides more information about this in the following guide, which is also referenced in the new Canoeboot installation instructions for these machines.

This change has been made, so as to expand the hardware support by Canoeboot, while still complying with its zero-blob policy. Canoeboot remains a fully free software coreboot distribution.

The HP EliteBook laptops (from Libreboot) were not added yet, because they use EC firmware in-flash, and a reliable method to re-use what’s there at the factory has not yet been implemented, but I have successfully determined that HP EliteBooks are also feasible, so these will be added in a future Canoeboot release, most likely the Canoeboot 25.12 release planned for December 2025.

Revision updates

In descending order from latest changes to earliest changes:

The GRUB revision includes a number of critical CVE fixes, and regression fixes, that were also included in Libreboot 20241206 rev11. Some later fixes are also present, such as wiping LUKS keys from memory after successfully booting Linux (Linux handles LUKS itself, and starts the process again).

The NASM version was updated to version 2.16.03 on coreboot/fam15h, to prevent build errors, instead of fixing the old NASM 2.14.02. Tested on Debian Sid Experimental, with GCC15-based toolchain, and on Fedora 42.

PICO support: Reverted to the old pico serprog/sdk repositories used in Libreboot 20240612. This is temporary, because pico2 support is currently broken, so this release only has pico1 support, when dealing with Rpi Pico devices. Upstream pico-serprog works fine on pico2, so this will be fixed in and re-updated again in a future revision release. The pico2 update images were retroactively removed from the 20241206 release on rsync.

A patch from upstream was backported to the old pico-sdk version, so that it builds correctly on newer GCC15 (tested on Debian Sid with “Experimental” packages enabled).

Licensing

Security

These can be considered bug fixes, but these are special fixes that are of massive concern to users.

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.

A lot of cleanup was done on the init functions used by the build system, to initialise common variables, such as environmental variables, and temporary files and/or directories; such logic was moved to a new script called init.sh.

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 Libreboot 20241206 release of 6 December 2025:

* 64b76b4e3a Canoeboot 25.06 release 
* 126dff455b tree.sh: add sha512 error for check_project_hashes 
* 08a9837216 tree.sh: add error check in check_project_hashes() 
* e1664be01e tree.sh: more reliable clean in run_make_command 
* 1843f71577 inject.sh: add missing semicolons 
* 3567d95860 put coreboot utils in elf/coreboot/TREE 
* 885016c0c2 release.sh: use printf to create version files 
* eeb9954179 lib.sh: simplify setvars() 
* bc0a2a9b75 lib.sh: simplify chkvars() 
* 3657ed8677 mk: simplify main() 
* ee92a228c3 get.sh: simplify fetch_project() 
* bbc35fe6e6 get.sh: simplify try_copy() 
* b9f78f2aff get.sh: tidy up bad_checksum() 
* ff77de4a9d get.sh: simplify fetch_targets() 
* 405215bc34 general cleanup in get.sh 
* 21352b990e xbmk: rename xbmklocal/xbmktmp variables 
* fcfc43aced get.sh: consolidate printf statements 
* 46c0eb5ff4 get.sh: remove redundant printf in fetch_project 
* 77b79d3581 get.sh: remove superfluous command in try_git() 
* 7b8185f460 init.sh: error out if .git/ is a symlink 
* 2b8ccfbe5b get.sh: Properly error out if tmpclone fails 
* ff06b30ca5 tree.sh: Don't auto-run make-oldconfig 
* 173f304fd7 rom.sh: simplify mkcoreboottar() 
* 0854e99cfe rom.sh: rename mkvendorfiles 
* 00ab60e762 rom.sh: simplify ccache handling for coreboot 
* 82bb342a63 rom.sh: simplify u-boot payload handling 
* 463cdd8128 coreboot: Remove unused vboot tests 
* a70d8afc30 get.sh: Always update git remotes 
* 77ad7a0ca3 get.sh: re-generate remotes every time 
* e209646018 release.sh: copy version files to rsrc 
* ada8a6dd7b xbmk: add fake config makefile args to flashprog 
* 069aa21567 rom.sh: skip copyps1bios on dry builds 
* bcdcfa045a tree.sh: Don't run make-clean on dry runs 
* 4c0ecf17e6 GRUB: Update to revision 73d1c959e (14 March 2025) 
* be598c497b get.sh: add missing check in fetch_project() 
* 378a73ce42 get.sh: stricter URL check in xbmkget() 
* b9886740ba get.sh: make xbmkget() easier to understand 
* c130682fdf get.sh: Make xbmkget err on exiting the loop check 
* 1342d74cc6 tree.sh: fix up copy_elf(), bad for loop 
* b4a547caac lib.sh: Use while, not for, to process arguments 
* 41ffbb640d xbmk: stricter handling of files on while loops 
* b516a29482 init.sh: looser XBMK_THREADS validation 
* fa59f9da76 init.sh: Hardcode XBMK_CACHE for integrity 
* d92dee6781 dependencies/debian: add libx86 
* 6577abc60a FSDG-compliant Sandy/Ivybridge/Haswell support 
* addbd95a24 init.sh: merge xbmk_lock() with xbmk_set_env() 
* 1c34d4567b init.sh: move xbmk_set_version 
* a4103517ea init.sh: set pyver from set_env 
* 6a3c771feb init.sh: merge xbmk_mkdirs with set_env 
* de62243cd2 init.sh: check version/versiondate once read 
* 6b8ee3d3b3 init.sh: error if version not read 
* 08610f4145 init.sh: only update version files on parent 
* 412b0a81d7 init.sh: simplify unknown version creation 
* 2a6a4d765d init.sh: only set xbmk version on parent instance 
* 416b1f66be init.sh: initialise variables AFTER path 
* 46f09075c2 init.sh: merge create_pathdirs with set_pyver 
* abf52b0394 init.sh: Set python version only on parent 
* 1e4e3f36f4 init.sh: remove useless command 
* ed83718cf2 init.sh: remove useless comment 
* 8617375799 init.sh: xbmk_create_tmpdir to xbmk_mkdirs 
* 83064459d9 init.sh: move gnupath creation to create_tmpdir 
* 0389d1eadb init.sh: move PATH init to set_env 
* 4aba9ef29e init.sh: check the lock file BEFORE git init 
* fa2c288939 init.sh: return from child in set_env instead 
* 9b1d4dfe82 inject.sh: shorten the nukemode variable name 
* e34651a98a release.sh: rename relsrc to rsrc 
* 1523a67729 release.sh: tidy up nuke() 
* c068efec88 get.sh: remove useless message 
* c660ecde62 get.sh: simplify bad_checksum() 
* 2d13b4c2e2 release.sh: simplify nuke() EVEN MORE, yet again 
* c20e29005f release.sh: use x_ on find command for nuke() 
* 97603a43cf release.sh: simplify nuke() EVEN MORE 
* 534a4d4870 get.sh: move nuke() to release.sh 
* 8b646abe9a release.sh: simplify prep_release_bin() 
* aeb1187a8a release.sh: don't move src/docs/ 
* 8cb0c224a5 get.sh: FURTHER simplify nuke() 
* 8cb23315d9 get.sh: simplify tmpclone() 
* 8d6244bb7f get.sh: fix bad mkdir command 
* 4582a21abf inject.sh: Stronger hash verification 
* fd98310f5b properly exit 1 when calling fx_ 
* e96dfae0b3 get.sh: simplify nuke() 
* 3bfb82cb82 get.sh: fix broken printf statement 
* 9c24b170c2 get.sh: use subshells on try_ functions 
* 4f926ee708 get.sh: simplify try_copy() 
* 36cf7892df get.sh submodules: Don't delete files recursively 
* 398f265359 get.sh: simplify fetch_submodules() config check 
* a3f48f3115 get.sh: simplify fetch_submodules() 
* 142b79b206 get.sh: fix caching of crossgcc tarballs 
* a658265a86 release.sh: Don't run prep_release with fx_ 
* aaa0a1ff93 git.sh: rename to get.sh 
* 2d691c7377 git.sh: Only create destination repo on success 
* 6199bc5b95 git.sh: cleanup 
* 1dd18a9a55 git.sh: Re-implement redundant git downloads 
* 176c0fa1c4 rom.sh: reduce indendation in check_coreboot_utils 
* 584de778f8 release.sh: simplify release() 
* ed8644177b release.sh: clean up the vdir after release 
* 2ca6337b0a release.sh: remove src_dirname variable 
* abfa2d1ec7 release.sh: build in tmp directory first 
* d3ec7e8635 release.sh: remove unnecessary mkdir command 
* b68447e75c release.sh: split up build_release() 
* 4b36ba9765 release.sh: delete tmp/cache from the tarball 
* 5861c25a7c lib.sh: remove rmgit() 
* 1f2c8e47d4 lib.sh: remove mk() 
* 19888e2cb8 lib.sh: move xbmkget() to git.sh 
* 9c5f59cc42 lib.sh: remove mksha512sum() 
* 279b7f20be lib.sh: split up try_file() 
* 3347e3d314 lib.sh: move _ua to try_file() 
* 57f68535a2 inject.sh: remove the hashfiles variable 
* d07bd53b07 inject.sh: define xchanged here instead 
* 47b9a261d7 lib.sh: use fx_ in rmgit() 
* ed9f6338af lib.sh: split up xbmkget() 
* 753af0a7a2 inject.sh: only compile nvmutil if needed 
* 387f4b785b inject.sh: simplified serprog check 
* 31bab5c10c remove another confusing message 
* 6c3ea129a4 inject.sh: Remove confusing path on tar creation 
* 3062f04c45 inject.sh: re-add mac address confirmation 
* cf8ca4cdd6 inject.sh: further cleanup 
* a82ca2da5f tree.sh: only create elfdir in copy_elf() 
* 33debfcf1c tree.sh: simplified srcdir check on make-clean 
* 2acdfefdf9 inject.sh: bring in sync with lbmk 0f931b508a8 
* a170ab4118 cbmk: use x_ instead of err, where appropriate 
* 5cdd377547 mk: use zero exit instead, to run trees 
* c022a14c9e remove useless comment 
* c9325f234e mk: remove unnecessary line break 
* e22593f037 mk: re-split tree logic to include/tree.sh 
* c463e8a52d mk: move release functions to idnclude/release.sh 
* 966a6377a0 mk: add missing error handli for mk -f 
* 718697c0e6 git.sh: re-write tmpclone without caching 
* a5c5089eda git.sh: use setvars for fail variables 
* 7b2671ea26 git.sh: hard fail if git am fails 
* 45b6d3b3ba git.sh: Hard fail if reset fails 
* e320ce60a7 init.sh: Only check XBMK_CACHE if it exists 
* d99bc55f4a also fix the other grub trees 
* c15ee8fc32 fix trying to boot all logical volumes after unlocking an encrypted volume 
* 63cef86bdb init.sh: remove useless export 
* 0a3793ad4e init.sh: also allow XBMK_RELEASE=Y or N 
* 433b5de916 init.sh: Resolve XBMK_CACHE via readlink 
* 5d2c94a8bd init.sh: check XBMK_CACHE is a directory instead 
* f0a0f678bf init.sh: export LOCALVERSION in set_env 
* 542d72192d init.sh: run set_version before set_env 
* 9ccfee43e7 init.sh: Use readlink in pybin() 
* 2f17c5be3b inject.sh: simplified MAC address handling 
* 3900122957 lib.sh: Remove useless command in err() 
* afcd0cfde6 lib.sh: Simplified fx_() and removed fe_() 
* 386f3c3346 mk: Create serprog tarballs here instead 
* 326f0459d9 build serprog using fe_ *defined inside mkhelper* 
* 418fcce9ba rom.sh: build serprog images with fe_ 
* add92cd405 lib.sh: support any command on find_exec() 
* bd5d85569f lib.sh: re-add missing break in fe/fx_ 
* eac3b96ddd git.sh: Simplify git am handling 
* 6e4172b1ba inject: remove unused function 
* 92374e6071 init.sh: New function dx_ to execute path files 
* 1bc8055e28 inject.sh: simplify kconfig scanning 
* ea8f9b59c6 lib.sh find_ex: Write sort errors to /dev/null 
* 0ba013a61d lib.sh x_(): Remove warning of empty args 
* e47324619d lbmk: Replace err with much simpler implementation 
* 2279a1f6f6 singletree/elfcheck: use fx_, not fe_ 
* 1e1e65cb43 rom.sh: Print the rom image path being generated 
* ffdf93bf90 rom.sh: Safer cprom() 
* 1c0c88c7cb rom.sh: specifically check keymaps in cprom() 
* 9342e5bb61 rom.sh: simplify mkseagrub() 
* 4a9376adc4 mk: simplify elfcheck() 
* e2f6e7a410 lib.sh: simplify singletree() 
* 9d91c3da60 git.sh: move singletree() to lib.sh 
* 877f00df1f mk: Fix bad error handling for gnu_setver 
* 0156cd91c8 lib.sh: set -u -e in err() 
* 7f150c3e4f GRUB: Mark E820 reserved on coreboot memory 
* 22d3266a53 lib.sh: Provide error message where none is given 
* 5b2d537123 init.sh: Silence the output of git config --global 
* edfa4a0ddd init.sh: Run git name/email check before init 
* 23755c1748 lib.sh: stricter xbmk_err check in err() 
* 5150bf64a4 lib.sh: simplify err-not-set handling 
* 90bd3e67c4 lib.sh: Add warning if x_ is called without args 
* 78aa78c82e lib.sh: simplify err() 
* 15afad4a2b init.sh: single-quote xbmklock in xbmk_lock() 
* 41bc473276 init.sh: define lock file in a variable instead 
* 4415865ccc init.sh: tidy up xbmk_child_exec() 
* ee686cc86b lib.sh err: add missing redirect to stderr 
* cd979e3b09 lbmk: MUCH safer err function 
* fda09e8923 lib.sh: rename errx to xmsg 
* 8eea01eceb lib.sh: Make x_ err if first arg is empty 
* af309d888b lib.sh: Make err_ always exit no matter what 
* 6e14ab7c09 init.sh: tidy up the python version check 
* 7944fd6297 init.sh: move non-init functions to lib.sh 
* 159ded1c4e init.sh: simplify dependencies handling 
* 7ab7bf19f2 rom.sh: tidy up copyps1bios() 
* a5519f13e1 mk: tidy up xgccargs handling 
* ed441a4ba0 mk: remove useless code 
* e05787d82f init.sh: tidy up pathdir creation 
* 2c3f9e4e7e mk: re-make gnupath/ after handling crossgcc 
* e6d3b5763d mk: tidy up check_cross_compiler 
* 45513d56be mk: re-make gnupath/ for each cross compiler 
* 7314903331 mk: reduce indentation in check_cross_compiler() 
* f6005f17b6 mk: Allow use of x_ on prefix functions 
* 4a32890198 mk: tidy up check_project_hashes() sha512sum check 
* 1d988606ca mk: simplify check_gnu_path() 
* f64b2affb1 inject.sh: minor code cleanup 
* bb5228dc32 init.sh: *Re-create* tmpdirs on parent instance 
* 0c05289152 init.sh: Always create xbmklocal 
* b2c14b6759 lbmk: Unified local ./tmp handling 
* 6a653729a3 lib.sh: redirect find errors to /dev/null 
* 67e06ce368 lib.sh: Fix bad touch command 
* 2c9f3065ee inject.sh: Only build nvmutil once 
* 4ca73f9434 inject.sh: always re-build nvmutil 
* e6c2fd9734 util/nvmutil:  use x, not ?, for random characters 
* 09f6a6b11d lib.sh find_ex: explicitly create the tmp file 
* 2d05cd260d init.sh: Explicitly create the xbmktmp directory 
* e32a6c96d5 init.sh: unified handling of ./tmp 
* 6c7da73782 lib.sh: add fe_ which is fx_ but err on find 
* afb5e7d3d5 lbmk: unified execution on find commands 
* 0b9c797f32 mk: include rom.sh directly 
* a13e53ba16 lib.sh: Simplify rmgit() 
* 61407551ca lib.sh: support multiple arguments in remkdir() 
* 4c2786daba lib.sh: simplify remkdir() 
* 6348e8a93e move x_() to lib.sh 
* a30fd38ae4 init.sh: move setvars/err_ to lib.sh 
* d51b995528 Restore SeaBIOS 9029a010 update, but with AHCI fix 
* 62f9c277f3 Revert "seabios: bump to rev 9029a010, 4 March 2025" 
* 7333d71808 Canoeboot 25.04 Corny Calamity 
* 2da5712128 bring coreboot revs in sync with libreboot 25.04 
* 96c8dfa883 remove unused coreboot tree 
* d66cfa5644 add pico-sdk backport patch fixing gcc 14.x 
* b262db3b87 serprog: Remove pico2 support for the time being 
* 15efc268a1 seabios: bump to rev 9029a010, 4 March 2025 
* 973053479b update untitled 
* 2c97b272b8 coreboot413: add alper's fix to cbfstool for gcc15 
* bbe401f5f9 flashprog: bump to rev e060018 (1 March 2025) 
* 64385b0dd1 lib.sh: Provide printf for mktarball 
* 8a5603f98c seabios: Fix malloc_fn function pointer in romfile patch 
* 892b02a215 dependencies/debian: Fix libusb package name 
* db162c3662 init.sh: fix yet another double quote for dotfiles 
* 41dad0d2c2 u-boot: gru: Disable INIT_SP_RELATIVE 
* db79c0171e u-boot: arm64: Expand our modified defconfigs to full configs 
* f34dd5cf38 u-boot: arm64: Merge our modifications into new defconfigs 
* 99ade886e0 u-boot: arm64: Add new upstream defconfigs 
* a710f63df3 u-boot: arm64: Rebase to v2025.04 
* c3ae4a917d u-boot: arm64: Save our modifications to the upstream defconfigs 
* a576fa4570 u-boot: arm64: Turn configs into defconfigs 
* 34d134f2f2 init.sh: don't use eval to read version files 
* b63612871d init.sh: use backslash for dotfiles in eval 
* 7722e2f0d0 mk: Don't run mkhelpers if mode is set 
* d85ec327c3 mk: condense main() again 
* 4ff7cd3d77 init.sh: make git name/email error more useful 
* ec287ca69e init.sh: move git name/mail check to xbmk_git_init 
* f89e5ad87a init.sh: tidy up the git name/email check 
* 76d99b8cae mk: make main() more readable 
* f3caaf394e mk: move git check to init.sh xbmk_set_version 
* f30892e92f init.sh: tidy up xbmk_init() 
* cbf486789d mk: move git_init to init.sh 
* 2c39a2bc7b init.sh: minor cleanup 
* d6d8ee1d4b init.sh: clean up setvars 
* ef78f88117 init.sh setvars: make err a printf for eval 
* 3221ca7742 init.sh: merge xbmk_child_init with xbmk_init 
* 723e979c8c init.sh: split xbmk_child_init into functions 
* 0d86ef50ac init.sh: move parent fork to new function 
* 68d5660cca init.sh: Provide more complete error info 
* 6ebb11cf9c lib.sh: move _ua to the xbmkget function 
* 2c8570c07a move variables out of init.sh to others 
* 75f6b1cc1e lib.sh: rename vendor_checksum 
* 5a294b183e lib.sh: move singletree() to git.sh 
* 7943fab580 lib.sh: move cbfs() to rom.sh 
* a16d9f35a2 re-split include/init.sh to lib.sh 
* 6d54f46148 rename include/lib.sh to init.sh 
* cf961e00b7 lib.sh: introduce more top-down function order 
* 7dbd02fcd0 mk/git.sh: remove tree_depend variable 
* 7c6039a086 git.sh: remove unused xgcc linking feature 
* 2c419396d3 mk: remove unused variables (ser/xp) 
* f6d81c4751 mk: simplify main() 
* cc1b025df2 lib.sh: use realpath to get sys python on venv 
* e281ad8659 lib.sh: Force use of System Python to prevent hang 
* 88799b8db6 lib.sh: further condense the python check 
* 03ff6f38b9 lib.sh: further simplify the python check 
* 4d4ab8ce59 lib.sh: condense the python check 
* 87edc96778 lib.sh: simplify mk() 
* 63e07a44df lib.sh: simplify cbfs() 
* e18af2022a lib.sh: simplify the python check 
* f899a3225d mk: remove mkhelp() and use x_() instead 
* 6bd6f14a19 mk: simplify handling of trees() 
* 46e6169495 lib.sh: add missing copyright year 
* 7786ea4250 mk: don't print confirmation of git pkg.cfg 
* d9908ca648 lib.sh: Fix python3 detection when 'python' is python2 
* 8affdc0bcb Update the GRUB revisions 
* b665d09442 Revert "git.sh: minor cleanup" 
* ec25425e55 lib.sh: perform root check even earlier 
* dbf40653b2 lib.sh: tidy up opening logic (put it together) 
* 46fb5786e0 lib.sh: do root check before python check 
* 0fa1265106 git.sh: minor cleanup 
* c8c5a0e017 lib.sh: simplify mktarball() 
* 76e7c35ae2 mk: tidy up check_gnu_path() 
* 2fccddb9d0 mk: simplify check_project_hashes() 
* b399252309 lib.sh: fix missing s/TMPDIR/xbmktmp 
* 72c83cdaeb cbmk: don't handle TMPDIR directly 
* 86a96b22a5 rom.sh: minor cleanup 
* 374baddbcb inject.sh: yet even more code cleanup 
* e644717077 inject.sh: even more cleanup 
* ec24bc4915 inject.sh: minor cleanup 
* 5469f483fc git.sh: remove unnecessary comment 
* 991a98caec git.sh: remove link_crossgcc() 
* 1915c84376 git.sh: remove move_repo() 
* 515c1782ad git.sh: remove prep_submodule() 
* 519d93691f git.sh: make git_prep command clearer 
* ca0aab3bfe simplify a few file checks 
* 85b1996afa rom.sh: remove unnecessary check 
* c3910fbc5f cbmk: minor cleanup 
* 6fc23805cb lib.sh mktarball: stricter tar error handling 
* 58a17c8d15 mk check_project_hashes: handle error on sha512sum 
* d65d93b300 Revert "lib.sh: use eval for the command in x_" 
* 0aace67a54 lib.sh: fix bad eval writing version/versiondate 
* 7c98661271 lib.sh: use eval for the command in x_ 
* e63c14677f mk: use eval to run mkhelp commands 
* f4e5879534 mk: tidy up the switch/case block in main() 
* 85373b9b91 mk: tidier error handling 
* d0b95ffe6e lib.sh: tidy up the error handling 
* caaaf46540 rom.sh: tidy up error handling 
* 7bd9fb9a7b git.sh: clean up fetch_project() 
* 4d15c476b6 mk: Remove unnecessary argument checks on trees() 
* 94a8fa816f inject.sh: properly call err_ in fail_inject 
* ca6a3c8958 remove xbmk_parent, handle forking in lib.sh 
* f3c757c2d2 lib.sh: define x_ right after err_ 
* 2b9881639f mk: minor cleanup 
* 3b2718bd9d lib.sh: minor cleanup 
* 8999d30b96 rom.sh: minor cleanup 
* 32242cc03b inject.sh: tidy up check_release() 
* f439230604 inject.sh: tidy up xbmk_inject() 
* bbc28e73f8 inject.sh: tidy up readcfg() 
* cdcdadf097 inject.sh: tidy up patch_release_roms() 
* ff35a6a300 inject.sh: tidy up modify_mac_addresses() 
* 67c8338acf script/trees: merge with mk and delete script/ 
* d4dba9140c mk: remove the legacy "roms" command 
* 4cb9db2ba2 lib.sh: write version/versiondate to dotfiles 
* f0dcaca4ee lib.sh: hardcode projectname/projectsite 
* ba5487aa34 remove update symlink 
* 062e057e87 move build to mk 
* 02785da1af trees: unify the execution of mkhelper commands 
* 6405f92bd4 trees: tidy up configure_project() 
* 019b885cd8 build: make coreboot building an else in "roms" 
* f2f4aaefb7 trees: don't build dependencies if dry=":" 
* e5fefd8074 trees: unified handling of flags 
* 6696e69f01 trees: simplified handling of badhash/do_make 
* 28ef540e74 trees: don't set mode on ./mk -b 
* dd60b2ee84 trees: don't set mod on ./mk -d 
* c429fc8e3f trees: don't initialise mode to "all" 
* c5dacebe44 trees: clean up some comments 
* 8d27e6c786 inject.sh: simplified readkconfig() 
* ca5618628b inject.sh: replace xbmkpath with xbmkpwd 
* 9130750ebb lib.sh: double-quote pwd to prevent globbing 
* 12e600bf5c cbmk: unified PWD handling (work directory) 
* 891a7d8e63 lib.sh: initialise PATH if it's unset 
* 18689092d3 move XBMKPATH to include/lib.sh 
* dcc7f10ec7 cbmk: use pwd util, not PWD environmental variable 
* 6e6b54cc24 clean up a few semicolons in the build system 
* 7b7642dc90 trees: err if first argument is not a flag 
* c2ddb7cc1f trees: err if no argument given 
* aa306663c3 trees: set dry=":" on ./mk -f 
* e246c22953 trees: clean up initialisation of the dry variable 
* 0ee7f48c8c trees: initialise mode to "all", not "" 
* 1211636df2 trees: don't abuse the mode variable on -f 
* ec14ff58da trees: Add missing flag to error output 
* d7063fc20d cbmk: minor code formatting cleanup 
* 2c05e7e6ba grub/xhci: Remove unused patch 
* 112c756a70 util/nvmutil: remove excessive comments 
* b74a7f0cc6 Bump GRUB revision to add 73 security patches 
* bce7fceb56 Update pico-serprog revision 
* dca11e70ed util/nvmutil: Fix bad error messages on R/W 
* 1b9073b39b util/nvmutil: hardened pledge on help output 
* b52fc1fe66 deps/arch: genisoimage belongs to cdrtools 
* 3a3b935b8b util/nvmutil: only set mac_updated at the end 
* 438ebb1647 util/nvmutil: Fix bad comparison 
* a70ab825b9 util/nvmutil: allow ./nvm gbe MAC 
* 471ce4fbdc util/nvmutil: move "e" to swap() 
* db9f7cf588 util/nvmutil: Only read up to 4KB on larger gbe 
* 71f6b631e3 inject.sh: Don't show gbe filename on inject 
* d96d370754 util/nvmutil: fix minor mistake (line break) 
* 698b9ff63b util/nvmutil: do setmac if only filename given 
* a0d7c564fb util/nvmutil: don't say write not needed if errno 
* a5549b43f8 util/nvmutil: print dump *after* modification 
* 5540713d16 util/nvmutil: verbosely print the written MAC 
* bbdd985bea util/nvmutil: minor cleanup in cmd_dump 
* 7849f23f81 util/nvmutil: show nvm words written on writeGbe 
* 38bb650f12 util/nvmutil: clean up readonly check on writeGbe 
* ae5772e8f7 util/nvmutil: Remove useless gbeFileChanged var 
* 43e583d0b9 util/nvmutil: reset errno if any MAC updated 
* 4ea5484e02 util/nvmutil: reset errno when writing a MAC 
* 67ac52df84 util/nvmutil: show total number of bytes read 
* 97beb4305b util/nvmutil: rename tbw/bw to tnw/nw 
* 3c6198a780 util/nvmutil: err if bytes read lower than nf 
* 508509e4e5 util/nvmutil: err if fewer bytes written 
* 5c9edb8ffe util/nvmutil: Show bytes written in writeGbe 
* b44c311db7 util/nvmutil swap(): ensure that no overflow occurs 
* dcfde2e318 util/nvmutil: make swap() a bit clearer 
* 06f30b9543 util/nvmutil: make 0x3f checksum position a define 
* cac598f79e util/nvmutil: make 128 (nvm area) a define 
* d176b56c58 util/nvmutil swap(): Only handle the nvm area 
* 47d7283462 util/nvmutil: move write checks to writeGbe 
* b01995d167 util/nvmutil: make cmd_swap its own function again 
* 3dc1fedbe8 util/nvmutil: minor cleanup 
* e2be86695a util/nvmutil: allocate less memory for setchecksum 
* 741ef57efc util/nvmutil: Further reduce memory usage 
* af6d6d6d59 util/nvmutil: Remove unnecessary buf16 variable 
* 16d760d738 util/nvmutil: Only allocate needed memory for file 
* 6c2a8010e2 util/nvmutil: Remove unnecessary buffer 
* 252e2bdb71 util/nvmutil: Show specific error for bad cmd argc 
* 59942196a5 util/nvmutil: cleaner argument handling 
* 21400784de util/nvmutil: extreme pledge/unveil hardening 
* 8f99e386a4 util/nvmutil: more minor cleanup 
* 11eb4df755 util/nvmutil: more granular MAC parsing errors 
* dc376cca14 util/nvmutil: more cleanup 
* e6f4d11c5e remove errant comment in nvmutil 
* 90f2c22826 util/nvmutil: support 16kb and 128kb gbe files 
* fef744d68e util/nvmutil: Prevent unveil allowing dir access 
* d68d0a8d75 typo: nvme should say nvm in nvmutil.c 
* fe55e33254 util/nvmutil: General code cleanup 
* 232f6b8610 grub/xhci: Add xHCI non-root-hub fixes from Nitrokey 
* a6c9ebd11f add gnults-devel to fedora 41 dependencies 
* 1a3c74a974 grub.cfg: scan luks *inside lvm* 
* d74e906652 grub.cfg: Scan *every* LVM device 
* 302d116c28 snip 
* 3730a63edd Canoeboot 20250107 release 
* a223a0db89 update u-boot/grub/seabios version displays 
* 23db77a030 inject.sh: MAC address changer (not vendorfiles) 
* 514f61d6ba pico-sdk: Remove old, unnecessary patch 
* 465b18eff3 remove errant symlink 
* ec7e8d3a8f Bump coreboot/next to 2f1e4e5e85, 31 December 2024 
* 8829539531 rom.sh: don't run mkpicotool on dry builds 
* 62d655b8dd pico-sdk: Import picotool as a dependency 
* adf1a2e1a4 lib.sh: Much safer python version check 
* 1b1dae36d2 set up python in PATH, ensuring that it is python3 
* ac6b7c9e3a add libx86 to arch dependencies 
* 24aa70869e add less to arch dependencies 
* d731b07aa7 lib.sh: Set python after dependencies 
* d57303e080 update my copyright years on modified scripts 
* bf5979f0b2 lib.sh: Fix unescaped quotes in chkvars() 
* 9baf6a72a7 Revert "fix more unescaped quotes in eval" 
* c1dd3da298 fix more unescaped quotes in eval 
* caa18bdcb3 fix ./mk dependencies build issue 
* 43ab374ec7 rom.sh: Remove errant GRUB modules check 
* 2916aee7ab submodule/grub: use codeberg for 1st gnulib mirror 
* 8e30ea27ef util/nvmutil: Update AUTHORS and COPYING files 
* 376b1301f5 util/nvmutil: Describe nvmutil in help output 
* da32fe1928 util/nvmutil: Remove the correct binary on uninstall 
* 54809f06bf util/spkmodem-recv: More correct Makefile 
* ac6f3884ad util/nvmutil: Honour the INSTALL variable 
* e993212146 util/nvmutil: Don't clean when doing uninstall 
* 21c87a6fbf util/nvmutil: Proper DESTDIR/PREFIX handling 
* 5ed1114443 util/nvmutil: Set CC and CFLAGS only if unset 
* 1e494f4530 util/nvmutil: Capitalise BABA 
* ba71891687 util/nvmutil: Add uninstall to Makefile 
* 1310c9a58c util/nvmutil: Add distclean to Makefile 
* faa78f53c2 util/nvmutil: Make the GbE checksum a define 
* 227c396ca2 util/nvmutil: nicer hexdump display 
* 07e8b9f35e util/nvmutil: show the correct hexdump order 
* 76d87782a8 lib.sh mktarball: cleaner if statement 
* 3d1fea0977 fix lbmk shellcheck errors 
* 4862f6a348 lib.sh and rom.sh: update my header 
* 8bdfd31498 rom.sh: handle tarballs in mkcoreboottar 
* 13194ec94a util/nvmutil: Obey the 79-character per line limit 
* ce0fdf183d util/nvmutil: Tidy up copyright header 
* f3feac0728 util/nvmutil: Fix another straggler 
* 145ff612c1 util/nvmutil: Tidy up pledge calls 
* 4a83659885 compile rmodtool alongside cbfstool 
* a22f272dfe fedora41/dependencies: add libuuid-devel 
* de26e984df add uuid-devel to fedora41 dependencies 
* 4ce13dab7a support ./mk dependencies fedora reinstall 
* 9d60470a97 fix missing semicolon in grub nvme patch 
* 2d860d6f66 bump seabios to rev 1602647f1 (7 November 2024) 
* 5d82a911b9 Bump GRUB revision to 6811f6f09 (26 November 2024) 
* b75d32be72 flashprog: Disable -Werror 
* 22206cadeb bump flashprog to revision eb2c041 (14 Nov 2024) 
* 1ebdb20d97 replace liblz4-tool with lz4 and liblz4-dev 
* 012f530656 lib.sh dependencies: support --reinstall argument 
* 33206cae60 move xbmkpath to XBMK_CACHE/ 
* 4a4f7abf0e Revert "Remove legacy update/vendor commands" 
* 71bccad345 Fix U-Boot build issue with Swig 4.3.0 
* 2608bea771 use command -v instead of which 
* 3dc3a557db trees: remove unnecessary subshell 
* dbf8bef5ff trees: only symlink host gcc/gnat to build xgcc 
* cd93e1b615 trees: correction on check_gnu_path 
* 57fafb0b73 trees: match gcc/gnat versions both ways 
* f167d4aeb9 Merge path.sh into script/trees 
* 444154c002 path.sh: Further cleanup 
* c25ea91783 path.sh: More thorough gcc/gnat version check 
* 12221b2828 path.sh: minor cleanup 
* 02b1a45c6b path.sh: remove unnecessary shebang 
* 5a5a7c37f5 Fix globbing issue in cbmk 
* 69c5f8911d remove auto-confirm on distro dependencies 
* 7ee6ec0ce9 Mitigate Debian Trixie/Sid GCC/GNAT version mismatch 
* f1d9ecc468 rom.sh: Name pico directory serprog_pico 
* bb6c31aa16 add 2024 to Riku's copyright header on rom.sh 
* 3d738af507 pico-sdk: update to 2.1.0 
* fa6ed8816e pico-serprog: enable building for multiple pico chips 
* 31a0ea3537 add spdx headers to various config files 
* dd6f914186 git.sh: don't initialise livepull globally 
* 417accd9e0 lib.sh: Support copying files locally 
* 7b8bda9977 lib.sh: Safer exit from ./mk dependencies 
* 63eb43ec39 dependencies/void: add missing escape character 
* daefe4f895 rom.sh: support grub-first setups 
* 73920cb0a1 rom.sh: insert grub background in cbfs not memdisk 
* 5ebeb65cbf add tarballs and signatures to gitignore 
* 5053354644 fix another very stupid mistake 
* df509aac63 fix the stupidest bug ever 

This is about 500 changes.

Revision releases

When certain bugs are found, releases may be re-built and re-uploaded. When this happens, the original release is replaced with a revision release.

Revisions are numbered; for example, the first post-release revision is rev1.

25.06 (30 June 2025)

No revisions, thus far. The original 25.06 release is the current revision, so it could be considered rev0 (revision zero).

Build testing

This release was built on the latest Debian 12.10 Bookworm release, as of this day. It was also build-tested successfully on the latest Arch Linux updates as of 26 June 2025.

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

Subscribe to RSS for this site

Site map

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