Libreboot 20230319 release announcement

hslick-master
Leah Rowe 2023-03-19 13:38:51 +00:00
parent 4f84979cbc
commit e5d16c2a99
10 changed files with 340 additions and 138 deletions

View File

@ -75,14 +75,15 @@ of 19 February 2023, and no fix is yet available on that date. See:
from 2021.01 is known to work, for u-boot on this board. See:\
<https://wiki.postmarketos.org/wiki/ASUS_Chromebook_C201_(google-veyron-speedy)>
(alpernebbi on IRC is looking into this, to bisect uboot and update the latest
revisions) - for now, ROM images deleted from the Libreboot 20221214 release.**
revisions) - for now, ROM images deleted from the Libreboot 20221214
and 20230319 releases.**
**WARNING: daisy- and peach- boards require a BL1 bootloader blob, but the
one from coreboot 3rdparty is a fake/placeholder blob. We need logic in the
Libreboot build system for properly fetching/extracting these, plus docs to
cover it. For now, assume that these are broken - ROM images are excluded,
for now, and have been retroactively deleted from the Libreboot 20221214
release. - see: <https://review.coreboot.org/plugins/gitiles/blobs/+/4c0dcf96ae73ba31bf9aa689768a5ecd47bac19e>
for now, and have been deleted from the Libreboot 20221214 and 20230319
releases. - see: <https://review.coreboot.org/plugins/gitiles/blobs/+/4c0dcf96ae73ba31bf9aa689768a5ecd47bac19e>
and <https://review.coreboot.org/plugins/gitiles/blobs/+/b36cc7e08f7337f76997b25ee7344ab8824e268d>**
WARNING: Support for these boards is at a proof-of-concept stage. Refer

View File

@ -83,13 +83,22 @@ For example:
./blobutil inject -r x230_libreboot.rom -b x230_12mb -m 00:f6:f0:40:71:fd
**NOTE: Haswell machines come with `mrc.bin` or without, depending on the
ROM image configuration. These ROM configs have `mrc.bin`: `t440pmrc_12mb`
and `w541mrc_12mb`. These ROM configs have libre MRC: `t440p_12mb`
and `w541_12mb` - it is critical that you choose the right one, when using
the `-b` flag in the `blobutil inject` command. For example, if you
used `-b t440p_12mb` on a ROM image that actually corresponds
to `t440pmrc_12mb`, then the required `mrc.bin` file would not be added
and that ROM would not boot when flashed.**
NOTE: the MAC changer makes use of `nvmutil`, which you can read more about in
the [nvmutil documentation](nvmutil.md).
**WARNING: This is broken in Libreboot 20221214's src archive. It fails when
attempting to use cbfstool, due to a faulty check in a script. The fix is as
follows (and has been applied already in the lbmk Git repository, as of 22
December 2022):**
attempting to use cbfstool, due to a faulty check in a script. This is fixed in
recent Libreboot releases or revisions. The fix is as
follows:
Edit line 137 in `resources/scripts/blobs/inject`. The line in 20221214 says
this:

View File

