Libreboot 20241206 released! ThinkPad T480 added. Plus U-Boot UEFI on x86. Fixes for OptiPlex 3050 Micro.

Leah Rowe

6 December 2024


Return to index

Article published by: Leah Rowe

Date of publication: 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.

Introduction

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

U-Boot UEFI payload on x86_64

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 in the photo is running U-Boot, and booting a distro 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 it’s 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.

Summarised list of changes

Board support

The following boards have been added since the Libreboot 20241008 release:

Revision updates

In descending order from latest changes to earliest changes:

Feature changes

In descending order from latest changes to earliest changes:

Configuration changes

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

Bug fixes

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

General code cleanup

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

Git log

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!

Revisions

Revision 1

A bug was found whereby seabios_ images are created twice, This was fixed in the revision e3b77b132e6b5981c09bc1ce282afaae64058ab3. This bug caused vendor file insertion to fail on release images, because the vendorhashes file would list the file twice, but one of the hashes would be wrong.

This is because the build system wrongly created U-Boot-only images first with that name, because the add_uboot function in rom.sh unconditionally created images with U-Boot in them; the function also creates ARM64 images, where U-Boot is the primary payload.

On x86 machines, SeaBIOS should be the main payload, chainloading U-Boot.

The build system would then create the actual seabios_ image, replacing the other one, on x86 machines.

So, the command to create the first image was removed. However, just before uploading rev1 images, it was discovered that this would cause no U-Boot images to be built for ARM64 devices, which lead to Revision 2:

Revision 2

See commit ID b910424b5df8ed7c931a7b8f5cc8e34eacf0ca3e.

Revision 1 was reverted, and replaced with the following logic instead:

In add_uboot, the instruction to create a ROM image was changed so that it only creates one where U-Boot is the primary payload (which is the case for ARM64).

The source archive is now 20241206rev2 instead of 20241206, and the same is true of affected images on x86, where vcfg is set in target.cfg.

Revision 3

See commit ID 3b6b283eabe7a655c861d1543aeae49d27566f53 and the two commits before that.

This revision disables PCI-E Re-plug (hotplug feature) for the NVMe SSD on Dell OptiPlex 3050 Micro, to prevent the device from being renamed randomly; such renaming will cause a system crash if booting Linux from the NVMe.

In my case, I was running RAID1 (SATA+NVMe) and every few days, the RAID1 got unsynced; I simply re-synced and it was fine, but what if that was a RAID0? It would possibly corrupt the entire array.

This revision should prevent the issue from occuring. Without this patch, the nvme0n1 device (as an example) might randomly rename to nvme0n2, because Linux would see it as a new device.

This same fix was made to the ThinkPad T480/T480s to fix the same issue there, which manifested during S3 resume, but that bug never made it into the release because it was fixed before the initial release of Libreboot 20241206.

The ROM images were all re-uploaded, compiled from the rev3 tarball, because it was discovered that the rev2 tarballs had a GRUB built showing the old Libreboot 20241008 version number; the actual code in GRUB matched the code for 20241206, but it was a cached GRUB build from just before updating the version number for release. This is because the rev2 ROM image tarballs were done manually, to avoid a full re-build of every target in lbmk. To avoid all doubt, all ROM images have been re-compiled with the version number corrected, from the rev3 tag.

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

Subscribe to RSS for this site

Site map

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