game, game. repeat.

How To Install Coreboot Onto Your Lenovo Thinkpad X200 Laptop

Mon 27 February 2017 #openbsd

I flashed a Lenovo x200 with Coreboot with Intel microcode enabled, ME removed, and the gigabit ethernet firmware from Libreboot. Everything seems to work with OpenBSD (my daily driver OS). Unlike with Libreboot, which comes with a Grub2 payload, Coreboot uses the SeaBIOS payload by default and it can boot an encrypted OpenBSD volume. I’m encountering what seems to be a random lockup every few days, haven’t had a chance to troubleshoot it yet.

Let’s Do This

  1. Buy stuff: BeagleBone Black, BBB case, 3.3v power source, USB-A to USB-A cable for the 3.3v power source, micro-HDMI adapter, test clip, jumper cables, SD card with USB adapter.

  2. Build a Coreboot ROM by following the normal instructions and using the default build settings. I used a Debian qemu VM to build with, but I suppose I could have used the Beaglebone. 2017-04-07 update: the BeagleBone Black doesn’t have enough RAM to build coreboot…2 GB or more is a good idea. And you must at a minimum configure Mainboard vendor, Mainboard model, and ROM chip size. 2017-04-25 update: you must compile SeaBIOS with CONFIG_VGA_COREBOOT=y and compile coreboot with CONFIG_VGA_BIOS=y, CONFIG_VGA_BIOS_FILE="", CONFIG_MAINBOARD_DO_NATIVE_VGA_INIT, and comment out CONFIG_VGA_ROM_RUN and other options with default values except for those in the “Mainboard” category like vendor, model, device in order to see the SeaBIOS prompt (rather than a blank screen) until OpenBSD boots.

  3. Flash your x200 …but use the Coreboot ROM that you made in the last step, instead of the Libreboot ROM, follow the rest of the steps unaltered, i.e. use the Libreboot GBE firmware, etc. 2017-04-07 update: I used the libreboot ‘flashrom’ utility for my actual flashing and it was easy. I’m told the coreboot one requires configuration, unlike the libreboot one, and may otherwise be more difficult to get working, so, use the libreboot one.

So What

The upshot of using Coreboot or Libreboot is that I’m no longer restricted to using mini PCI-e cards that have been whitelisted by Lenovo. I can use the sweet, sweet umb cards for WWAN access, I can upgrade to the latest iwm driver with MIMO, etc. And for those that haven’t experienced an x200 yet, and you’re wondering why anyone would voluntarily use a 10 year old laptop: the x200 is only $50 before upgrades (I like iwm, umb, an SSD, new battery, new power adapter, USB3 expresscard), has a great keyboard, solid build quality, good portability, good expandability (3 internal mini pci-e, 1 external expresscard slot, 3 USB2 ports), and its relatively easy to repair.

Downsides are its limited to 8G of RAM and the CPU aren’t as sprightly as the latest+greatest (I’ve shifted by heavy lifting to servers so not a big issue for me), extended battery only lasts about 3 hours (enough for how I roll, but I can understand if you’ve been spoiled by an all-day battery on a different laptop), VGA out instead of HDMI (can be solved by an adapter), audio quality sucks (can be solved by an adapter).

I keep 3 x200s around right now…at $50 each, it doesn’t break the bank to have some backups, and if one goes south its easy to just swap the hard drive and go. Harder to pull off if my laptop costs $2k. ;)

My original goal was to see what a maximally open source setup might be like and got as close as I’m likely to get (for now) with Libreboot+OpenBSD+ral, etc. It was pretty good–I’m excited to see what the future holds as more of the stack becomes more hacker friendly.

For those interested, here’s a thread about my prior attempts to get Libreboot working. Libreboot mostly works too, but its a bit less stable (Intel microcode maybe?) and I didn’t figure out how to boot a fully encrypted OpenBSD installation. I suspect if I could just swap in the SeaBIOS payload it would work, but I tried for a bit and wasn’t able to get it across the finish line before I gave up and decided to try Coreboot instead.

Updated on April 07, 2017

Guillaume Simon wrote in to report that the BBB doesn’t have enough RAM to build, but 2GB on a different box worked. He also pointed out that some settings are needed when configuring coreboot, and that the flash tools from Libreboot are easier to use. I updated the post inline incorporating Guillaume’s feedback.

Updated on April 25, 2017

An anonymous writer said they got a blank screen until OpenBSD boots, and pointed out the fix. I updated the post incorporating their feedback.

Updated on March 30, 2022

Replaced broken links to eBay listings for stuff to buy, with working links at Amazon instead.