@ -14,13 +14,13 @@ Libreboot from source, [read this page](docs/build/).
GPG signing key
---------------
**The latest release is Libreboot 20221214, under the `testing` directory.**
**The latest release is Libreboot 20230319, under the `testing` directory.**
### NEW KEY
Full key fingerprint: `98CC DDF8 E560 47F4 75C0 44BD D0C6 2464 FA8B 4856`
The above key is for Libreboot 20221214, and subsequent releases.
This key is for Libreboot releases *after* the 20160907 release.
Download the key here: [lbkey.asc](lbkey.asc)
@ -28,7 +28,7 @@ Libreboot releases are signed using GPG.
### OLD KEY:
This key is for Libreboot 20160907 and all older releases:
This key is for Libreboot 20160907, and releases older than 20160907:
Full key fingerprint: CDC9 CAE3 2CB4 B7FC 84FD C804 969A 9795 05E8 C5B2
@ -51,7 +51,7 @@ there is a Git repository that you can download from. Go here:
HTTPS mirrors {#https}
-------------
**The latest release is Libreboot 20221214, under the `testing` directory.**
**The latest release is Libreboot 20230319, under the `testing` directory.**
These mirrors are recommended, since they use TLS (https://) encryption.
@ -142,7 +142,7 @@ crontab. This page tells you how to use crontab:
HTTP mirrors {#http}
------------
**The latest release is Libreboot 20221214, under the `testing` directory.**
**The latest release is Libreboot 20230319, under the `testing` directory.**
WARNING: these mirrors are non-HTTPS which means that they are
unencrypted. Your traffic could be subject to interference by
@ -156,7 +156,7 @@ if using HTTPS.
FTP mirrors {#ftp}
-----------
**The latest release is Libreboot 20221214, under the `testing` directory.**
**The latest release is Libreboot 20230319, under the `testing` directory.**
WARNING: FTP is also unencrypted, like HTTP. The same risks are present.

View File

@ -14,13 +14,13 @@ Libreboot із джерельного кода, [прочитайте цю ст
Код підпису GPG
---------------
**Останнім випуском є Libreboot 20221214, в директорії `testing`.**
**Останнім випуском є Libreboot 20230319, в директорії `testing`.**
### НОВИЙ КЛЮЧ
Повний відбиток ключа: `98CC DDF8 E560 47F4 75C0 44BD D0C6 2464 FA8B 4856`
Вищезазначений ключ для Libreboot 20221214, та наступних випусків.
Вищезазначений ключ для Libreboot 20230319, та наступних випусків.
Завантажте ключ тут: [lbkey.asc](lbkey.asc)
@ -51,7 +51,7 @@ Libreboot із джерельного кода, [прочитайте цю ст
Дзеркала HTTPS {#https}
-------------
**Останнім випуском є Libreboot 20221214, в директорії `testing`.**
**Останнім випуском є Libreboot 20230319, в директорії `testing`.**
Дані дзеркала є рекомендованими, оскільки використовують TLS (https://) шифрування.
@ -142,7 +142,7 @@ crontab. Ця сторінка розповідає вам, як викорис
Дзеркала HTTP {#http}
------------
**Останнім випуском є Libreboot 20221214, під директорією `testing`.**
**Останнім випуском є Libreboot 20230319, під директорією `testing`.**
УВАГА: ці дзеркала є не-HTTPS, що означає, що вони
незашифровані. Ваш трафік може бути об'єктом втручання
@ -156,7 +156,7 @@ crontab. Ця сторінка розповідає вам, як викорис
Дзеркала FTP {#ftp}
-----------
**Останнім випуском є Libreboot 20221214, під директорією `testing`.**
**Останнім випуском є Libreboot 20230319, під директорією `testing`.**
УВАГА: FTP є також незашифрованим, подібно HTTP. Ті ж самі ризики присутні.

View File

@ -11,8 +11,8 @@ remplacement pour le micrologiciel UEFI/BIOS propriétaire.
Des canaux d'aide sont disponibles
dans le canal [\#libreboot](https://web.libera.chat/#libreboot) sur le serveur IRC [Libera](https://libera.chat/).
**NOUVELLE VERSION: La dernière version est [Libreboot 20221214](news/libreboot20221214.md), sortie
le 14 Décembre 2022.**
**NOUVELLE VERSION: La dernière version est [Libreboot 20230319](news/libreboot20230319.md), sortie
le 14 Mars 2022.**
Pourquoi devriez-vous utiliser Libreboot?
-----------------------------------

View File

@ -13,9 +13,9 @@ firmware. Help is available
via [\#libreboot](https://web.libera.chat/#libreboot)
on [Libera](https://libera.chat/) IRC.
**NEW RELEASE: The latest release is Libreboot 20221214, released on
14 December 2022.
See: [Libreboot 20221214 release announcement](news/libreboot20221214.md).**
**NEW RELEASE: The latest release is Libreboot 20230319, released on
19 March 2023.
See: [Libreboot 20230319 release announcement](news/libreboot20230319.md).**
Why should you use *libreboot*?
----------------------------

View File

@ -13,9 +13,8 @@ x-toc-enable: true
через [\#libreboot](https://web.libera.chat/#libreboot)
на [Libera](https://libera.chat/) IRC.
**НОВИЙ ВИПУСК: Останній випуск Libreboot 20221214, випущено
14 грудня 2022.
Дивіться: [Оголошення про випуск Libreboot 20221214](news/libreboot20221214.md).**
**НОВИЙ ВИПУСК: Останній випуск Libreboot 20230319, випущено 19 березня 2023.
Дивіться: [Оголошення про випуск Libreboot 20230319](news/libreboot20230319.md).**
Чому вам варто використовувати *libreboot*?
----------------------------

View File

@ -1,4 +1,4 @@
libreboot202303xx.md
libreboot20230319.md
usa-libre-part3.md
usa-libre-part2.md
fedfree.md

View File

@ -0,0 +1,305 @@
% Libreboot 20230319 released!
% Leah Rowe
% 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
-----------------
*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
============================
For more detailed change logs, look at the Git repository. This is
a summary of changes.
Brief overview of changes
-----------------
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
--------------------------------
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
----------
* 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
--------------
* 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
------------
The precise list of commits in `lbmk.git` since the last release, is as
follows:
```
* 07b6bb3d - build/release: handle nvmutil (12 hours ago) <Leah Rowe>
* 653810b8 - fix bug: me not being downloaded on some boards (12 hours ago) <Leah Rowe>
* 2bb63d85 - new board: lenovo/w530 (12 hours ago) <Leah Rowe>
* 896e9065 - new board: lenovo/t530 (13 hours ago) <Leah Rowe>
* cffa5679 - haswell (lenovo t440p/w541): fix S3 suspend/resume (14 hours ago) <Leah Rowe>
* be3d7b7e - haswell: re-add mrc.bin in separate board configs (22 hours ago) <Leah Rowe>
* bdc39ffc - haswell: only use txtmod seabios configuration (25 hours ago) <Leah Rowe>
* df6b9e28 - remove t440p_12mb_cbfs4mb (retain t440_12mb) (25 hours ago) <Leah Rowe>
* 04f1fe17 - remove x220_16mb (x220 with 16MB flash) (29 hours ago) <Leah Rowe>
* 548872ce - haswell boards: use libre mrc.bin replacement (2 days ago) <Leah Rowe>
* a942bd65 - move download/gitmodule script to root directory (2 days ago) <Leah Rowe>
* 59540530 - nuke p2b_ls/p3b_f boards (2 days ago) <Leah Rowe>
* ebd9ec96 - debian/ubuntu dependencies scripts: add gettext (3 days ago) <Leah Rowe>
* f9e20b8a - util/nvmutil: optimise rhex() further (13 days ago) <Leah Rowe>
* f04855c2 - fix flashrom download error (13 days ago) <Leah Rowe>
* e2945f02 - payload/grub: force terminal_output to console (2 weeks ago) <Leah Rowe>
* 909d3b31 - grub.cfg: set default timeout to 5 seconds (2 weeks ago) <Leah Rowe>
* 544737c8 - scripts: build cbutils, not specific utils (2 weeks ago) <Leah Rowe>
* 9398ad08 - also fix data.vbt path for lenovo/w541 (2 weeks ago) <Leah Rowe>
* d2465e82 - Fix CONFIG_INTEL_GMA_VBT_FILE for the t440p_12mb config (2 weeks ago) <Konstantinos Koukopoulos>
* 0e34d199 - update debian dependencies (for sid) (2 weeks ago) <Leah Rowe>
* a5aa5bca - ICH9M: default to 256MB VRAM, not 352MB (2 weeks ago) <Leah Rowe>
* 6421af5d - bump seabios revision (4 weeks ago) <Leah Rowe>
* aba6307d - bump grub revision (4 weeks ago) <Leah Rowe>
* 36982ab5 - fix bad ifdtool patch from earlier commit (4 weeks ago) <Leah Rowe>
* 3857b4b6 - build/dependencies/debian: add python3 dependency (4 weeks ago) <Leah Rowe>
* dac9ea86 - build/boot/roms: fail when build cbutils fails (4 weeks ago) <Leah Rowe>
* 0d0f6cf3 - coreboot: update revision of cbtree "default" (4 weeks ago) <Leah Rowe>
* dc1fedf9 - Merge branch 'uboot-v2023.01' of alpernebbi/lbmk into master (4 weeks ago) <Leah Rowe>
|\
| * 7932d5fa - u-boot: Disable environment storage (5 weeks ago) <Alper Nebi Yasak>
| * 8d57468e - u-boot: Update to v2023.01 (5 weeks ago) <Alper Nebi Yasak>
|/
* 6b4a14ce - util/nvmutil: tidy up variable declarations (7 weeks ago) <Leah Rowe>
* 031a0b55 - util/nvmutil: setWord(): declare variables first (7 weeks ago) <Leah Rowe>
* 257eedca - util/nvmutil: reset errno if any write attempted (7 weeks ago) <Leah Rowe>
* adc76e38 - util/nvmutil: do not write non-changes to disk (7 weeks ago) <Leah Rowe>
* 3e150bf3 - util/nvmutil: cmd_swap(): write sequentually (7 weeks ago) <Leah Rowe>
* 7e3a7355 - util/nvmutil: don't use malloc() (7 weeks ago) <Leah Rowe>
* a924d43b - util/nvmutil: fix clang build errors (7 weeks ago) <Leah Rowe>
* c822033b - util/nvmutil: simplify rhex() (7 weeks ago) <Leah Rowe>
* 0f485245 - util/nvmutil: use gbe[] in word() and setword() (7 weeks ago) <Leah Rowe>
* b1186968 - util/nvmutil: code cleanup (7 weeks ago) <Leah Rowe>
* 7a986497 - util/nvmutil: call pledge() earlier, in main() (7 weeks ago) <Leah Rowe>
* bb6fe263 - util/nvmutil: remove unused #define (7 weeks ago) <Leah Rowe>
* 5a5a8662 - util/nvmutil: optimised disk reads (7 weeks ago) <Leah Rowe>
* 24d56456 - util/nvmutil: optimise cmd_swap() (7 weeks ago) <Leah Rowe>
* ef84329a - util/nvmutil: optimise rhex() for speed (7 weeks ago) <Leah Rowe>
* 88a51531 - util/nvmutil: code cleanup in rhex() (7 weeks ago) <Leah Rowe>
* ac1cab28 - x230edp_12mb: Correct the path to data.vbt (7 weeks ago) <Alexei Sorokin>
* afc80b89 - util/nvmutil: update copyright years (9 weeks ago) <Leah Rowe>
* 8242dca5 - util/nvmutil: limit bytes written per command (9 weeks ago) <Leah Rowe>
* e398331b - util/nvmutil: make writeGbeFile more readable (9 weeks ago) <Leah Rowe>
* 8dea350a - util/nvmutil: only write parts that are modified (9 weeks ago) <Leah Rowe>
* d0fa08d5 - blobs/inject: fix wrong nvmutil path for make (10 weeks ago) <Leah Rowe>
* e8072934 - Merge branch 'veyron-uboot-dmreset' of alpernebbi/lbmk into master (10 weeks ago) <Leah Rowe>
|\
| * e11650c3 - u-boot: Enable DM_RESET for veyron boards (3 months ago) <Alper Nebi Yasak>
* | 6b104542 - Merge branch 'peach-uboot-usbehci' of alpernebbi/lbmk into master (10 weeks ago) <Leah Rowe>
|\ \
| |/
|/|
| * 80bf54b2 - u-boot: Enable USB_EHCI_EXYNOS on peach boards (3 months ago) <Alper Nebi Yasak>
|/
* 7f5dfebf - Do not rely on bashisms and behaviour undefined by the POSIX specification. Part 2 (3 months ago) <Ferass 'Vitali64' EL HAFIDI>
* f7870446 - Do not rely on bashisms and behaviour undefined by the POSIX specification. (3 months ago) <Ferass 'Vitali64' EL HAFIDI>
* d45b2e70 - util/nvmutil: use err() more consistently (3 months ago) <Leah Rowe>
* d726b16f - util/nvmutil: more robust pointer handling (3 months ago) <Leah Rowe>
* 448ee510 - util/nvmutil: optimise cmd_swap() further (3 months ago) <Leah Rowe>
* effcb942 - util/nvmutil: greatly optimise cmd_copy() (3 months ago) <Leah Rowe>
* 6e5828e4 - util/nvmutil: greatly optimise cmd_swap() (3 months ago) <Leah Rowe>
* 7aafc62b - scripts/blobs/inject: fix bad cbfstool build check (3 months ago) <Leah Rowe>
* 6ebd178f - util/nvmutil: simplified error handling in rhex() (3 months ago) <Leah Rowe>
* 04da953c - util/nvmutil: return errno when calling err() (3 months ago) <Leah Rowe>
* 00187811 - util/nvmutil: exit non-zero if close() fails (3 months ago) <Leah Rowe>
```
Major works planned
===================
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
---------------------
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
---------------------------
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 <pmenzel@molgen.mpg.de>
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!

View File

@ -1,112 +0,0 @@
% March 2023 Libreboot release expected soon
% Leah Rowe
% 16 March 2023
Introduction
============
Development on Libreboot has largely focused on fixing issues since the
December 2022 release, and I very recently updated coreboot revisions (for
x86 boards) to a newer February 2023 revision. The GRUB and SeaBIOS payloads
have also been updated to newer revisions from upstream. A few minor fixes
here and there (e.g. VRAM size on GM45 machines causing instability, heavy
code re-factoring of nvmutil, minor build system tweaks).
The build system in Libreboot has matured quite a bit since the reboot of the
project back in 2021, to the point where much less work on the build system is
needed these days. The focus from now on is going to be on new hardware support
and hardware testing (an ambitious agenda, for which board maintainers will be
needed).
Saturday, 18 March 2023
-----------------------
I'll have more to say on the day of release, via Change Log, but
I'm basically confident that I'll have a new Libreboot release out
the door on ~Saturday, 18 March 2023. This release will be marked *testing*,
because there are still many blockers preventing the declaration of a stable
release, but in practise all of the boards that have pre-built ROMs will
at least boot and be usable.
The current state of Libreboot is that it's ready for a new testing
release, without many major issues, but for one major problem:
Haswell S3 issue (and fix)
==========================
The problem
-----------
The S3 suspend/resume feature on Haswell (ThinkPad T440p/W541) is still
broken. Resuming from suspend results in a cold boot. This is due to quirks in
how Intel's MRC blob works (for raminit), coupled with how Libreboot configures
both the IFD and CBFS size in coreboot.
I now know of two possible ways to fix it, and I'm confident that one or both
will be effective:
Fix
---
The Heads project, which is another coreboot distro similar to Libreboot,
recently added T440p support, but they fixed the S3 bug. The relevant
differences in their firmware, compared to Libreboot, is as follows:
* IFD changes, related to read/write bits. Most likely irrelevant for the
purpose of this
* CBFS size on theirs is set to 8MB, and the reasoning is explained here:
<https://github.com/osresearch/heads/pull/1282/commits/f0792117efa177ded19878f652c5a28e8cc62a71>
Basically, the `mrc.bin` blob provided for raminit on Haswell (T440p/W541 etc)
caches the coreboot code in ways that Libreboot currently screws up. At the
time of this post, I'm currently adapting the changes from Heads and conducting
tests. I believe their changes will fix it.
However, 8MB CBFS is far from ideal, as Libreboot currently provides much
larger size of ~11.7MB CBFS size (same size as that of the BIOS region, per
rules set in the intel flash descriptor).
Heads also has unrelated differences in its IFD, which you can read about here:
<https://github.com/osresearch/heads/pull/1282#issuecomment-1400634600>
Libre MRC replacement
---------------------
Angel Pons (`hell` on coreboot IRC) has been reverse engineering `mrc.bin` on
Haswell platforms. I've learned that they have in fact released a WIP of their
work, and it apparently works well. You can find the patch set here:
<https://review.coreboot.org/c/coreboot/+/64176/5/>
When you follow up on the chain of commits, it ends here:
<https://review.coreboot.org/c/coreboot/+/64198/5>
The MRC blob provides initialisation of the memory controller. Hell's work
implements a libre replacement of it, with source code.
Plan
----
Unrelated to the S3 issue, I'm testing the differing IFD setup from Heads,
but inserted into Libreboot.
Then I'm going to *ignore* the 8MB CBFS config option in Heads, and retain
the current larger CBFS size set in Libreboot. I shall do this, while
merging Angel's patches into Libreboot (coreboot has not yet merged them,
so the patches are under review, but Libreboot has integrated unmerged patches
before, from coreboot).
If the libre raminit works, then I'll re-test the S3 suspend/resume function.
Whether or not that fixes it, I will start building the Libreboot release.
(my first priority, per Libreboot's binary blob reduction policy, is to provide
libre code wherever possible - broken S3 suspend/resume would not be enough to
make me retain the `mrc.bin` blob).
I was hoping to have the release out *today*, but instead I've decided to
announce that today that I'm working on it.
This business with Haswell is the only major issue I've yet to fix in
Libreboot, at least for x86.
*ETA Saturday, 18 March 2023 for release. Libreboot 20230318.*