Libreboot 26.10 “Ominous Olive” released! With full UEFI support.

Leah Rowe

15 October 2026


Return to index

Article published by: Leah Rowe

Date of publication: 15 October 2026

You can find today’s release in https://rsync.libreboot.org/stable/26.10rev14/ or you can use one of the mirrors.

Libreboot is free, open source boot firmware replacing proprietary BIOS/UEFI firmware on supported Intel/AMD and ARM64 hardware. It initialises the hardware inside your computer such as the CPU or memory controller, configuring the machine in such a way as to enable use of an operating system like Linux or BSD at boot - and now Microsoft Windows is also compatible because Libreboot has added full UEFI support via MrChromebox EDK2 payload. Libreboot offers greater security and customisation compared to proprietary firmware; its goal, plainly, is to rid the world of proprietary software and to do that, we therefore try to provide firmware that is extremely easy for non-technical users to understand.

Today’s release changelog is relative to the previous Libreboot 26.01 release.

First thing’s first. (and yes, you read the previous paragraph correctly)

A strongly anti-AI policy was added to a new file: AGENTS.md in lbmk. This is the most important change in the release. Now everything else:

The first major change is:

Over 200 Intel/AMD Chromebooks added

Check the list to get a full list of Chromebooks. Libreboot supports most of them!

The full list of boards is quite long, so it’s shown at the end of this article. All of them!

MrChromebox supports nearly every Chromebook, and this release imports all boards from that project. This includes everything up to the most recent Intel and AMD hardware.

Imported over 200 currently supported Chromebooks from the MrChromebox coreboot distro. Baytrail (Kip) tested - others need testing. Source-only in this release (must build from source, no binaries provided).

This was done with a utility I wrote at util/mrimport/ which generates configs for lbmk, including revisions and submodules. I made further tweaks manually; further updates upstream can be synced in Libreboot by diffing again the output of mrimport between revisions, adapted into Libreboot irrespective of the latter’s modifications which are numerous - and will be covered next.

Libreboot makes these modifications to MrChromebox coreboot, in its version:

The additional payloads are, as above, available in the boot menu via ESC keypress at startup. iPXE is also enabled by default, as in upstream, on specific boards.

This is NOT a fork of MrChromebox, which is to be regarded as Libreboot’s upstream on Intel/AMD Chromebooks. Efforts will be made, as with regular coreboot, to remain as closely in sync with it as possible at all times. I have worked extensively with MrChromebox, and even submitted a few minor fixes to his project; he also implemented CBFS-based VBT and GOP handling per my request, which I will integrate post-release.

Regardless, MrChromebox’s own installation scripts should work, with Libreboot images, so check out MrChromebox documentation for installation. Despite changes, Libreboot’s setup remains behaviourally compatible with the MrChromebox one and, thus, MrChromebox tooling should still work alongside corresponding documentation.

This is made possible by a new feature in Libreboot’s build system: support for an arbitrary number of upstreams per project. We still provide regular coreboot on non-Chromebook mainboards.

Yes, over 200. I counted. All automated. My scripting and my fastidiousness ensured that what I imported and configured in lbmk closely matched upstream, and I’m quite careful at maintaining my own divergence from it inside Libreboot.

Yes, Libreboot runs on Chromebooks now!

15h.org fork for Fam15h

E.g. KGPE-D16. We use the coreboot fork from 15h.org now, on AMD Fam15h mainboards. This uses AMD AGESA source code instead of Timothy’s custom init code. It has much more reliable raminit and CPU initialisation; more RAM also supported. Many bugs are fixed. IOMMU works, I also saw that they mentioned TPM is fixed in their version, now our version also.

Regular binaries with SeaBIOS and GRUB payloads provided, with GRUB provided via SeaGRUB configuration.

Basically, these boards actually work for the first time.

EDK2 UEFI payload by default

Most boards have EDK2. You can just grep lbmk to find which target configs don’t define payload_edk2 to know which ones don’t - nearly anyone using Libreboot will have EDK2 available for their board, in this current release.

EDK2 is Intel’s reference implementation of the UEFI specification, for booting. It’s typically used by vendors, in proprietary forks of Intel’s BSD-licensed code, but Intel’s reference code is Free Software. We use their reference code, and full source code is provided in this Libreboot release. EDK is short for: EFI Development Kit.

More specifically:

