Skip to content

(LC230) User Guide

The Coreboot Boot Process

Here is what the boot process looks like with Coreboot installed:

Coreboot Sequence Diagram

The first part of the boot process (labelled as "Coreboot Internal" in the diagram above) is largely hidden from the user. The boot process is illustrated below:

LC230 Boot Process

Installing an OS

To install any GNU/Linux OS, here is a sequence of steps:

Build USB Installer

Any GNU/Linux OS would work very well on your LC230 laptop. (Some owners have also installed and used FreeBSD on it.)

LC230 is configured to run without any proprietary firmware and hence, any of the following operating systems would work well by default:

Tip

The Rasperrby Pi Imager is a good tool to use to write an OS image to a USB disk. Balena Etcher is another one.

Plug-in USB Disk

The USB needs to be plugged in before you reboot the laptop - or else SeaBIOS will not detect it and show it as a boot option.

Info

The blue USB ports on the left side of the laptop are USB3 ports. If you have a USB disk that works with USB3, then using these ports will give you much better USB disk performance.

The USB port on the right side (yellow in colour) is a USB2 port.

Choose the boot device

Press Esc on boot and choose the USB disk as the boot device

LC230 Boot Image

By default, the first boot option is chosen to boot off. This is usually the 2.5" SATA disk if it is plugged in to the laptop. To choose another boot device, you need to press Esc and then choose the desired boot device from the SeaBIOS menu.

If you have a 2.5" SATA disk, then a USB disk would be the second boot device. If you have a 2.5" SATA disk and a mSATA disk, then the USB disk would be the third boot device.

LC230 USB3 Ports

Install the OS

You can now proceed with the OS installation as normal.

The LC230 does not provide a UEFI BIOS (like the default Lenovo BIOS firmware). SeaBIOS is a pc-bios payload and most GNU/Linux OS installers will detect that and install the correct bootloader. This would be grub-pc if you choose to use Grub and Debian.

Coreboot Internal Flashing

To flash Coreboot to the x230 motherboard, the first step is to flash the BIOS externally - ie. using a SIOC-8 flashing clip connecting to the BIOS chips:

Liberating the LC230 via External Flashing

However, as a part of the external flashing process, the BIOS is unlocked. This means that you can update / modify the BIOS on the SPI Flash internally - from within the operating system. Here are some reasons to do that and the steps involved.

Configure the kernel

The first things to do before you can flash Coreboot internally, is to boot the kernel with an additional option:

iomem=relaxed

On Debian (and derived operating systems such as Ubuntu), you can make this a permanent setting:

  1. Edit the file: /etc/default/grub
  2. Update the line GRUB_CMDLINE_LINUX to read:

    GRUB_CMDLINE_LINUX="iomem=relaxed"

  3. Run: update-grub to update the Grub configuration.

Query Coreboot details

