Skip to main content

Coreboot with Seabios and VGA on ThinkPad T400

I have a beautiful t400 running libreboot and still working amazing, however... I needed to boot windows 10 on it ;(

I come across some guides on internet to recompile coreboot for this or similar models however the instructions didn't work if you aim to run windows on it. 

Obviously re-flashing the stock bios is not a "reasonable" option for me.. and I couldn't find any alternative "ready to go".. so I decided to recompile coreboot and making it capable to boot windows 10 on my t400.

From this personal small "project" I got the benefit to be able to boot any other linux distro and any bsd (I have tried freebsd only so far) without any complicated settings to add on the grub configuration. Also, it doesn't include any Intel ME (the same as libreboot) which is a backdoor (https://www.theregister.com/2017/11/20/intel_flags_firmware_flaws/) and I feel like that coreboot and seabios are immune to the recent grub security issues (not sure if they can be considered a "real" security issue and if they can affect libreboot - make your own research.. it is called GRUB2 BootHole Vulnerability)

My coreboot image uses seabios, libgfxinit, and the VGA rom for the intel graphic card and no secondary payloads are included.

The details have been published on my github together with the rom image and the utilities, including the.config file,  that you can use to build your own version according to your needs

https://github.com/m4rc0linux/coreboot-t400-thinkpad

If you are already running libreboot or coreboot it is easy to install my version flashing from internal (assuming that your bios in unlocked) simply following those simple steps:

1) install flashrom on your linux distro (in debian: sudo apt install flashrom) and add iomem=relaxed on your /etc/default/grub - if you are running Trisquel go straight to the step 3.

2) run sudo update-grub and reboot your system

3) download the rom image from the github above and put in your home folder

4) open a terminal and run sudo flashrom -p internal to see your chip name and the size - which is usually MX25L6405D on this model and it is a 8 mb size

5) if it is all good as above you can proceed with flashing your system running:

sudo flashrom -p internal -c MX25L6405D -w m4rc0linuxt400coreboot.rom -V

In both cases just wait the process to end and to get something
like a "VERIFIED" message like the below:

Erase/write done.
Verifying flash... VERIFIED.
Restoring MMIO space at 0x7fb7b14638a0
Restoring MMIO space at 0x7fb7b146389c
Restoring MMIO space at 0x7fb7b1463898
Restoring MMIO space at 0x7fb7b1463896
Restoring MMIO space at 0x7fb7b1463894

If you stop the system or you end the process while the flashing is still pending you will brick the device, and you will need an external flash hardware to fix it. If something goes wrong during the flashing process you will get a black screen when rebooting which means that you probably bricked your device and you will need to completely disassemble it and flash from external.
I have tested it a bit and tried several times on different t400 models and it seems to work correctly.

If all went ok, you will get the "rabbit" logo of coreboot displaying on your reboot.

Final result is visible on this video. 

 

To see the full details about the coreboot and libreboot projects please visit the official websites 

https://libreboot.org/

https://coreboot.org/

Comments

Popular posts from this blog

Coreboot on x230 - How to change the Skulls bootspash image

I assume that skulls is already installed on your x230 and you are happy with it :) however you would like to change the bootsplash image.. It seems to be simple... however it can be "tricky".. or at least it was for me..  That's because the "usable" image created by the skulls script is the "top" one only. the coreboot instructions to flash with a layout file with didn't work for me 0x00000000:0x007fffff ifdmegbe 0x00800000:0x00bfffff bios I get this error: Proceeding anyway because user forced us to. Found chipset "Intel QM77". Enabling flash write... Warning: SPI Configuration Lockdown activated. 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. Error: Image size (4194304 B) doesn't match the flash chip's size (12582912 B)! So I thought it could be a good idea to flash fro...

Skulls scripts - how to make the seabios_free version bootsplash showing and adding secondary payloads

I was playing with the skulls scripts  for the seabios_free to rebuild the coreboot image for the thinkpad x230, considering that, as reported on their github, it: "includes the VGA BIOS SeaVGABIOS which is free software. While technically more interesting, visually this is currently not as beautiful: The bootspash image is not shown ." The solution that I have fund is not perfect as the supported resolution by libgfxinit is limited to 1024x768, so the image is shrunk, however it does show and it works fine for me. I have replied then on this thread /issues/59 What we have to change to fix it is not the .config file present in the /x230 folder but the free-defconfig-8053595370 file to set the correct resolution to the libgfxinit adding the following: CONFIG_LINEAR_FRAMEBUFFER_MAX_WIDTH=1024 CONFIG_LINEAR_FRAMEBUFFER_MAX_HEIGHT=768 Once done we still need to add the bootsplash image as per the seabios coreboot instructions  However I think that adding on the script someth...