We use a fork of EDK2 provided by MrChromebox, which specifically offers use of EDK2 as a generic coreboot payload. This is a complete, industry-standard UEFI implementation capable of booting any compliant operating system.

All. Nearly all boards use it in Libreboot now, even older ones e.g. ThinkPad X200. Tested on all platforms. Older, 32-bit-only mainboards still use the setup from the previous release, while virtually all 64-bit-compatible hardware now use EDK2. EFI builds of GRUB and SeaBIOS are provided in flash, accessible from the EDK2 setup menu (press ESC at boot time when prompted), for backward compatibility with existing Linux/BSD installations in Libreboot.

EDK2 support was integrated as a prerequisite for Chromebooks, but then it was extended for use on all previously existing supported mainboards in Libreboot. It even runs well on really old machines e.g. ThinkPad T500.

All Libreboot boards now use an open source UEFI implementation by default, where feasible. All of them, and it’s by default - the bare metal GRUB and SeaBIOS coreboot payloads have been removed, replaced by EFI versions that are backward compatible.

We previously did not provide UEFI at all, except for U-Boot on a few select mainboards. We now provide full UEFI, with all four freedoms intact, on nearly every mainboard that Libreboot supports.

All of the following operating systems were tested and confirmed working, on various Libreboot machines using EDK2:

Modern computers and operating systems are all UEFI, and this new setup can boot basically all of it reliably. More testing will be required, but this is battle-tested code and it has been used extensively in coreboot by many users, for many years. Libreboot finally has it as well.

This change alone is part of a much wider effort to modernise Libreboot, and I’m only getting started. The next Libreboot releases will draw heavily on this, as EDK2 is pretty much the expected payload on a lot of modern coreboot setups these days. Integration of EDK2 removes all limitations in Libreboot, allowing us to support much newer hardware and it basically makes Libreboot much easier to use; I expect Libreboot to become much more popular and useful over time, as a result.

Some caveats and extra notes are provided at the end of this release page, for migration purposes. For example, despite boasting about all, older 32-bit-only hardware still use bare GRUB/SeaBIOS. Nearly all boards use EDK2 however!

Modern GPU support (via EDK2)

Finally, some notes about graphics cards that may be of interest to the more demanding users.

EDK2 alongside PCI-E relocatable BAR (rebar) means that you can now use modern graphics cards that require allocations above 4GB. Rebar is not enabled by default, but you can enable it in menuconfig (coreboot). Enabling it causes breakage of Intel GPU video output on libgfxinit in testing, and no fix was found yet, so rebar is disabled by default.

PCI-E Option ROMs are enabled by default where necessary, for EDK2 builds. This means you can use it on desktops with graphics cards. Tested on several desktops (Dell OptiPlex 9020 SFF and 5050 SFF).

On boards with only external GPU, rebar can be left enabled by default. On systems with functioning integrated graphics, accidental enablement of rebar can be remedied by inserting a graphics card; when the video output in the payload does become broken, the Linux i915 video driver still initialises video framebuffer properly in KMS/DRM.

This will be added to general documentation, pending fixes upstream. Note that even with this issue, Linux video output works fine. This will be corrected and rebar enabled by default, on a future Libreboot release.

Upstream revisions

Nearly all major upstream revisions updated:

The 4.11_branch tree of coreboot was removed, because we now use the 15h.org fork of coreboot on AMD Fam15h hardware. This is much improved, with proper AGESA-based initialisation which initialises CPUs and memory controller more reliably. More RAM is supported, and several features were fixed too e.g. IOMMU and TPM.

The use of multiple coreboot upstreams was enabled by a design improvement in lbmk that makes all projects multi-tree, just with some projects ony having one tree in use. We can have N number of upstreams per project now, enabling use of forks.

The coreboot update brings in GCC 15.2, MPC 1.4.1, Nasm 3.02, acpica 20251212 and binutils 2.46.1 on crossgcc.

NEW hardware support

Over 200 chromebooks currently supported by MrChromebox have been imported and adapted for use in Libreboot. They all compile. All of them. I repeat:

More hardware added besides Chromebooks:

We add a GRUB EFI build inside EDK2, for parity with Libreboot’s older GRUB payload setup. The EFI payloads work very much the same.

Use of EDK2 makes it easier to support newer machines, which will be the focus from now on. EDK2 came first, as part of a general modernisation effort; newer Intel and AMD hardware will be added over time, making exclusive use of EDK2 payload by default.

Feature changes