You can verify the coreboot version (as well as the fact that you're running coreboot) by using the dmidecode utility as follows:

BIOS version

$ sudo dmidecode -t bios
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
        Vendor: coreboot
        Version: CBET4000 4.10-1082-g4357a82076-dirty
        Release Date: 10/20/2019
        ROM Size: 12 MB
        Characteristics:
                PCI is supported
                PC Card (PCMCIA) is supported
                BIOS is upgradeable
                Selectable boot is supported
                ACPI is supported
                Targeted content distribution is supported
        BIOS Revision: 4.10
        Firmware Revision: 0.0

System type & name

$ sudo dmidecode -t system   
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 2.8 present.

Handle 0x0001, DMI type 1, 27 bytes
System Information
        Manufacturer: LENOVO
        Product Name: 2325BU3
        Version: ThinkPad X230
        Serial Number: PK1HM8E
        UUID: ce136601-xxxx-xxxx-xxxx-xxxxxxxxxxxx
        Wake-up Type: Reserved
        SKU Number: Not Specified
        Family: ThinkPad X230

Handle 0x000B, DMI type 32, 11 bytes
System Boot Information
        Status: No errors detected

Install: flashrom

The primary tool for operating on your BIOS is called flashrom. The Debian package is also called by the same name and can be installed as:

apt-get install flashrom

If the kernel is booted correctly with iomem=relaxed, you can run flashrom:

flashrom -pinternal

Ouput:

$ sudo flashrom -pinternal
flashrom v1.2 on Linux 5.10.9-gnu (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0xbff51000.
Found chipset "Intel QM77".
Enabling flash write... SPI Configuration is locked down.
Enabling hardware sequencing due to multiple flash chips detected.
OK.
Found Programmer flash chip "Opaque flash chip" (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.
No operations were specified.

Tip

Sometimes flashrom will not detect the internal flash chip, though it might very well be able to confirm the BIOS type and machine name. In such cases, you can try to run flashrom as: flashrom -pinternal:laptop=force_I_want_a_brick. This is not completely safe

Read BIOS Image

You can dump the BIOS to a file:

$ flashrom -pinternal -r lc230-coreboot.rom

This will read the BIOS to a file: lc230-coreboot.rom. This file will be 12 MB in size.

$ sudo flashrom -pinternal -r lc230.rom
flashrom v1.2 on Linux 5.10.9-gnu (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0xbff51000.
Found chipset "Intel QM77".
Enabling flash write... SPI Configuration is locked down.
Enabling hardware sequencing due to multiple flash chips detected.
OK.
Found Programmer flash chip "Opaque flash chip" (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.
Reading flash... done.
$ ls -lh lc230-coreboot.rom
-rw-r--r-- 1 root root 12M Feb  8 04:46 lc230-coreboot.rom

Write BIOS Image

You can now write back to the BIOS chips as follows:

$ sudo flashrom -pinternal -w lc230-coreboot.rom
flashrom v1.2 on Linux 5.10.9-gnu (x86_64)
flashrom is free software, get the source code at https://flashrom.org

Using clock_gettime for delay loops (clk_id: 1, resolution: 1ns).
coreboot table found at 0xbff51000.
Found chipset "Intel QM77".
Enabling flash write... SPI Configuration is locked down.
Enabling hardware sequencing due to multiple flash chips detected.
OK.
Found Programmer flash chip "Opaque flash chip" (12288 kB, Programmer-specific) mapped at physical address 0x0000000000000000.
Reading old flash chip contents... done.
Erasing and writing flash chip... 
Warning: Chip content is identical to the requested image.
Erase/write done

Flash: Skulls

The Skulls Coreboot distribution provides built in scripts to upgrade the BIOS. The update procedure is detailed here. Your LC230 ships with the latest release of Skull available at the time of shipping the laptop to you. You can upgrade skulls using the instructions above.

Flash: Heads

If you want to experiment with the Heads firmware, instructions are available on the Heads website as well as in the Skulls documentation.

Configuring Coreboot

Your LC230 ships with a SeaBIOS payload called nvramcui that allows you to configure coreboot behaviour and save the settings to nvram.

nvramcui options (1)
nvramcui options (2)
nvramcui options (3)

Swapping Fn and Ctrl

The fn_ctrl_swap on the 2nd page of the nvramcui settings page enables you to toggle the Fn and Ctrl swap. If you like to have the control key on the bottom left corner of the keyboard, then you can set this option to Enable.

Increasing Graphics Memory

The x230 GPU does not have dedication RAM. Instead it shares its memory with the main system memory. You can configure how much RAM is dedicated to the GPU via the gfx_uma_size option on the 3rd page of the nvramcui settings.

Pressing the Left and Right arrow keys you can iterate over all the available settings for this option.

Other settings

You can also configure the following behaviour via nvramcui:

  • Always On USB: By enabling this option, you can configure the USB ports to be always on - even when the laptop is suspended.

  • Enable/Disable Trackpoing, Touchpad: You can toggle the touchpad and trackpoint options to enable or disable the the touchpad and trackpoint respectively.