Introduction
The Libreboot documentation can be confusing to navigate and understand.
This is a guide on how to internally flash Libreboot, on GM45 ThinkPads which have already had their BIOS flashed externally.
Quick setup
- Install
flashrom
andich9gen
(found here:ich9utils
1)ich9utils
must be compiled, usingmake
andgcc
- Download the latest Libreboot release
- On the target machine, generate a
.bin
file containing the MAC address of the ethernet interface2
# Determine the MAC address of the ethernet interface
ip link
# Enter the MAC address
ich9gen --macaddress 00:1f:16:80:80:80
- Write the
.bin
file to the Libreboot ROM, noting the size of the flash chip
# Note the size of the flash chip, and write the appropriate .bin
# 4m, 8m or 16m
flashrom -p internal
# Write the .bin to the ROM
dd if=ich9fdgbe_8m.bin of=libreboot.rom bs=12k count=1 conv=notrunc
- Write the ROM to the flash chip
- The flash chip must be specified using the
-c
option
- The flash chip must be specified using the
sudo flashrom -p internal:laptop=force_I_want_a_brick,boardmismatch=force -w libreboot.rom
- Dump the flashed ROM and compare the hashes
# Make multiple dumps from the chip
sudo flashrom -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump1.bin
sudo flashrom -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump2.bin
sudo flashrom -p internal:laptop=force_I_want_a_brick,boardmismatch=force -r dump3.bin
# Compare the hashes against the ROM, ensuring that they are all the same
sha1sum dump*.bin libreboot.rom
And done.
-
flashrom
may be available from distribution repositories (due to its role in upstream coreboot), butich9utils
was developed exclusively for GM45 machines, and is therefore available from the Libreboot project. ↩︎ -
Be aware of the differences between the traditional
eth0
interface, and Predictable Network Interface Names insystemd
. ↩︎