25 December 2025
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.
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..
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:
b745534eb231d3699ec57949f16a9a7bd5b79385, which contains various bug fixes and feature improvements.ffcf92fb.25b7f6b93 from December 2025. This is a little bit after 2.14-rc1 and adds a lot of bug fixes and new features. For example, the PHC argon2 implementation could be dropped because GRUB now imports a newer version of libgcrypt, which supports argon2. Other improvements as well, such as a general support for more ciphers, or support for things like BLS and UKIs; BLS and UKIs are untested in the the 26.01 release, but there is no reason in principle why they shouldn’t work..def7aa7094 from December 2025.In descending order from latest changes to earliest changes:
eval statements; eval much be used with care, in sh, and avoided if possible, because it can very easily allow code injection vulnerabilities if handled carelessly. Even if the code is currently correct, mistakes could be made in the future, and it’s unknown what person might touch your code in the future. It’s always better to just assume the worst. There were no actual known bugs caused by eval, because Canoeboot has an extremely sensible and conservative build system design.In descending order from latest changes to earliest changes:
chromebook.html) to support Google Chromebooks, by importing (and adapting) configs from the MrChromebox coreboot distribution into Canoeboot’s build system. This feature is intended for completion by the time of the full Canoeboot 26.01 release, but it was still work in progress on the initial 26.01 RC1. This is being done for Libreboot, and the Canoeboot version will support up to Intel Haswell generation.get.sh, the git remote caching was re-implemented in such a way that the cached path corresponds directly to the URL where the code was hosted. This is done not only per-project, but per remote in each project; we have backup remotes for each project. In this way, the caching is much more reliable, because we no longer store multiple remotes in a single Git repository. This also allows us to use a diverging fork of a project, so long as the target revision exists in both trees. This is a prerequisite step before implementing support for more than two remotes per project, which will be used in the future to support multiple different forks of coreboot, without needing to write a lot of bloated custom code for what are essentially the same projects (from Canoeboot’s perspective).init.sh: Only ever create the cache/ directory here, because we previously created it elsewhere. We must ensure that we always have reliable and centralised handling of certain critical directories.sha512sum from sbase, instead of relying on the host implementation. This increases reliability by virtue of increased consistency. The --status flag is no longer used, because this is specific only to the GNU implementation of sha512sum. Sbase source code is preserved, by building a temporary copy of it and then placing the binaries out of tree. (out of source builds)sbase project into Canoeboot’s build system, for reliably consistent functionality in the sha512sum command. This could be used for other commands in the future (sbase implements an entire Unix userland comparable to e.g. coreutils, but the code is much cleaner and extremely reliable).get.sh: Support -F flag which always pulls down new code from a given upstream, even if the target revision is already cached locally. This is useful if you want to use the cache for something else, externally to lbmk. This is used during development, when updating code revisions, otherwise you would have to use the cache manually. By using it via lbmk, we can ensure more reliable operation in a way that reduces the risk of build system corruption via stale artifacts (though in practise, there will usually be a backup repository anyway, if something is wrong with the main one as lbmk is designed with a lot of redundancy).rom.sh: support fspgop init mode - really doesn’t matter, for the user’s perspective this is similar to using libgfxinit and works similarly, in payloads like SeaBIOS and GRUB. By “support”, I mean that lbmk will not put libgfxinit in the file name for these images.bsdtar and others, in a few places. This is part of a general desire to phase out e.g. 7z, unar etc, over time, since bsdtar supports nearly everything. Some work still needs doing to fully get rid of unar, because the KBC1126 EC firmware files still only work with unar at the moment.init.sh: TMPDIR is now a directory inside the build system work directory, instead of /tmp. This eliminates the risk that the user may have a tmpfs for /tmp; because we had to assume this was the case, this limited the amount of data we could safely write inside TMPDIR. Of course, it’s still good to be frugal with use of TMPDIR regardless, but this is just another example of build system reliability improvements.release.sh: Removed support for the -d flag, which allowed one to create a custom path for release files to be made available. We don’t really need it, and the error handling for such a feature needs to be quite complex. This was part of a general effort to clean up and simplify the build system.elf/ again - because of the change shown below, we can once again do this safely, since they are deleted as needed. Images are padded to avoid use, wherein the padding is only removed in versions that have the payloads added (this is for installation safety).include/tree.sh: delete individual target builds if needed. This is possible now, because target builds go in subdirectories under a directory for the entire tree. Now when you change a target config, it gets rebuilt automatically, but without needing to delete the entire tree (this could be considered a bug fix, as this was a previous lbmk design flaw, now corrected).In descending order from the latest changes to the earliest changes:
cmocka coreboot submodule, by default. This is used for various tests, but coreboot’s default behaviour is to try using the host’s version of cmocka. This is not ideal, because it means that such functionality is inconsistent; the argument against doing so is the same one that generally lead to the introduction of crossgcc. Therefore, coreboot’s build system is modified to make it use its own specific version of cmocka by default. The operator can still override this by configuration, so no functioality was last.grub/xhci: Rename to grub/xhci_nvme, to make it clear that this tree has both patchsets. Some users were confused thinking the xhci branch does not contain NVMe drivers, even though it does!include/tree.sh: Place target builds under tree/target/ - this makes it easier to handle deletions, when project files change, because they’re all subdirectories under the elf directory for the entire tree, of a given upstream project.include/rom.sh: bump pcsx-redux copyright date to 2025. This is because new changes from 2025 were imported when the PCSX-Redux Open BIOS was updated.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):
init.sh: Explicitly export C.UTF-8 as the system locale, rather than just C. This is more standard, and fixes a few minor build issues, for example in the GRUB project.get.sh: Return from clone_project if multi-tree, to fix a previous bug; previously, both single- and multi-tre ewould be handled by this function, with hacks that were quite buggy. Now the difference between the two is handled much more robustly.get.sh: Always assume that loc is not empty. We previously had a bug where sometimes for example, the backup remote on a given project was stored in the same location as for main. This was a relic/regression arising after the design change whereby separate clones are created for each remote, rather than handling multiple remotes in the same project clone.get.sh: Use --keep-cr in git am commands, for compatibility with code repositories that use CR-LF line endings. This is true of edk2, which I am working on integrating into Canoeboot for certain boards.get.sh: Use git show instead of git whatchanged, for checking if a revision exists in cache/; the whatchanged command was deprecated, and now results in an error state (by default, unless changed by the user) if used on a modern version of Git.get.sh: only pull code down if a given revision is not cached locally; this fixes the issue where bandwidth would otherwise be wasted needlessly. This is part of a general effort to make the build system more efficient, especially the parts that deal with the internet.init.sh: Create TMPDIR after suid check, otherwise it might be created as root, which would disable lbmk in a way not obvious to the user, for the very reason that lbmk prevents most tasks from being run as root. This is for security reasons.init.sh: Write-protect the lock for on startup of the build system. It is deleted when the main parent instance exits. This may also be considered a general bug fix, but not really, because it doesn’t fix the problem that the lock file could be removed by someone/something else. However, by setting chmod -w on it at runtime, it reduces the chance of accidental deletions, including by (for example) programmers errors in lbmk! So this is more of a preventative bug fix.release.sh: Delete the xbmkwd directory inside source tarballs. We previously caused an empty one to be present there; not really a problem, but it is unintentional and undesired behaviour.date is a non-GNU implementation, because we currently rely on use of GNU-specific features in date, for initialisation of Git when working from release archives.init.sh: Added proper input sanitization to the version strings, because these are essentially user-inputted (it’s based on use of git tag). This is to prevent certain as-yet undefined vulnerabilities e.g. code injection.PWD checks - deny use of symlinks to the main script. This is extremely important, due to the design of xbmk; it assumes that the work directory is always the same place that mk is. We could have complicated and error-prone logic to cd inside of a subshell, but that would just be bloat.get.sh: Temporary directories for clones are now placed properly inside of TMPDIR, which (with use of mktemp) greatly reduces the chance of race conditions, if the same directory was to be used by multiple instances all at once.lib.sh and rom.sh: Much stricter error handling for mktemp.TMPDIR handling. We used to check whether the build system was running a child instance, based on initialisation of TMPDIR, but this is inherently unreliable. Instead, child instances are now detected by the presence of a lock file, and this lock file contains the path written to TMPDIR; if they don’t match, or there is none, then we know the build system is running in its main parent process; and of course, the presence of a lock file will make a new parent process exit, to prevent corruption.--no-install-recommends is now used. This prevents a lot of unnecessary dependencies being installed, so that we don’t waste as much disk space on the user’s computer.stderr to /dev/null first, before grep. The way sh works, output to a file with > or >> is done left-to-right, though in practise this is implementation-defined. There was no observable difference either way, but this is more standard behaviour nonetheless.x_ command wrapper, for error handling. This is lbmk’s way of implementing something similar to set -o pipefail, while only using POSIX sh features.include/lib.sh: Don’t break erroneously in a context where it’s not used.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:
tree.sh (and get.sh): Implement a forcepull macro, for easier reading of the logic whether to skip pulling from upstream if a given revision exists (see: -f vs -F flags in mk).tree.sh; convert do_make into a macro. This is used to tell whether to do a full build, useful when doing dry builds for example.setvar shorthand. This improves readibility of the scripts, for most people.if_dry_build macro in tree.sh and rom.sh, similar to the if_not_dry_build micro. It makes certain shortcode notations easier to read, when dealing with the idiosyncrasies of -d (dry) vs -f (full) builds.tree.sh: Renamed the xtree variable to xgcctree, for code clarity.tree.sh: Renamed the btype variable to buildtype, for code clarity.tree.sh: Renamed the variable f (with underscore) to flag, for code clarity.dry variable to if_not_dry_run, which serves the same purpose, as essentially a macro in sh.setcfg function, which then allowed me to remove a bunch of eval commands; now I just use the dot command to include files, and still with proper error handling.init.sh: Generally split up a lot of larger functions into smaller functions with stubs.get.sh: Rename try_file to try_fetch, because it’s actually a generic function that also handles local file copying, not just downloads from the internet.init.sh and tree.sh: PATH directories are now inside the proper TMPDIR, not cache/ - this reduces the chance of stale files being left behind and used by subsequent and/or other instances of xbmk.xbloc variable. We previously did TMPDIR inside /tmp, so we had to assume the user might have a tmpfs /tmp with limited memory available; we therefore maintained a less-than-reliable disk-based system of tmpfile handling; Unix doesn’t have much flexibility here, so the TMPDIR variable is the only official one that defines such a path. Because we now force TMPDIR to be inside the xbmk work directory, we no longer need a separate system of tmpfile management. We can just do everything inside of the proper TMPDIR.get.sh: Remove unused variable repofail.get.sh: in the function xbget, use of eval has been greatly reduced. The eval function should be avoided when possible, because if misused, it could easily lead to code injection vulnerabilities.xbmk_set_env; it is actually a generic function that handles many different types of tasks, so it is now a smaller shim and logic has been split out../mk.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
This HTML page was generated by the Libreboot Static Site Generator.