Index
Warning
This document was written many years ago, and the nature of Open Source projects like coreboot means that options may change in name and or in function. The rest of the guide (extracting and flashing the BIOS) should remain largely the same.
Module preparation
See https://tylercipriani.com/blog/2016/11/13/coreboot-on-the-thinkpad-x220-with-a-raspberry-pi/
- Setup a RPi
- Build flashrom on it
- Connect RPi to BIOS chip
- Dump Firmware off chip
- Dump multiple times until you have multiple files with the same hashes
- Copy to workstation
- Use ifdtool (from the coreboot sources) to modify (unlock) descriptor (may not actually be necessary)
- ifdtool -u <firmware.bin>
- Extract partitions
- ifdtool -x <firmware.bin>
- Run me_cleaner over ME partition
- Get it from https://github.com/corna/me_cleaner
- python3 <me_cleaner_location>/me_cleaner.py flashregion_2_intel_me.bin
VGA BIOS extraction (optional)
This allows graphics in GRUB to work as intended, the text themes should work fine, SeaBIOS works fine without it, and the moment linux touches the GPU it all works anyway.
Download UEFITool - get it from https://github.com/LongSoft/UEFITool
Compile UEFITool - run qmake uefitool.pro && make (requires QT5)
Open whole firmware image
Search "VGA Compatible BIOS" (Under "Text" tab, with "Unicode" off)
In the results in the bottom double click a (hopefully the only) result
- UEFITool with the module containing the VGA BIOS selected
Right click "extract body", save as vgabios.bin
(Further optional) Double check the module extracted is correct:
Install fcode-utils (debian)
Run romheaders vgabios.bin
Expect the following:
- romheaders output for the X220 VGA BIOS
Coreboot prep
Follow the usual setup instructions for coreboot - pull the git repo, initialise the submodules, build the toolchain etc.
Run make like usual
Flash the image!
Pretty self explanatory, use the -w instead of -r flag on flashrom.
Notes:
- CONFIG_USE_OPTION_TABLE=y Allows you to set things like the power management beeps using nvramtool, and the nvramcui payload
- The other secondary payloads are optional too
- CONFIG_SEABIOS_MASTER=y Seems to be required, using the numbered version may not work
- If you don't want to use the VGA rom, select "Devices/Use native graphics initialization" (MAINBOARD_DO_NATIVE_VGA_INIT)