https://libreboot.org/news/libreboot20230319.html
Libreboot logo
Libreboot 20230319 released!
Leah Rowe
19 March 2023
* Home
* FAQ
* Download
* Install
* Docs
* News
* Bugs
* Send patch
* Donate
* Contact
* Buy preinstalled
---------------------------------------------------------------------
Navigate this page:
* Build from source
* Work done since last release
+ Brief overview of changes
+ REMARK: libre raminit on Haswell
+ New boards, x86
+ Removed boards
+ lbmk Git changes
* Major works planned
+ Linux distro in flash
+ Re-factor and optimize GRUB
Return to index
Article published by: Leah Rowe
Date of publication: 19 March 2023
Libreboot provides boot firmware for supported x86/ARM machines,
starting a bootloader that then loads your operating system. It
replaces proprietary BIOS/UEFI firmware on x86 machines, and provides
an improved configuration on ARM-based chromebooks supported (U-Boot
bootloader, instead of Google's depthcharge bootloader). On x86
machines, the GRUB and SeaBIOS coreboot payloads are officially
supported, provided in varying configurations per machine. You can
find the list of supported hardware in the Libreboot documentation.
The last Libreboot release, version 20221214, was released on 14
December in 2022. This new release, Libreboot 20230319, is released
today on March 19th, 2023.
This is marked as a testing release. Not all ROM image configurations
have been provided pre-compiled; specifically, daisy and veyron
chromebook boards are not available pre-compiled, but the other
boards are. A few new boards have been added, in addition to several
fixes and feature additions.
Build from source
[link]
This release was build-tested on Debian Sid, as of 18 March 2023.
Your mileage may vary, with other distros. Refer to Libreboot
documentation.
Work done since last release
[link]
For more detailed change logs, look at the Git repository. This is a
summary of changes.
Brief overview of changes
[link]
I've been very busy these last couple months, so there have been less
changes in Libreboot lately. I'm expecting to have a lot more time
throughout the coming summer, which I plan to make full use of for
the next Libreboot release.
The changes can be summarised, thus:
* LIBRE raminit code now available, on Haswell boards (ThinkPad
T440p and ThinkPad W541). This is using patches from Angel Pons
(hell on coreboot IRC), that are currently still in review on
coreboot master. The old configs that use mrc.bin for raminit are
still available aswell, so this release contains ROMs with libre
raminit and ROMs with blob raminit. The reasons are explained
below.
* FIXED S3 suspend/resume on Haswell (T440p/W541) - but only on
configs that use mrc.bin. The images with libre MRC still have
broken S3. S3 suspend/resume is what people refer to as sleep
mode and wake from sleep.
* Force console display mode in GRUB: This corresponds to the
setting GRUB_TERMINAL=console that you might find in /etc/default
/grub on a Linux machine. In Libreboot, switching VGA/text modes
is unsupported, it's stuck in one mode until Linux/BSD Kernel
Mode Setting takes over. With this change to GRUB, GRUB's VGA
mode switching is disabled. This might make a few Linux distro
installer menus work a bit nicer.
* New ports: Lenovo T530 and W530 thinkpads added.
* Bump coreboot revision: February 2023 revision for most x86
boards, including Haswell (T440p/W541) when mrc.bin is in use;
Haswell (T440p/W541) setups that don't use mrc.bin (and instead
use Angel`s libre replacement code), it's currently based on
coreboot from mid-2022 because that's what Angel's as yet
unmerged patches are based on (relative to coreboot's master
branch)
* Bump GRUB revision: February 2023 revision now, on all boards.
* Bump SeaBIOS revision: February 2023 revision now, on all boards.
* grub.cfg: 5 seconds boot delay, instead of 10 seconds.
* GM45 thinkpads: default to 256MB VRAM instead, which is more
stable than the previous setting of 352MB. Many reports from
users indicated performance issues when the 352MB config was
used.
* Stricter handling of exit status in lbmk. More errors result in a
hard exit than before, preventing the build process from
erroneously continuing.
* Fixed fault checks in the Libreboot build system, when checking
which coreboot utilities are needed (e.g. cbfstool, ifdtool)
* util/nvmutil: Massively re-factored the codebase, making it more
efficient and correct.
REMARK: libre raminit on Haswell
[link]
Upon testing, I've discovered that the libre code has the following
problems:
* I haven't gotten S3 suspend/resume working properly on that yet.
* Broken USB device detection in GRUB.
* SeaBIOS still works, for USB devices.
Therefore, the libre MRC setup in this release, for T440p and W541
thinkpads, only provides SeaBIOS payload (booting in text mode,
implying use of a bootloader that supports this, and if wanting xorg/
wayland, a kernel that does kernel mode setting, which is most BSD/
Linux setups these days).
In this release, and in the build system, the following targets are
defined:
* t440p_12mb: libre raminit code used (reverse engineered
replacement of mrc.bin)
* w541_12mb: ditto (libre raminit code)
* t440pmrc_12mb: blob mrc.bin used for raminit. GRUB and SeaBIOS
payloads both supported.
* w541mrc_12mb: blob mrc.bin used for raminit. GRUB and SeaBIOS
payloads both supported.
The libre raminit comes from this patchset:
https://review.coreboot.org/c/coreboot/+/64198/5
The MRC blob (and Angel's replacement code) don't just do raminit,
they handle a few other init tasks aswell, including USB host
controller.
New boards, x86
[link]
* Lenovo ThinkPad W530
* Lenovo ThinkPad T530
I bought these machines, which I've not added to the release but plan
to add for the next release:
* HP EliteBook 8560w (https://review.coreboot.org/c/coreboot/+/
39398)
* Lenovo G505S (http://dangerousprototypes.com/docs/
Lenovo_G505S_hacking)
* Dell Latitude E6400 (now merged in coreboot master. It's an ICH9M
machine but with DDR2 raminit)
^ I would have put these in today's release, but didn't have time,
and wanted to get this release done today.
Removed boards
[link]
* asus p2b_ls/p3b_f - they didn't boot properly in pcbox, and the
real hardware is basically useless / impossible to find
lbmk Git changes
[link]
The precise list of commits in lbmk.git since the last release, is as
follows:
* 07b6bb3d - build/release: handle nvmutil (12 hours ago)
* 653810b8 - fix bug: me not being downloaded on some boards (12 hours ago)
* 2bb63d85 - new board: lenovo/w530 (12 hours ago)
* 896e9065 - new board: lenovo/t530 (13 hours ago)
* cffa5679 - haswell (lenovo t440p/w541): fix S3 suspend/resume (14 hours ago)
* be3d7b7e - haswell: re-add mrc.bin in separate board configs (22 hours ago)
* bdc39ffc - haswell: only use txtmod seabios configuration (25 hours ago)
* df6b9e28 - remove t440p_12mb_cbfs4mb (retain t440_12mb) (25 hours ago)
* 04f1fe17 - remove x220_16mb (x220 with 16MB flash) (29 hours ago)
* 548872ce - haswell boards: use libre mrc.bin replacement (2 days ago)
* a942bd65 - move download/gitmodule script to root directory (2 days ago)
* 59540530 - nuke p2b_ls/p3b_f boards (2 days ago)
* ebd9ec96 - debian/ubuntu dependencies scripts: add gettext (3 days ago)
* f9e20b8a - util/nvmutil: optimise rhex() further (13 days ago)
* f04855c2 - fix flashrom download error (13 days ago)
* e2945f02 - payload/grub: force terminal_output to console (2 weeks ago)
* 909d3b31 - grub.cfg: set default timeout to 5 seconds (2 weeks ago)
* 544737c8 - scripts: build cbutils, not specific utils (2 weeks ago)
* 9398ad08 - also fix data.vbt path for lenovo/w541 (2 weeks ago)
* d2465e82 - Fix CONFIG_INTEL_GMA_VBT_FILE for the t440p_12mb config (2 weeks ago)
* 0e34d199 - update debian dependencies (for sid) (2 weeks ago)
* a5aa5bca - ICH9M: default to 256MB VRAM, not 352MB (2 weeks ago)
* 6421af5d - bump seabios revision (4 weeks ago)
* aba6307d - bump grub revision (4 weeks ago)
* 36982ab5 - fix bad ifdtool patch from earlier commit (4 weeks ago)
* 3857b4b6 - build/dependencies/debian: add python3 dependency (4 weeks ago)
* dac9ea86 - build/boot/roms: fail when build cbutils fails (4 weeks ago)
* 0d0f6cf3 - coreboot: update revision of cbtree "default" (4 weeks ago)
* dc1fedf9 - Merge branch 'uboot-v2023.01' of alpernebbi/lbmk into master (4 weeks ago)
|\
| * 7932d5fa - u-boot: Disable environment storage (5 weeks ago)
| * 8d57468e - u-boot: Update to v2023.01 (5 weeks ago)
|/
* 6b4a14ce - util/nvmutil: tidy up variable declarations (7 weeks ago)
* 031a0b55 - util/nvmutil: setWord(): declare variables first (7 weeks ago)
* 257eedca - util/nvmutil: reset errno if any write attempted (7 weeks ago)
* adc76e38 - util/nvmutil: do not write non-changes to disk (7 weeks ago)
* 3e150bf3 - util/nvmutil: cmd_swap(): write sequentually (7 weeks ago)
* 7e3a7355 - util/nvmutil: don't use malloc() (7 weeks ago)
* a924d43b - util/nvmutil: fix clang build errors (7 weeks ago)
* c822033b - util/nvmutil: simplify rhex() (7 weeks ago)
* 0f485245 - util/nvmutil: use gbe[] in word() and setword() (7 weeks ago)
* b1186968 - util/nvmutil: code cleanup (7 weeks ago)
* 7a986497 - util/nvmutil: call pledge() earlier, in main() (7 weeks ago)
* bb6fe263 - util/nvmutil: remove unused #define (7 weeks ago)
* 5a5a8662 - util/nvmutil: optimised disk reads (7 weeks ago)
* 24d56456 - util/nvmutil: optimise cmd_swap() (7 weeks ago)
* ef84329a - util/nvmutil: optimise rhex() for speed (7 weeks ago)
* 88a51531 - util/nvmutil: code cleanup in rhex() (7 weeks ago)
* ac1cab28 - x230edp_12mb: Correct the path to data.vbt (7 weeks ago)
* afc80b89 - util/nvmutil: update copyright years (9 weeks ago)
* 8242dca5 - util/nvmutil: limit bytes written per command (9 weeks ago)
* e398331b - util/nvmutil: make writeGbeFile more readable (9 weeks ago)
* 8dea350a - util/nvmutil: only write parts that are modified (9 weeks ago)
* d0fa08d5 - blobs/inject: fix wrong nvmutil path for make (10 weeks ago)
* e8072934 - Merge branch 'veyron-uboot-dmreset' of alpernebbi/lbmk into master (10 weeks ago)
|\
| * e11650c3 - u-boot: Enable DM_RESET for veyron boards (3 months ago)
* | 6b104542 - Merge branch 'peach-uboot-usbehci' of alpernebbi/lbmk into master (10 weeks ago)
|\ \
| |/
|/|
| * 80bf54b2 - u-boot: Enable USB_EHCI_EXYNOS on peach boards (3 months ago)
|/
* 7f5dfebf - Do not rely on bashisms and behaviour undefined by the POSIX specification. Part 2 (3 months ago)
* f7870446 - Do not rely on bashisms and behaviour undefined by the POSIX specification. (3 months ago)
* d45b2e70 - util/nvmutil: use err() more consistently (3 months ago)
* d726b16f - util/nvmutil: more robust pointer handling (3 months ago)
* 448ee510 - util/nvmutil: optimise cmd_swap() further (3 months ago)
* effcb942 - util/nvmutil: greatly optimise cmd_copy() (3 months ago)
* 6e5828e4 - util/nvmutil: greatly optimise cmd_swap() (3 months ago)
* 7aafc62b - scripts/blobs/inject: fix bad cbfstool build check (3 months ago)
* 6ebd178f - util/nvmutil: simplified error handling in rhex() (3 months ago)
* 04da953c - util/nvmutil: return errno when calling err() (3 months ago)
* 00187811 - util/nvmutil: exit non-zero if close() fails (3 months ago)
Major works planned
[link]
In general, you should also check the issue tracker to find other
notes. There is always more work to do, to improve Libreboot.
Linux distro in flash
[link]
STILL ON TODO SINCE LAST RELEASE.
This is another project that has been on hold for a while. The issue
has been that I need a decent userland project. I've looked at many
different userlands and since late June in 2022, decided to make my
own. I want a BusyBox-like solution, but based on code from OpenBSD,
ported to run under Linux with musl libc.
I want this distro to provide a kexec bootloader in flash, similar to
Heads, and I also want it to use apk-tools, pointing at Alpine Linux
repositories so as to allow any number of packages to be downloaded.
It could also provide lots of utils in general, to be a live rescue
system of sorts. Linux system in flash, that can bootstrap other
systems.
About a week before this release, I actually started on the project
for real, after having many false starts. I've forked a project
called lobase which already ports OpenBSD's userland utilities to
glibc under Linux, and it's as of today about 5 years outdated based
on OpenBSD 6.3.
I've ported these utilities directly from OpenBSD 7.2, in my local
fork of lobase, superimposing the new code on top of the old and
adapting according to musl libc (lobase is full of hacks for glibc
that I don't need):
mail, cat, ls, head, rcs, hexdump, whois and time
I've been working on this in a dedicated Alpine Linux virtual
machine, currently on release 3.17 of Alpine Linux. Alpine is an
ideal test distro for such development, because it already uses musl
libc and has libressl available in aports.
I don't have enough to release yet, but when I have a release ready,
I will upload it to a Git repository. When the userland port is fully
complete, I shall then base off of Alpine Linux abuild+aports build
system infrastructure to provide small base images. It will be
similar to the Heads project, but built separately and not
specifically targeted at Libreboot, but in general to any coreboot
setup, on supported hardware. It won't be a general purpose distro,
but I would at that point submit my userland port to Alpine,
proposing it as a replacement of their busybox package in base.
Unlike Heads, I don't plan yet to make this a direct coreboot
payload. Instead, it'll be a standalone image loaded into CBFS, and
chainloaded via the GRUB or SeaBIOS payloads, which are both capable
of executing ELF binaries from the flash.
Lobase, which my development is forked from, can be found here
(archived): https://github.com/Duncaen/lobase
I've been re-using lobase's build system, adapting newer code from
OpenBSD. It's a lot of work, but I'm hopeful I can have this ready
before the next Libreboot release.
Re-factor and optimize GRUB
[link]
STILL ON TODO SINCE LAST RELEASE.
GRUB is full of unused bloat that almost nobody uses, yet is in the
current Libreboot builds. It's been on TODO for some time, but work
has not yet begun on this project. My efforts are currently focused
on the Linux distro.
What I want is a fork of GRUB, optimized to run on bare metal as a
coreboot payload, on x86 and ARM platforms.
I have an update since the last release. Paul Menzel of coreboot has
made GRUB modules more configurable, making it possible to reduce the
size of the payload. His patch is not yet used in Libreboot (not in
this release, anyway), but the patch in GRUB is:
commit 6c5ee45548fcb65d7921c9fca5867b256f9a48ad
Author: Paul Menzel
Date: Thu Mar 7 12:16:06 2019 +0100
Makefile: Allow to set file systems modules for default_payload.elf
I'm going to play around with this when I get the time. Even with
this modification, GRUB is still full of code that Libreboot will
never use. A GRUB Valhalla Rampage is still in order!
---------------------------------------------------------------------
* Binary blob policy
* Edit this page
* Who develops Libreboot?
* License
* Template
* Logo
* Authors
---------------------------------------------------------------------
Markdown file for this page: https://libreboot.org/news/
libreboot20230319.md
Subscribe to RSS for this site
Site map
This HTML page was generated by the untitled static site generator.