This is very much a features release. A lot of feature changes were made!

Design changes

A lot of major design changes have been made!

Config changes

Bug fixes

Nvmutil changes

A lot of changes were made to util/nvmutil/ to the extent that it deserves its own release log:

NOTE: This applies to the standalone version of nvmutil. There was an attempt to rewrite it in a much larger utility, mentioned in the following section about canceled changes for this release (see notes below about libreboot-utils).

General cleanup

Roughly one thousand lines of dead code were cleaned out of the build system, but several hundred more were added due to new feature changes. Overall, the amount of code in lbmk has been reduced, in spite of its advances in this release.

Specific cleanup includes:

Canceled changes

A few changes were worked on, but did not land in this release. They pertain to two major projects:

util/libreboot-utils

This was an extension of nvmutil that later became a generalised set of utilities alongside a library for handling things like atomic writes, and userspace mitigation against various types of TOCTOU attacks. Not really critical for nvmutil itself, but…

An attempt was made to implement a hardened version of mktemp called mkhtemp. It implemented several mitigations in userspace against TOCTOU attacks e.g. directory replacement and symlink attacks.

Check lbmk git log for util/libreboot-utils to see more (might have been util/libreboot_utils.

Mkhtemp was started when implementing atomic writes for nvmutil, but then I naturally made use of tmpfiles for that, and that led to me auditing every implementation of mktemp. I concluded that I could do better - and I did.

Examples of how mkhtemp innovated:

…it was an over-engineered piece of crap, and had several memory issues related to stack memory usage, which tripped up a lot on BSD. The could could be tidied up and finished, but I came to a conclusion:

Distros would never accept it. Mkhtemp worked fine on Linux, but it had much stricter operation that would trip up most build systems that use it. I tried it in lbmk to replace mkhtemp, symlinking it in PATH, but for example GRUB had virtually no error checking on mktemp. Most programs that use mktemp wrongly assume that it can never fail, so it doesn’t; implementations try to mitigate errors and continue operation, in ways that are extremely complex. Mkhtemp was a clean attempt at stricter TMPDIR usage.

Because I decided it was a waste of time, I don’t think I care to write more about it in this changelog. Check lbmk git log if you’re interested.

util/spkmodem-decode

A heavily extended version of util/spkmodem-recv that implemented much stronger noise protection, attempted automatic tone detection and frequency selection, plus more. I went a bit overboard with it and decided that it was an overengineering effort. It will not be resumed at any point. You can find it in lbmk git log. (might have been util/spkmodem_decode).

Pointless effort. Spkmodem the protocol is unusable in most setups regardless.

The most pointless effort ever, such as:

Completely pointless. The simpler code works just fine, so the effort was abandoned and thus spkmodem-recv is still present; this is a cleaned up version of what was inherited from GNU GRUB several years ago.

Miscallaneous canceled work

Just two canceled works:

Hidden third cancelation, because there always is one:

Linuxboot. Now with EFI support, we can easily use any number of UKIs added to flash if we want to - and we will, in a future release. The term Linuxboot refers to any flash-based Linux distro that can boot other Linux kernels via Kexec - my preference is ZFSBootMenu, or at least something inspired by it as ZFSBootMenu’s build system is thoroughly incompatible with Libreboot’s strict design principles.

(which is a polite way of saying that I hate podman/docker with a passion)

Linux UKIs are common now, for boot, and Libreboot EDK2 can easily integrate it.

U-Boot x86 payload REMOVED

The ARM64 payload is still present, but EDK2 has replaced U-Boot on x86.

This deserves its own section, in this release, as it is a major design change. EDK2 was not merely added as an option; it has replaced U-Boot on x86. I could make this its own article. It deserves one. It deserves my judgement, publicly as I’m now about to articulate in no uncertain terms:

U-Boot was used for lightweight UEFI implementation on Intel/AMD boards, but the person chiefly in charge of the x86 coreboot payload for U-Boot has largely forked U-Boot into a newly vibe-coded project; Libreboot opposes heavily the use of AI, as per new policy. AI is no good, and upstream x86 U-Boot support has largely bitrotted although several interesting patches were merged.

U-Boot is thus a liability on x86. EDK2 is more fully functional already, so this is used instead. Think AI makes you a super hacker? Think again:

U-Boot was always buggy on x86 anyway. It’s really just not ready at all. It is better used on RISCV and ARM64(where we continue to use it).

U-Boot upstream itself is staunchly anti-AI, at least at the time of this release, and much discussion of the above was had on their mailing list. It would not be productive to re-ligitate that on this release page, but it should suffice to say that the Libreboot project considers U-Boot to be effectively dead on x86. The ARM-based development is still ongoing strongly, upstream, and we will continue to use U-Boot for UEFI on ARM64 (chromebooks for example).

I will not say his name, or the name of his fork, because I don’t want to promote him or his U-Boot fork. If you know his name or his project, you should not say it or promote it either. AI is bad, very bad, for reasons here:

The fork in question, of U-Boot, is heavily AI vibe-coded and thus useless to Libreboot. This is not mere conjecture; in said aforementioned U-Boot mailing list thread, the author stated thus. We will not, in any way, encourage or facilitate use of AI. It has been made clear that several projects Libreboot uses also have some AI-assisted commits; GCC, GRUB, etc. This is not our fault, but it is my intention that I and others will audit these projects in the future, de-slopping them and possibly even forking them entirely for that very reason. The author of the fork basically went insane with it, proposing to the U-Boot upstream that his work be “custodian”, and merged slowly into the upstream U-Boot tree. He was basically pressuring them to accept AI code against their wills. I say in my capacity as leader of the Libreboot project that U-Boot should never allow AI to taint its project. When you accept AI, you become deskilled and you erode the trust that exists between you and your users. You remove the human connection between maintainers and users, and your project will start to become dependent on what is - yes - proprietary technology, paid for in blood. AI is one of the single biggest consumers of electricity and water on the planet, leading to resource shortages all over the world and its increasing control over what information people see in the news is even a threat to democracy worldwide. This is before even arguing about unclear licensing, copyright violations and so on. It was decided that Libreboot would join the crusade against all artificial intelligence. The countries chiefly in charge of AI training and infrastructure are the United States (led by several companies currently attacking democracy worldwide) and the People’s Republic of China; even if all the other problems with AI didn’t exist, it would be a very bad idea to give these countries even more power over our computing.

NO. Libreboot says no to AI. Thus, we will continue using upstream U-Boot as they say no also, and we will not use any vibecoded forks of it. Even if that causes me to have to spend weeks integrating a totally new system to replace it. That is precisely, exactly and indubitably how far I will go to prove my point.

That is why I went to such extreme effort integrating EDK2. Rather than replace U-Boot with yet another incomplete UEFI implementation, I simply added EDK2 which is already feature-complete as it is the reference, industry-standard implementation of the UEFI spec.

CrabEFI was what I initially considered, to replace U-Boot. This is a new payload written by Arthur Heymans, and the project itself is excellent, but rustc/cargo is inherently unreliable for several reasons: It was brought to my attention that the author of crabEFI uses AI heavily in new works, and indeed crabEFI itself seems to contain AI-assisted commits. This violates Libreboot’s rigorous anti-AI policy, and thus crabEFI will no longer even be remotely considered for use in lbmk.

Rust is awesome, but in my opinion not production-ready yet. Give it another ten years. EDK2 is infinitely more complex, but the size of the code is not a concern as it is generally stable, and written in C (some small bits of it are in C++). It has the most amount of eyes on it, and regularly receives security audits. It’s one of the most battle-tested codebases on the internet, and works well.

CrabEFI will likely be merged in Libreboot at some time in the future, when Rust tooling has stabilised across distros (including BSDs). It has a much better design, even if it’s not yet feature-complete, and use of Rust means that it will have fewer memory bugs. For now, Libreboot uses EDK2 to replace U-Boot and it has been enabled by default on all boards. Clankers are banned from Libreboot.

On memory safety, we can say contrarily that EDK2 is at least stable; bugs are also stable. That’s the point. We have stable C/C++ compilers, properly tested according to formalised standards (not really, because GCC and LLVM do all sorts of whacky things too, but they also try to be compatible with each other behaviourally). You want your code, when compiled, to behave exactly the same, bugs included. This is more strongly guaranteed with projects written in C and C++ (especially pure C projects, and most of EDK2 is in fact pure C).

It was originally intended that U-Boot would become Libreboot’s primary payload on x86, but alas. I bit the Intel-flavoured bullet and went with EDK2.

Say no to AI. AI makes you stupid. AI is the reason we can’t have nice things.

Errata

EDK2 issues

No ability to change the keyboard layout yet - a graphical menu option can be added for this later in EDK2, saved to SMMSTORE. The EFI build of GRUB uses terminal_input console only, and input is thus handled by the EDK2 input drivers (ditto USB mass storage and other storage devices); GRUB’s nativedisk driver is removed for example, and its native NVMe/xHCI drivers are no longer needed as in previous Libreboot releases.

EDK2 input drivers work with both USB and PS/2 keyboards in Libreboot. GRUB is made to use console input instead of at_keyboard as it otherwise lacks USB keyboard support in the EFI build. Thus, layouts must be handled by EDK2. There is code for this in EDK2, not currently handled by either Libreboot or MrChromebox so it all defaults to UK QWERTY in this release. Upstream (MrChromebox) uses US QWERTY by default, but Libreboot is a British project, so EDK2 was patched accordingly. Work will be done post-release.

Keymapped images no longer provided. There is now only one ROM image per config on each mainboard. This simplifies builds, and users can insert a keymap.gkb file inside CBFS from config/data/grub/keymap/ if they wish; if you add a grub.cfg to flash with terminal_input set to at_keyboard, this will work on devices with PS/2 keyboards if wanting to use the GRUB EFI payload (a command in grub.cfg to load the keymap is also needed, specifically keymap (cbfsdisk)/keymap.gkb.

EDK2 has been tested extensively on all Intel hardware from GM45 e.g. ThinkPad X200/T400, all the way to Intel Kabylake hardware supported by Libreboot e.g. ThinkPad T480, X280, Dell Optiplex 3050/5050.

Want old GRUB/SeaBIOS back?

Libreboot 26.10 initially shipped with only EDK2 UEFI payload on 64-bit boards, which meant that you needed to modify lbmk to get the old bare GRUB/SeaBIOS setup (SeaGRUB) back.

Subsequent revisions to the release restored BIOS mode images, so now you have a choice. Example:

The new naming scheme makes sorting through images easier. Image names with seabios or seagrub in the file name are BIOS-based (legacy setup).

Images with edk2 in the file name are UEFI-based; 26.10rev10 and higher also prefix images with bios_ or uefi_ - U-Boot and EDK2 images are uefi_, while SeaBIOS and SeaGRUB images are bios_.

Issues with S3 resume were found on Linux distros in the initial release, when booted using CSMWrap; these will of course be fixed, in addition to other CSMWrap errata, in a future revision. Moreover, it made sense to continue offering the older setup as some users may prefer it. CSMWrap removed in Libreboot 26.10rev12, so you must use bare SeaBIOS now if you want SeaBIOS.

The plan initially was to make lbmk much simpler, thus EDK2-only on most boards. For the time being, Libreboot will maintain dual configuration in this manner.

A new, more unified naming scheme was also introduced in revisions to the release, as above. For example, the arm64 images all say uefi_ but actually use U-Boot, not EDK2; U-Boot implements a subset of the UEFI specification, and it is the default payload on ARM64 Chromebooks while Intel/AMD Chromebooks all use EDK2.

FreeBSD and DragonFlyBSD users who set up on SeaBIOS txtmode before are advised to once again choose one of the bios_ images, picking any SeaBIOS image with txtmode in the filename. This is for bootloader compatibility, irrespective of further setup - conversion to EFI is recommended, so that you can use the newer EDK2 setup.

Libreboot 26.10rev1, 17 Oct 2026

A new revision release is available: Libreboot 26.10rev1. This has replaced the original 26.10 release.

Bugs were found in the main release, on legacy hardware where EDK2 was not used; here, we had standalone GRUB and SeaBIOS payloads. On setups with GRUB, some users reported broken keyboard input. This is because some machines need a timeout loop during PS/2 keyboard initialisation, and I’d overlooked this fact when making GRUB a standalone payload on legacy hardware.

I’ve thus made GRUB only available in the form of SeaGRUB once more. Images with GRUB now start SeaBIOS first.

Here is the full list of changes, from recent to oldest:

This rev1 release essentially just fixes stability issues and makes minor quality of life changes to legacy hardware on Libreboot 26.10.

Libreboot 26.10rev2, 18 Oct 2026

Minor cleanup:

Libreboot 26.10rev3, 18 Oct 2026

CrabEFI was set release="n" in rev1, because it’s not yet ready for use as a standalone payload and is currently inserted for loading from SeaBIOS and GRUB; this isn’t working yet, so rev1 made it such that CrabEFI is not inserted into images via scripting in include/fw/rom.sh - this alone is sufficient and this third revision simply removes release="n" - otherwise, users could not build images in the source code tar archive unless they set the XBMK_RELEASE environmental variable. - CrabEFI banned from Libreboot becrause it was found that it contains AI-assisted code.

This is because release tarballs disable source fetching, by virtue of whether or not a CHANGELOG file is prevent - absent in the Git repository but generated in release archives.

REMARK: MrChromebox sources also do not fetch/compile in the release archive, but this is OK because we don’t provide images for those in this release. You should just use the lbmk Git repository to build these.

Libreboot 26.10rev4, 20 Oct 2026

Removed CrabEFI as I plan instead now to port edk2 on 32-bit, from the MrChromebox tree. This will be easier as the latter is maintained on 64-bit anyway, and work likely already exists. It’s better just to always standardise on one project. CrabEFI was only added experimentally anyway and wasn’t provided as a build in rev3. Just delete it.

Other changes:

The re-addition of BIOS targets alongside UEFI, where both are present on a given mainboard, is likely to remain permanent even when CSMWrap bugs are fixed. I initially reasoned that it’s best to keep things simple from my point of view, but it’s better to just provide users choices. With this, most users shouldn’t have any problem as the setup they’ve always used is still available, and they can otherwise upgrade to the new setup at their leisure. Yes, they call this: the principle of least surprise.

The reason I did this was also that S3 resume is currently broken on CSMWrap but not the bare SeaBIOS payload. Thus, we provide actual real BIOS setups alongside EFI; the EFI build also has CSM, but the SeaBIOS build does not have EFI.

Keymapped images were also re-added on the classic BIOS (SeaBIOS plus GRUB) targets; the EDK2 targets are still locked to only one keymap.

Libreboot 26.10rev5, 20 Oct 2026

Reverted some defconfig changes that changed VBT path and SMBIOS vendor strings, to prevent build errors. I removed these, believing them to be redundant on a handful of boards, as they’d be defined in Kconfig. I’ve restored them, and also corrected them, e.g. Dell OptiPlex 780 variants now have correct board names in these strings.

Libreboot 26.10rev6, 20 Oct 2026

The most pedantic revision of all, but I wanted to make everything a bit more clean:

Please note: these board target names make vendor file injection break on older release archives. Please rename accordingly, or just use image tarballs from the current rev6 release and beyond. Naming scheme is stable now in Libreboot, thus:

For example, variant can be 8mb on lenovo_x200_8mb. The E6400 Nvidia GPU variant never worked properly from day one, since the heatsink is cooled with a pad and the machine regularly overheats; nouveau is also buggy in Libreboot, on this board. Software-based llvmpipe rendering works fine, but the machine is completely useless for everyday use. Rather than support it, I have decided to delete it.

The E6400 Intel GPU variant is still supported, and it will continue to have support in Libreboot.

Libreboot 26.10rev7, 20 Oct 2026

Renamed more boards, for more consistent naming across all mainboards and platforms.

Renamed chromebook_ to cros_ in coreboot chromebook boards, for more consistent naming across different google products.

Removed untested boards from MrChromebox-imported boards, based on a report given to me by Matt DeVillier who leads that project.

Due to Libreboot’s rapidly expanding hardware support, which will include unlocking more Chromebooks for binary release within this very release series, it’s important that the user be able to find images more easily on rsync. With the new naming scheme, it is much easier to find what you want because images are named vendor_model_variant_size for example.

The new naming scheme is also more friendly to scripts (build systems).

Libreboot 26.10rev8, 20 Oct 2026

Renamed cros rk3399 targets to match u-boot and coreboot target names. This affects gru bob/kevin chromebooks.

Libreboot 26.10rev9, 21 Oct 2026

Enabled SATA hotplug on Dell OptiPlex 5050 SFF.

Disabled ASPM L0 on PCI-E x4 slot for Dell OptiPlex 5050 SFF. This mitigated an AER error in Linux as tested by Ron Nazarov.

Removed errant VGA ROM handling on vendor nuke function in vendor.sh that caused a build error in rev8; it was left over from when I removed Dell Latitude E6400 VGA ROM handling, as Libreboot now only supports the Intel GPU variant of this board (Nvidia model was always broken so it has just been deleted).

Libreboot 26.10rev10, 25 Oct 2026

Minor fixes and usability improvements:

Of note, this revision backports a major coreboot patchset from upstream:

Nicholas Chin has done extensive rework on battery handling for Dell Latitude models. It is no longer done in SMM. It is now done in a generalised ACPI framework, and existing S3 fixes are done there (patching to prevent DRAM from powering down in S3).

This patchset also adds support for battery status in EC, via the new ACPI patching. This means you can now monitor battery usage / charge level in ACPI-enabled operating systems.

The following features are still broken (and previously broken too), on Dell Latitudes:

The new EC handler code is more efficient, on Dell Latitudes. Doing it all in SMM violates one of coreboot’s main design criteria… putting everything in SMM is bloat. Doing it all in ACPI is just more performance-efficient, and easier to maintain. Note that these patches are still under review on the coreboot project, but they were deemed stable enough for a Libreboot release.

Building Libreboot 26.10 sources

The Libreboot 26.10 release series has one extra dependency compared to the master branch of lbmk: 32-bit libc headers needed on 64-bit build hosts, for 32-bit memtest86+ builds.

Memtest86+ isn’t cross-compiled on lbmk, and not every distro will have 32-bit headers available for libc, so it’s 64-bit-only in lbmk master. 32-bit memtest is used on 32-bit-only hardware like ThinkPad X60, as a nice-to-have.

E.g. lib32-glibc package on Arch Linux.

Use of x86-64 is assumed, when building Libreboot releases. We do also have 32-bit support, for building 32-bit machines on 32-bit hosts. For example, a Thinkpad X60 can be used to build X60 images in lbmk.

Please just make sure to have 32-bit libc headers available on 64-bit hosts when building the 26.10 release series - maintaining this dependency in the main branch is unacceptable, so lbmk would have to cross-compile payloads, which is in fact on TODO but not currently handled (lbmk uses host toolchains for nearly everything except coreboot and U-Boot, which are both compiled with crossgcc, but non-U-Boot payloads are built with the host toolchain).

Libreboot 26.10rev11, 27 Oct 2026

Minor tweaks to RK3399 coreboot chromebooks (fix payload setup). Switching to defconfigs nuked CONFIG_PAYLOAD_NONE for some reason - more investigation needed, but rk3399 configs were switched back to full configs for now. This bug does not affect Intel/AMD boards, so they are still defconfig. Without this setting, lbmk’s payload insertion is skipped. This is a bug upstream that needs to be fixed, mitigated for now in this revision release.

Moved RK3399 chromebooks in coreboot to their own tree, for coreboot and u-boot, both trees named cros_arm.

Libreboot 26.10rev12, 28 Oct 2026

CSMWrap payload deleted from EDK2. It was decided that Libreboot 26.10 would be UEFI-only in earlier revisions, but I later re-added bare SeaBIOS/SeaGRUB payloads which makes CSMWrap redundant. If you want SeaBIOS, then please use the SeaBIOS images or run CSMWrap yourself; you can use CSMWrap builds in ESP, booted from EDK2. Bundling it in lbmk is a maintainer burden, and several major bugs were reported in CSMWrap (broken S3 resume, weird graphical issues on some boards, etc). My OpenBSD installation, that I use for my LibreWolf port updates (I maintain the LibreWolf port in OpenBSD) also crashed and brought down my entire package database; it’s possible that CSMWrap may have produced buggy conditions that led to this, though it could have just been a bad SSD.

Yes, CSMWrap is a liability to maintain in lbmk. We already know that the bare coreboot payload of SeaBIOS works well, and this is available on most boards. We will provide this instead.

Users are still recommended to use the new EDK2-based images. Note that the GRUB EFI and Memtest86+ EFI builds are still available in EDK2, and these do provide value. GRUB EFI especially, can be used to unlock encrypted /boot and bypass the need for an ESP, while still having an EFI runtime in the Linux distro of the user’s choice.

This change is permanent. We will no longer provide CSMWrap builds in Libreboot. Please note: SMMSTORE is still present, intentionally, on SeaBIOS images, so that the user can switch interchangeably between SeaBIOS and EDK2 images via FMAP-based flashing (e.g. flashing only the COREBOOT section in FMAP). This is an intentional design choice, on the understanding that the lesser amount of space used in flash by payloads (on SeaBIOS setups without EDK2) compared to EDK2 images, is less than the cost of a SMMSTORE region in flash. Therefore, this provides a sensible regime upon which the user essentially does have, in a roundabout way, the benefits of a CSM except that they have to re-flash to get a BIOS image.

We’re not the proprietary vendors. Users can just build whatever they want in Libreboot. It’s better to keep setups simple, so providing two versions of SeaBIOS is pointless.

Several major design issues exist in CSMWrap, such as hogging an entire CPU core, and these design issues are caused by the fact that CSMWrap is designed to work on proprietary UEFI firmware where they don’t have access to firmware, for instance they can’t use SMM. Here in Libreboot, we could properly integrate CSMWrap and remove many of its limitations, but this would mean forking CSMWrap - which then means we are maintaining a fork of SeaBIOS, while still using SeaBIOS upstream on bare metal. Pointless. Completely pointless work.

Thus, CSMWrap was removed. It was assumed that it would be more stable in the release, and that we’d only do UEFI images, but this design change was canceled.

Libreboot 26.10rev13, 28 Oct 2026

Fixed a critical remote code execution bug in EDK2, as reported by Intel’s Tianocore Security Advisory here:

https://github.com/tianocore/edk2/security/advisories/GHSA-99cj-7hg9-mp4m

An unchecked bound on incoming ICMP packets allowed attackers to send large packets during the PXE boot window, which could allow the ICMP buffer in EDK2 to overflow and, hence, the attacker could run unsigned code in an unprivileged context.

Tianocore released this patch to fix the CVE:

https://github.com/tianocore/edk2/pull/13302 - fixes CVE-2026-97631; users who did not boot with PXE were unaffected by this issue.

NOTE: This concerns EDK2’s own PXE implementation, which is unused by iPXE anyway. Therefore, users were not actually affected by this if using iPXE; this patch was merged anyway, because there was no harm in merging it. Taken from EDK2 Security Advisory. It is the intention of the Libreboot project not only to sync with our upstream (MrChromebox) but its upstream, namely Tianocore. We will always import such fixes - this is because it’s theoretically possible that the user may otherwise make use of such code, in their own modification of Libreboot.

Libreboot 26.10rev14, 28 Oct 2026

Backported a patch from MrChromebox which fixes SD card booting on (tested models) ThinkPad W541 and Dell Latitude E7240:

https://github.com/MrChromebox/edk2/commit/c205cebb1a534261c9aef428c37f889c3661e2cb

Fixes a hanging bug in EDK2 when booting operating systems via SD card on affected hardware. The fix is done by reverting a previous patch that forced eMMC probing as some soldered-down mmc flash may report itself as removeable; see notes in the patch, linked above. This patch was backported into Libreboot EDK2, for the 26.10 release series.

Libreboot 26.10rev15, 2 November 2026

Removed forx function in the build system, removed unused srclink variable, don’t use backticks on commands; general cleanup in the build system. More: removed trivial uses of eval and awk in the build system. The build_sbase macro is now a function.

Sources only cleaned before doing a build, to save on build time.

Simplified building of PCSX-Redux Open BIOS, by making use of the cpbin variable recently added to the Libreboot build system.

Simplified building of serprog images by using cpbin instead of custom copy logic.

In get.sh, more thorough hash checks are done based on build_depend and fetch_depend, which makes adding symlinks to config directories unnecessary (useful on Chromebooks where EDK2 is built while depending also on GRUB EFI - Libreboot-only, not available in Canoeboot yet).

Added EDK2 build with just iPXE, nothing else, for images with 3MB of CBFS space. Not used in this Libreboot release, but some targets in Canoeboot have this smaller size compared to Libreboot, on specific boards.

NOTE: No rev15 builds will be provided, because it did not change any in-firmware behaviour compared to rev14. This rev15 release is being tagged, so as to cleanly sync up with Canoeboot - now we have a reference point as to how the two projects align, as the Canoeboot 26.11rev1 release is in sync with Libreboot 26.10rev15.

Libreboot 26.10rev16, 4 Nov 2026

Backward compatibility added for old build targets on coreboot. This lets you type e.g. x200_8mb to build lenovo_thinkpad_x200_8mb. This was also used on the ./mk inject command, and config was added to make it backward compatible with Libreboot archives from multiple older releases, going all the way back to Libreboot 20221214.

Dependencies: zlib-ng used instead of zlib, for faster operation.

Fixed FSP hashes in Topton X2E N150 vendor config, otherwise you get a broken build and vendor injection doesn’t work.

Markdown file for this page: https://libreboot.org/news/libreboot2610.md

Site map

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