Skip to content

Commit 0b4befa

Browse files
committed
Merge osresearch/master: resolve conflicts in initrd/bin/reboot and initrd/bin/kexec-seal-key
2 parents 21adb0d + ec2a790 commit 0b4befa

110 files changed

Lines changed: 2737 additions & 3430 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.circleci/config.yml

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ jobs:
195195
- build/ppc64/musl-cross-make-fd6be58297ee21fcba89216ccd0d4aca1e3f1c5c
196196
- build/x86/coreboot-4.11
197197
- build/x86/coreboot-24.02.01
198-
- build/x86/coreboot-24.12
198+
- build/x86/coreboot-25.09
199199
- build/x86/coreboot-dasharo
200200
- build/x86/coreboot-purism
201201
- build/x86/musl-cross-make-fd6be58297ee21fcba89216ccd0d4aca1e3f1c5c
@@ -213,6 +213,7 @@ jobs:
213213
workflows:
214214
version: 2
215215
build_and_test:
216+
max_auto_reruns: 3
216217
jobs:
217218
- prep_env
218219

@@ -252,7 +253,7 @@ workflows:
252253
requires:
253254
- novacustom-nv4x_adl
254255

255-
# t480 is based on 24.12 coreboot release, not sharing any buildstack from now, depend on muscl-cross cache
256+
# t480 is based on 25.09 coreboot release, not sharing any buildstack from now, depend on muscl-cross cache
256257
- build_and_persist:
257258
name: EOL_t480-hotp-maximized
258259
target: EOL_t480-hotp-maximized
@@ -285,7 +286,7 @@ workflows:
285286
- EOL_t480-hotp-maximized
286287

287288
# Those onboarding new boards should add their entries below.
288-
# coreboot 24.12 boards
289+
# coreboot 25.09 boards
289290
- build:
290291
name: EOL_x220-hotp-maximized
291292
target: EOL_x220-hotp-maximized
@@ -420,29 +421,29 @@ workflows:
420421
- EOL_t480-hotp-maximized
421422

422423
- build:
423-
name: EOL_UNTESTED_t440p-maximized
424-
target: EOL_UNTESTED_t440p-maximized
424+
name: EOL_t440p-maximized
425+
target: EOL_t440p-maximized
425426
subcommand: ""
426427
requires:
427428
- EOL_t480-hotp-maximized
428429

429430
- build:
430-
name: EOL_UNTESTED_t440p-hotp-maximized
431-
target: EOL_UNTESTED_t440p-hotp-maximized
431+
name: EOL_t440p-hotp-maximized
432+
target: EOL_t440p-hotp-maximized
432433
subcommand: ""
433434
requires:
434435
- EOL_t480-hotp-maximized
435436

436437
- build:
437-
name: EOL_UNTESTED_w541-maximized
438-
target: EOL_UNTESTED_w541-maximized
438+
name: EOL_w541-maximized
439+
target: EOL_w541-maximized
439440
subcommand: ""
440441
requires:
441442
- EOL_t480-hotp-maximized
442443

443444
- build:
444-
name: EOL_UNTESTED_w541-hotp-maximized
445-
target: EOL_UNTESTED_w541-hotp-maximized
445+
name: EOL_w541-hotp-maximized
446+
target: EOL_w541-hotp-maximized
446447
subcommand: ""
447448
requires:
448449
- EOL_t480-hotp-maximized
@@ -455,15 +456,15 @@ workflows:
455456
- EOL_t480-hotp-maximized
456457

457458
- build:
458-
name: EOL_UNTESTED_z220-cmt-maximized
459-
target: EOL_UNTESTED_z220-cmt-maximized
459+
name: EOL_z220-cmt-maximized
460+
target: EOL_z220-cmt-maximized
460461
subcommand: ""
461462
requires:
462463
- EOL_t480-hotp-maximized
463464

464465
- build:
465-
name: EOL_UNTESTED_z220-cmt-hotp-maximized
466-
target: EOL_UNTESTED_z220-cmt-hotp-maximized
466+
name: EOL_z220-cmt-hotp-maximized
467+
target: EOL_z220-cmt-hotp-maximized
467468
subcommand: ""
468469
requires:
469470
- EOL_t480-hotp-maximized
@@ -526,7 +527,7 @@ workflows:
526527
requires:
527528
- librem_14
528529

529-
# t480 is based on 24.12 coreboot release, not sharing any buildstack from now, depend on muscl-cross cache
530+
# t480 is based on 25.09 coreboot release, not sharing any buildstack from now, depend on muscl-cross cache
530531
- build:
531532
name: EOL_t480-maximized
532533
target: EOL_t480-maximized

