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 chipflashrom
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
. ↩︎