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 and ich9gen (found here: ich9utils 1)
    • ich9utils must be compiled, using make and gcc
  • 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

    • 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
    
  • 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.


  1. flashrom may be available from distribution repositories (due to its role in upstream coreboot), but ich9utils was developed exclusively for GM45 machines, and is therefore only available from the Libreboot project. ↩︎

  2. Be aware of the differences between the traditional eth0 interface, and Predictable Network Interface Names in systemd↩︎