BOARDS_AND_TESTERS.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,12 @@ xx30 (Ivy Bridge: Intel 3rd Gen CPU)
4949
- [ ] w530 (xx30): @eganonoa @zifxify @weyounsix (dGPU: w530-k2000m) @jnscmns (dGPU K1000M) @computer-user123 (w530 / w530 k2000: prefers iGPU) @tlaurio
5050
- [ ] x230 (xx30): @nestire @tlaurion @merge @jan23 @MrChromebox @shamen123 @eganonoa @bwachter @Thrilleratplay @jnscmns
5151
- [ ] x230-fhd/edp variant: @n4ru @computer-user123 (nitro caster board) @Tonux599 @househead @pcm720 (eDP 4.0 board and 1440p display) @doob85 https://matrix.to/#/@rsabdpy:matrix.org (agan mod board)
52-
- [ ] x230t: @fhvyhjriur
5352
- [ ] t530 (xx30): @fhvyhjriur @3hhh (See: https://github.com/linuxboot/heads/issues/1682)
5453

5554
xx4x (Haswell: Intel 4th Gen CPU)
5655
===
57-
- [ ] t440p: @fhvyhjriur @ThePlexus @srgrint @akunterkontrolle @rbreslow
58-
- [ ] w541 (similar of t440p): @ResendeGHF @gaspar-ilom (Late tested; at risk of deprecation)
56+
- [ ] t440p: @MattClifton76 @fhvyhjriur @ThePlexus @srgrint @akunterkontrolle @rbreslow
57+
- [ ] w541 (similar of t440p): @gaspar-ilom @ResendeGHF
5958

6059
xx8x (Kaby Lake Refresh: Intel 8th Gen Mobile : ESU ended 12/31/2024)
6160
===

Makefile

Lines changed: 20 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,14 @@ $(info !!!!!! Build starts !!!!!!)
7272
DATE=`date --rfc-3339=seconds`
7373

7474
BOARD ?= qemu-coreboot-fbwhiptail-tpm1
75+
76+
# If the board name begins with UNMAINTAINED_, use the
77+
# unmaintained_boards path.
78+
ifeq "y" "$(shell echo '$(BOARD)' | grep -E '^UNMAINTAINED_' >/dev/null 2>&1 && echo y)"
79+
CONFIG := $(pwd)/unmaintained_boards/$(BOARD)/$(BOARD).config
80+
else
7581
CONFIG := $(pwd)/boards/$(BOARD)/$(BOARD).config
82+
endif
7683

7784
ifneq "y" "$(shell [ -r '$(CONFIG)' ] && echo y)"
7885
$(error $(CONFIG): board configuration does not exist)
@@ -907,7 +914,7 @@ $(board_build)/$(CB_OUTPUT_BASENAME)-gpg-injected.rom: $(board_build)/$(CB_OUTPU
907914

908915
board.move_untested_to_tested:
909916
@echo "Moving $(BOARD) from UNTESTED to tested status"
910-
@NEW_BOARD=$$(echo $(BOARD) | sed 's/^UNTESTED_//'); \
917+
@NEW_BOARD=$$(echo $(BOARD) | sed -E 's/(^EOL_|^)UNTESTED_/\1/'); \
911918
INCLUDE_BOARD=$$(grep "include \$$(pwd)/boards/" boards/$(BOARD)/$(BOARD).config | sed 's/.*boards\/\(.*\)\/.*/\1/'); \
912919
NEW_INCLUDE_BOARD=$$(echo $$INCLUDE_BOARD | sed 's/^UNTESTED_//'); \
913920
echo "Updating config file: boards/$(BOARD)/$(BOARD).config"; \
@@ -923,11 +930,12 @@ board.move_untested_to_tested:
923930

924931
board.move_unmaintained_to_tested:
925932
@echo "NEW_BOARD variable will remove UNMAINTAINED_ prefix from $(BOARD)"
926-
@NEW_BOARD=$$(echo $(BOARD) | sed 's/^UNMAINTAINED_//'); \
927-
echo "Renaming boards/$$BOARD/$$BOARD.config to boards/$$BOARD/$$NEW_BOARD.config"; \
928-
git mv boards/$$BOARD/$$BOARD.config boards/$$BOARD/$$NEW_BOARD.config; \
933+
@NEW_BOARD=$$(echo $(BOARD) | sed -E 's/(^EOL_|^)UNMAINTAINED_/\1/'); \
934+
echo "Renaming unmaintained_boards/$$BOARD/$$BOARD.config to boards/$$BOARD/$$NEW_BOARD.config"; \
935+
mkdir -p boards/$$BOARD; \
936+
git mv unmaintained_boards/$$BOARD/$$BOARD.config boards/$$BOARD/$$NEW_BOARD.config; \
929937
echo "Renaming boards/$$BOARD to boards/$$NEW_BOARD"; \
930-
rm -rf boards/$$NEW_BOARD; \
938+
rm -rf boards/$$NEW_BOARD unmaintained_boards/$$BOARD; \
931939
git mv boards/$$BOARD boards/$$NEW_BOARD; \
932940
echo "Replacing $$BOARD with $$NEW_BOARD in .circleci/config.yml"; \
933941
sed -i "s/$$BOARD/$$NEW_BOARD/g" .circleci/config.yml; \
@@ -936,19 +944,19 @@ board.move_unmaintained_to_tested:
936944

937945
board.move_untested_to_unmaintained:
938946
@echo "NEW_BOARD variable will move from UNTESTED_ to UNMAINTAINED_ from $(BOARD)"
939-
@NEW_BOARD=$$(echo $(BOARD) | sed 's/^UNTESTED_/UNMAINTAINED_/g'); \
940-
echo "Renaming boards/$$BOARD/$$BOARD.config to boards/$$BOARD/$$NEW_BOARD.config"; \
947+
@NEW_BOARD=$$(echo $(BOARD) | sed -E 's/(^EOL_|^)UNTESTED_/\1UNMAINTAINED_/'); \
948+
echo "Renaming boards/$$BOARD to unmaintained_boards/$$NEW_BOARD"; \
941949
mkdir -p unmaintained_boards; \
942-
git mv boards/$$BOARD/$$BOARD.config unmaintained_boards/$$BOARD/$$NEW_BOARD.config; \
943-
echo "Renaming boards/$$BOARD to unmaintainted_boards/$$NEW_BOARD"; \
944-
rm -rf boards/$$NEW_BOARD; \
945950
git mv boards/$$BOARD unmaintained_boards/$$NEW_BOARD; \
951+
echo "Renaming unmaintained_boards/$$NEW_BOARD/$$BOARD.config to unmaintained_boards/$$NEW_BOARD/$$NEW_BOARD.config"; \
952+
rm -rf boards/$$NEW_BOARD; \
953+
git mv unmaintained_boards/$$NEW_BOARD/$$BOARD.config unmaintained_boards/$$NEW_BOARD/$$NEW_BOARD.config; \
946954
echo "Replacing $$BOARD with $$NEW_BOARD in .circleci/config.yml. Delete manually entries"; \
947955
sed -i "s/$$BOARD/$$NEW_BOARD/g" .circleci/config.yml
948956

949957
board.move_tested_to_untested:
950958
@echo "NEW_BOARD variable will add UNTESTED_ prefix to $(BOARD)"
951-
@NEW_BOARD=UNTESTED_$(BOARD); \
959+
@NEW_BOARD=$$(echo $(BOARD) | sed -E 's/(^EOL_|^)/\1UNTESTED_/'); \
952960
rm -rf boards/$${NEW_BOARD}; \
953961
echo "Renaming boards/$(BOARD)/$(BOARD).config to boards/$(BOARD)/$${NEW_BOARD}.config"; \
954962
git mv boards/$(BOARD)/$(BOARD).config boards/$(BOARD)/$${NEW_BOARD}.config; \
@@ -970,7 +978,7 @@ board.move_tested_to_EOL:
970978

971979
board.move_tested_to_unmaintained:
972980
@echo "Moving $(BOARD) from tested to unmaintained status"
973-
@NEW_BOARD=UNMAINTAINED_$(BOARD); \
981+
@NEW_BOARD=$$(echo $(BOARD) | sed -E 's/(^EOL_|^)/\1UNMAINTAINED_/'); \
974982
INCLUDE_BOARD=$$(grep "include \$$(pwd)/boards/" boards/$(BOARD)/$(BOARD).config | sed 's/.*boards\/\(.*\)\/.*/\1/'); \
975983
NEW_INCLUDE_BOARD=UNMAINTAINED_$${INCLUDE_BOARD}; \
976984
echo "Updating config file: boards/$(BOARD)/$(BOARD).config"; \

bin/seed_package_mirror.sh

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,8 +56,8 @@ echo "Downloading packages..."
5656
make packages BOARD=qemu-coreboot-fbwhiptail-tpm1-hotp
5757
make packages BOARD=UNTESTED_talos-2 # newt, PPC
5858
make packages BOARD=librem_l1um_v2 # TPM2
59-
make packages BOARD=librem_l1um # coreboot 4.11
60-
make packages BOARD=x230-maximized # io386
59+
make packages BOARD=EOL_librem_l1um # coreboot 4.11
60+
make packages BOARD=EOL_x230-maximized # io386
6161
echo
6262
echo "Copying to mirror directory..."
6363
mkdir -p "$ARG_MIRROR_DIR"

blobs/haswell/.gitignore

Lines changed: 0 additions & 1 deletion
This file was deleted.

blobs/haswell/obtain-mrc

Lines changed: 0 additions & 45 deletions
This file was deleted.

blobs/t440p/README.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77

88
Coreboot on the T440p requires the following binary blobs:
99

10-
- `mrc.bin` - Consists of Intel’s Memory Reference Code (MRC) and [is used to initialize the DRAM](https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html).
1110
- `me.bin` - Consists of Intel’s Management Engine (ME), which we modify using [me_cleaner](https://github.com/corna/me_cleaner) to remove all but the modules which are necessary for the CPU to function.
1211
- `gbe.bin` - Consists of hardware/software configuration data for the Gigabit Ethernet (GbE) controller. Intel publishes the data structure [here](https://web.archive.org/web/20230122164346/https://www.intel.com/content/dam/www/public/us/en/documents/design-guides/i-o-controller-hub-8-9-nvm-map-guide.pdf), and an [ImHex](https://github.com/WerWolv/ImHex) hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_lan_nvm.hexpat).
1312
- `ifd.bin` - Consists of the Intel Flash Descriptor (IFD). Intel publishes the data structure [here](https://web.archive.org/web/20221208011432/https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/io-controller-hub-8-datasheet.pdf), and an ImHex hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_flash_descriptor.hexpat).
1413

1514
Heads supplies an IFD and GbE blob, which we extracted from a donor board. We changed the MAC address of the GbE blob to `00:de:ad:c0:ff:ee` using [nvmutil](https://libreboot.org/docs/install/nvmutil.html), to support anonymity and build reproducibility.
1615

17-
When building any T440p board variant with `make`, the build system will download a copy of the MRC and Intel ME. We extract `mrc.bin` from a Chromebook firmware image and `me.bin` from a Lenovo firmware update.
16+
When building any T440p board variant with `make`, the build system will download a copy of the Intel ME. We extract the `me.bin` from a Lenovo firmware update.
17+
18+
### Native Ram Initialization
19+
20+
Note that due to native ram initialization for haswell boards in coreboot it is no longer necessary to use a third party blob (`mrc.bin`) for that.
1821

1922
## Using Your Own Blobs
2023

blobs/w541/README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,17 @@
77

88
Coreboot on the W541 requires the following binary blobs:
99

10-
- `mrc.bin` - Consists of Intel’s Memory Reference Code (MRC) and [is used to initialize the DRAM](https://doc.coreboot.org/northbridge/intel/haswell/mrc.bin.html).
1110
- `me.bin` - Consists of Intel’s Management Engine (ME), which we modify using [me_cleaner](https://github.com/corna/me_cleaner) to remove all but the modules which are necessary for the CPU to function.
1211
- `gbe.bin` - Consists of hardware/software configuration data for the Gigabit Ethernet (GbE) controller. Intel publishes the data structure [here](https://web.archive.org/web/20230122164346/https://www.intel.com/content/dam/www/public/us/en/documents/design-guides/i-o-controller-hub-8-9-nvm-map-guide.pdf), and an [ImHex](https://github.com/WerWolv/ImHex) hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_lan_nvm.hexpat).
1312
- `ifd.bin` - Consists of the Intel Flash Descriptor (IFD). Intel publishes the data structure [here](https://web.archive.org/web/20221208011432/https://www.intel.com/content/dam/www/public/us/en/documents/datasheets/io-controller-hub-8-datasheet.pdf), and an ImHex hex editor pattern is available [here](https://github.com/rbreslow/ImHex-Patterns/blob/rb/intel-ich8/patterns/intel/ich8_flash_descriptor.hexpat).
1413

1514
Heads supplies an IFD and GbE blob, which we extracted from a donor board. We changed the MAC address of the GbE blob to `00:de:ad:c0:ff:ee` using [nvmutil](https://libreboot.org/docs/install/nvmutil.html), to support anonymity and build reproducibility.
1615

17-
When building any W541 board variant with `make`, the build system will download a copy of the MRC and Intel ME. We extract `mrc.bin` from a Chromebook firmware image and `me.bin` from a Lenovo firmware update.
16+
When building any W541 board variant with `make`, the build system will download a copy of the Intel ME. We extract the `me.bin` from a Lenovo firmware update.
17+
18+
### Native Ram Initialization
19+
20+
Note that due to native ram initialization for haswell boards in coreboot it is no longer necessary to use a third party blob (`mrc.bin`)
1821

1922
## Using Your Own Blobs
2023

@@ -37,4 +40,4 @@ Now, you can rebuild Heads:
3740

3841
```console
3942
$ make BOARD=w541-hotp-maximized
40-
```
43+
```

blobs/xx30/optiplex_7010_9010.sh

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -34,11 +34,17 @@ if [[ ! -f "${output_dir}/IVB_BIOSAC_PRODUCTION.bin" ]] || [[ ! -f "${output_dir
3434
#Download sinit
3535
# Original URL got rid of needed file, keeping original URL. Let's use archive.org
3636
#wget https://cdrdv2.intel.com/v1/dl/getContent/630744 -O sinit.zip
37-
wget http://web.archive.org/web/20230712081031/https://cdrdv2.intel.com/v1/dl/getContent/630744 -O sinit.zip
38-
unzip sinit.zip
39-
mv 630744_002/SNB_IVB_SINIT_20190708_PW.bin "${output_dir}/"
40-
41-
popd || exit
37+
if wget http://web.archive.org/web/20230712081031/https://cdrdv2.intel.com/v1/dl/getContent/630744 -O sinit.zip; then
38+
unzip sinit.zip
39+
mv 630744_002/SNB_IVB_SINIT_20190708_PW.bin "${output_dir}/"
40+
popd || exit
41+
elif wget https://dl.3mdeb.com/mirror/intel/acm/SNB_IVB_SINIT_20190708_PW.bin -O "${output_dir}/SNB_IVB_SINIT_20190708_PW.bin"; then
42+
# As per https://github.com/Dasharo/dasharo-issues/issues/1283#issuecomment-3178940096 : use 3mdeb's intel mirror for sinit blob
43+
popd || exit
44+
else
45+
echo "Can't download sinit blob, failing"
46+
exit 1
47+
fi
4248
fi
4349

4450
if ! echo "${EC_BLOB_HASH} ${output_dir}/sch5545_ecfw.bin" | sha256sum --check; then

blobs/xx80/README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@ The following blobs are needed:
77
* `me.bin`
88
* `tb.bin` (optional but recommended flashing this blob to the separate Thunderbolt SPI chip to fix a bug in the original firmware)
99

10-
## me.bin: automatically extract, neuter and deguard
10+
## me.bin: automatically extract, deactivate, partially neuter and deguard
1111

12-
download_clean_me.sh : Download vulnerable ME from Dell, verify checksum, extract ME, neuter ME and trim it, then apply the deguard patch and place it into me.bin
12+
download_clean_deguard_me_pad_tb.sh : Download vulnerable ME from Dell, verify checksum, extract ME, deactivate ME and paritally neuter it, then apply the deguard patch and place it into me.bin.
13+
For the technical details please read the documentation in the script itself, as removing modules is limited on the platform.
1314

1415
The ME blob dumped in this directory comes from the following link: https://dl.dell.com/FOLDER04573471M/1/Inspiron_5468_1.3.0.exe
1516

@@ -31,7 +32,7 @@ The GBE MAC address was forged to: `00:DE:AD:C0:FF:EE MAC`
3132
## tb.bin
3233

3334
This blob was extracted from https://download.lenovo.com/pccbbs/mobiles/n24th13w.exe
34-
It is zero-padded to 1MB and should be flashed to the Thunderbolt SPI chip, which is not the same as the 16MB chip to which the heads rom is flashed. External flashing is recommended as the only way to reliably fix a bug in the original Thunderbolt software on the SPI chip. You can find a guide here: https://osresearch.net/T430-maximized-flashing/
35+
It is zero-padded to 1MB and should be flashed to the Thunderbolt SPI chip, which is not the same as the 16MB chip to which the heads rom is flashed. External flashing is recommended as the only way to reliably fix a bug in the original Thunderbolt software on the SPI chip. You can find a guide here: https://osresearch.net/T480-maximized-flashing/
3536

3637
## Integrity
3738

@@ -50,4 +51,6 @@ See the board configs `boards/t480-[hotp-]maximized/t480-[hotp-]maximized.config
5051
# Documentation
5152

5253
A guide on how to flash this board (both the Heads rom and the Thunderbolt `tb.bin` blob) can be found here:
53-
https://osresearch.net/T430-maximized-flashing/
54+
https://osresearch.net/T480-maximized-flashing/
55+
56+
The upstream documentation is available here. It includes a list of known issues: https://doc.coreboot.org/mainboard/lenovo/t480.html

0 commit comments

Comments
 (0)