% Libreboot 20241206 released! ThinkPad T480 added. Plus U-Boot UEFI on x86. Fixes for OptiPlex 3050 Micro. % Leah Rowe % 6 December 2024
Today's Libreboot 20241206 revision is a stable release, whereas the previous testing release was Libreboot 20241008, and the previous stable release was Libreboot 20240612.
IMPORTANT ADVICE: PLEASE READ THESE INSTRUCTIONS BEFORE INSTALLING/UPDATING LIBREBOOT.
Libreboot 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 GNU GRUB or SeaBIOS, with regular well-tested releases to make coreboot as easy to use as possible for non-technical users. From a project management perspective, this works in exactly the same way as a 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 GNU GRUB to boot your operating system; on ARM(chromebooks), we provide U-Boot (as a coreboot payload).
For Libreboot 20241206, today's release, U-Boot is also provided as an optional coreboot payload on x86 machines. This provides a sensible UEFI implementation, useful for booting Linux/BSD systems more easily. More information available on the U-Boot x86 page.
This means that you can have a UEFI boot environment, even on machines where the original vendor firmware never supported it. For example, the ThinkPad X200 runs U-Boot virtually bug-free, and it can boot Linux distros via U-Boot's UEFI implementation; that machine could not originally do UEFI.
This page lists all changes made since the Libreboot 20241008 release. Since Libreboot 20241206 is a stable release, there has been a more conservative focus on fixing bugs and in general polishing, though several interesting features have been added, in addition to numerous new mainboards.
The following boards have been added since the Libreboot 20241008 release:
In descending order from latest changes to earliest changes:
deguard
, which now works
generally for any MEv11-based board, whereas the previous version contained
hacky hardcoded logic for only the Dell OptiPlex 3050 Micro. In this Libreboot
release, deguard supports the 3050, but also the ThinkPad T480 and T480S,
providing machine-specific ME configurations for each mainboard. Mate's new
deguard implementation essentially does the same thing as Intel's FITC tool,
though with a much more terse and minimalist design. It could be expanded for
many other things in the future, related to Intel ME.In descending order from latest changes to earliest changes:
rom.sh
: Support creating SeaUBoot payload setups. This is where SeaBIOS
loads U-Boot from SeaBIOS first, unless interrupted by the ESC menu, whereby
the user can select an alternative option, such as direct device booting from
SeaBIOS, or the GRUB payload instead. This was done, to mitigate potential
instability in U-Boot, since U-Boot is much more heavily tested so it provides
a sensible fallback just in case. This could also be regarded as a preventative
bug fix, from the perspective of a user.int
tool, which was used for debugging MXM
handling on the HP EliteBook 8560w port; the MXM is a data section provided
by the system BIOS on mobile systems that use MXM graphics cards. The data
describes ports, power management and so on. This was needed to make MXM cards
work reliably.gpio-scripts
fork, which parses inteltool output
for providing GPIO configuration on new coreboot ports; note that from Skylake
onward, intelp2m
is used instead, but Libreboot does not directly import
the intelp2m
utility (it is included via coreboot instead).mxmdump
utility, for extracting MXM configuration
on mobile graphics cards. This was used when implementing MXM support on
the HP EliteBook 8560w.In descending order from the latest changes to the earliest changes:
coreboot/dell7
(for 3050 Micro) and merged it into a new
tree, coreboot/next
instead, which was (for this release) later updated to
the latest coreboot revision from a few days prior to the release. The next
branch contains OptiPlex 780 ports and the Kaby Lake machines such as
OptiPlex 3050 Micro or ThinkPad T480/T480S.coreboot/default
, because it's currently
used in coreboot/next
instead (for Kaby Lake machines).The following bug fixes have been merged (in descending order from the latest changes to the earliest changes):
script/trees
: Reset the PATH environmental variable per target, to what it
was when the script was first called. This is because PATH is manipulated
when dealing with crossgcc, exporting it prior to running a given build
process, if the current project/target enables cross compilation. This bug
didn't cause any issues in practise, so this is a preventative bug fix,
because projects that use the crossgcc compiler all set xarch
properly,
and none of the projects that aren't cross compiled use special prefixes
in their toolchain references, at least as of 6 December 2024.rom.sh
: Removed redundant shebang, which didn't technically cause any
problems, but it's technically a bug since this is not provided as a main
script, and must never be executed directly, instead only to be executed by
other scripts.openssl-devel-engine
to Fedora 41 build dependencies.script/trees
: Unset the CROSS_COMPILE
environmental variable, to fix an
issue whereby projects that honour it might be wrongly cross compiled where
a previous export of that variable was made; for example, setting it on
arm64 U-Boot and then compiling x86 U-Boot, where the latter currently relies
on the host's x86_64 toolchain, on an x86_64 host.config/git
, because of
how caching works in Libreboot; fewer projects now fail to cache, making
the download process more redundant and fault tolerant at build time when
downloading upstream sources.vendor.sh
: Don't use the x_
wrapper for handling errors while changing
GbE MAC addresses, because a file path is provided as argument, and the x_
wrapper currently does not handle globbing; instead, the $err
function is
used for returning error status.vendor.sh
: Properly handle error status when returning from deguard's
RUNME script (This change was later obsoleted when deguard was rewritten,
and Libreboot imported the newly rewritten version - the new code and handling
of it is much more robust)python3-devel
to Fedora 40 build dependencies.In descending order from the latest changes to the earliest changes:
coreboot/haswell
or coreboot/dell7
.This log is relative to Libreboot 20241008:
* 07983c1d882 Revert "Revert "disable u-boot on thinkpad t480""
* 19ec440a6f7 Revert "disable u-boot on thinkpad t480"
* 99513c3bf67 add patch from mkukri fixing t480 sata
* cd9baca5d66 disable u-boot on thinkpad t480
* 8065b9842b5 remove the purple patch on arm64 u-boot
* 5cc91d8e40a Merge pull request 'u-boot: Use bootflow menu by default for ARM64 boards' (#254) from alpernebbi/lbmk:u-boot-arm64-bootflow-menu into master
|\
| * f26752fd854 u-boot: Use bootflow menu by default for ARM64 boards
* | bef2890233e i made u-boot purple
|/
* 965f9bd0335 Add bootflow/branding patches to arm64 U-Boot too
* 44e6a0c0905 Add libreboot branding/version to U-Boot bootflow
* c038b653ac1 Add auto-boot timeout for U-Boot's bootflow menu
* 7a6e47c24fe 8-sec auto-boot timeout for U-Boot's bootflow menu
* 90850eb859c fix board name for coreboot/dell7010sff
* 8314fbc67eb add /dump/ to .gitignore
* efebfa992b6 Revert "trees: Allow using a custom clean command"
* 5b4c9158e5a trees: Allow using a custom clean command
* b95a411a364 Add SPD support for onboard ThinkPad T480S RAM
* 046529abd98 Disable m2 caddy hotplug on T480S
* 9dc3c86ae37 vendor.sh: Remove T480 VGA ROM download handling
* 33efe45b149 Enable legacy 8254 timer on ThinkPad T480
* cde9594aab5 libgfxinit on Thinkpad T480
* c1b73269726 NEW MAINBOARD: ThinkPad T480S
* 264928c6cde NEW MAINBOARD: ThinkPad T480
* 597b45fdbd5 Merge pull request 'Update U-Boot to v2024.10' (#253) from alpernebbi/lbmk:uboot-v2024.10 into master
|\
| * 3dd77b33a72 u-boot: Enable USB with a preboot command
| * ba772eb6acd u-boot: Update ARM64 boards to v2024.10
* | 28d8dc93a52 vendor.sh: Use the new deguard for 3050micro
* | 7f6e47d27c6 trees: reset PATH per-target
|/
* f4b6aeea281 rom.sh: Add U-Boot before SeaBIOS and GRUB (x86)
* 7014b303f98 rom.sh: Remove unnecessary shebang
* a3accd39a06 Merge pull request 'config/deps/fedora41: Add openssl-devel-engine to dependency list' (#251) from mkukri/lbmk:master into master
|\
| * 98c5e436282 config/deps/fedora41: Add openssl-devel-engine to dependency list
|/
* ef7db205463 e6400nvidia: Disable U-Boot
* eea9fc40975 rom.sh: unset displaymode on normal initmode
* f312e6026f9 rom.sh: Don't build U-Boot on normal initmode
* 587d588fe4c rom.sh: Don't build txtmode U-Boot images
* 7d1fd1cc6a1 rom.sh: Support SeaUBoot for 64-bit x86 U-Boot
* 02e66ae01ae U-Boot x86: Avoid clearing the VESA display
* 32dced8cd83 disable U-Boot for now on HP EliteBook 8560w
* a68b468964d enable serial debug on HP EliteBook 8460p
* b79bd736e70 enable serial debug on hp elite 8200 sff
* b109617752f enable the serial console on thinkpad x60
* 0c7fb21a062 enable the serial console on thinkpad t60
* eb14a176bc8 Only boot 32-bit u-boot from grub, 64 from seabios
* 279e69172f7 make the u-boot grub menuentry more useful
* fdbdf0449b3 Re-enable U-Boot x86 on real mainboards
* b549d1e5f38 u-boot x86 serial/ns16550: disable UART as needed
* eba73c778a8 Disable U-Boot x86 except on Qemu
* 4bc6ca545e7 fix U-Boot hotkey mention in grub.cfg
* 6d629a8496c Update x86 U-Boot to v2024.10 (was v2024.07)
* 709bbebdcf2 grub.cfg: mark U-Boot as experimental in the menu
* 637c0a1521a trees: unset CROSS_COMPILE per target
* f13819386bf Enable x86 U-Boot payload on every x86 board
* 747b6514eaf Add U-Boot x86_64 payload
* 3bf3ef557e4 add arm-none-eabi-gcc-cs-c++ to fedora dependency
* 2deab8572db clean up the coreboot submodules
* 9abddb82b92 Bump coreboot/next and merge coreboot/dell7
* 8c4cacba27c data/coreboot: add missing variable
* cdd8cb9086f coreboot/default: remove unnecessary module
* c0017c73578 Experimental U-Boot payload (32-bit dtb, U-Boot)
* 14b4838d495 coreboot/default: Re-base all patches
* 67c92889a86 NEW MAINBOARD: Dell OptiPlex 780 USFF
* 38006cb2bc0 coreboot/dell3050micro: enable coffeelake CPUs
* 97054498e94 NEW MAINBOARD: Dell OptiPlex 780 MT
* f3170fb06eb coreboot/dell7: add missing ifdtool nuke patch
* 19795bf980e re-update seabios to latest revision
* 9bdec645a30 3050micro: Re-enable SeaGRUB
* 6c78942290d Merge pull request 'config/coreboot/default: Update MEC5035 patches' (#244) from nic3-14159/lbmk:mec5035-updates into master
|\
| * b257662e55c config/coreboot/default: Update MEC5035 patches
* | 237fa1e3c18 3050micro: don't set static option table
* | d1743d1f647 3050micro: Use alt century byte +legacy 8254 timer
* | c56f6987139 Use SeaBIOS 1.16.3 and enable debugging
* | d8ac9d53b66 Switch Dell 3050 Micro to newer coreboot revision
|/
* 99a88ebfa20 Update dell 3050 patch to patch 15 (pwm fix)
* 3f63c6d12f6 rom.sh: remove unnecessary logic from copyps1bios
* 56495c61e6c use redundant mirrors for recent utils imports
* 38d37a340fb remove end slashes on repos in config/git/
* 6eb2e98c0f0 import Riku's int tool
* 441d21dc134 import Riku's gpio-scripts
* e8957b0833a import Riku's mxmdump utility
* 91a26ec3611 bump seabios
* 34f851742e1 vendor.sh: Don't use x_ for image MAC address mod
* c7a3a607f3d bump flashprog revision to d128a0a
* 3b92b7b7236 vendor.sh: Handle error status on RUNME.sh
* 147e0343416 dependencies/fedora40: add python3-devel
This accounts for 79 changes made, relative to Libreboot 20241008. Many changes were intentionally delayed because this is to be a stable release. A lot of new work will now go into the next testing release, which is scheduled for the latter part of January 2025 or early February 2025.
If you spot any issues in the Libreboot 20241206 release, please do get in contact with the Libreboot project. We appreciate any and all help. Thank you for reading, and have a wonderful day!
Several revisions have been made to this release, since the original release. With stable releases, it's normal to make such revisions, when critical bugs are discovered, or desirable changes are otherwise identified.
When these changes are made, the release is re-compiled, with the newly amended binaries and sources re-uploaded, replacing what was there before. Individual patch files are also provided, so that you can (using them as reference) revert the source archive back to previous revisions.
Please see: Libreboot 20241206 release revisions
Many revisions are planned in the run-up to next year's stable release ETA Summer of 2025. In particular, there is much work that still needs to be done on the U-Boot payloads (x86 and ARM64).