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
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=“<path to the vgabios.bin>”, 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.
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.
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.
2017-04-07 update: 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.
2017-04-25 update: an anonymous writer said they got a blank screen until OpenBSD boots, and pointed out the fix. I updated the post incorporating their feedback.