Introduction
The Libreboot documentation can be difficult to understand, and even more confusing to navigate.
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
-
On the target machine, generate a
.bin
file containing the MAC address of the ethernet interface 2# 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-
flashrom
throws/dev/mem
errors, unless thelpc_ich
kernel module is removedsudo modprobe -r lpc_ich
# 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
- In addition, the flash chip must be specified using the
-c
option
sudo flashrom -p internal:laptop=force_I_want_a_brick,boardmismatch=force -w libreboot.rom
- In addition, the flash chip must be specified using the
-
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 only available from the Libreboot project. ↩︎ -
Be aware of the differences between the traditional
eth0
interface, and Predictable Network Interface Names insystemd
. ↩︎