[coreboot] Coreboot on X230 and Dualboot / How to make it work

One7two99 one7two99 at protonmail.com
Thu Oct 5 23:10:15 CEST 2017

Hello Nico,

> you might have to accept that adding VGA compatibility for Windows may
> break compatibility with the secondary payloads. That"s not generally
> the case but about the last thing that gets tested.

From what I have learned so far it seems that the usecase Coreboot + Windows is that common which I can understand as it may sound strange to reduce the possible attacks via BIOS/AMT but then use an OS like Windows.

> If you don"t get this setup with SeaBIOS running, there are alterna-
> tives. One that comes to mind: Do native GFX init in coreboot, add the
> VGA blob (so far your config below) but use GRUB as primary payload and
> run SeaBIOS as secondary. You"d have to hand-craft your grub.cfg, some-
> thing like four choices: 1. Run your favorite open source OS 2. SeaBIOS
> for legacy compatibility 3. coreinfo 4. nvramcui

using grub as primary payload (instead of SeaBIOS) means that I have small linux running from my BIOS?
honestly this sounds like this is something that can be done by Coreboot Pro's to which I wouldn't count myself yet.
As my current Coreboot installation (SeaBIOS + VGA.rom) has not only break secondary payloads but also standby/resume, I want to rebuild my BIOS from scratch - unfortunately I need to wait until I have a new Clip for flashing as my old broke.

>> I"ve seen the following option in make nconfig for coreboot under
>> "General Setup": │ [*] Include the coreboot .config file into the ROM
>> image │
>> QUESTION: How can I extract this .config file?

> You can do that with cbfstool, e.g.
> $ build/cbfstool build/coreboot.rom extract -n config -f config.txt
> where your replace `build/coreboot.rom` with the path of your image and
> `config.txt` with the path to the output file.

I've done this but the resulting config is very short and doesn't include all settings which have been made in the first place.
A good approach might be:
1) Use a recommended config for X230 which will run Linux as OS and 2ndary payloads and Standby/Resume running
2) Change the config slightly to get windows boot running (adding a vga.rom)
Then do troubleshooting in case that the boot of secondary payloads and/or Standby/Resume is broken (with an included VGA.rom).
This is the config for Coreboot on a X230 which is in the coreboot wiki.
Is this the "best practise" configuration or just "a" configuration which has been stored there?
I tried to build a rom with this config but run into errors when building the ROM.

> Another question about your setup, do you configure anything in SeaBIOS
> that is not visible from your coreboot .config? Anything GFX related?
> splashscreen? VESA mode?

I haven't configured SeaBIOS I've just git'ed coreboot, run make nconfig and added SeaBIOS as Payload there.
Haven't tweaked any SeaBIOS configs.
I have seen that I can also get Seabios via GIT and then use nconfig to adapt that configuration, but this wasn't covered in the wiki for the x230 and as such I have only used the coreboot configuration screen.
Any guidance how to build a specific SeaBIOS and how to include this in coreboot?

>> [Devices]
>> │ Graphics initialization (Use native graphics init)
> With this option you let coreboot initialize GFX. But you also let Sea-
> BIOS run the VGA BIOS. The former will be completely overrun. I doubt
> that it causes your secondary payload trouble, though.

Ok, as soon as I have a new flash clip, I will try to investigate this.
Which settings to you suggest in "Devices > Graphics initialization"?

>> | --> Framebuffer mode (Legacy VGA text mode)
>> │ Display
>> │ -*- Enable PCIe Common Clock │
>> │ -*- Enable PCIe ASPM
>> [*] Add a VGA BIOS image
>> │ (./3rdparty/blobs/mainboard/lenovo/x230/pci8086,0166.rom) VGA BIOS
>> │ (8086,0166) VGA device PCI IDs
>> [Generic Drivers]
>> │ [*] Serial port on SuperIO

> WTF?

What is the problem here? Is this a bad choice?
I took this from existing documentation without knowing what the last option is.
All other optiions

>> │ [*] Support Intel PCI-e WiFi adapters
>> │ [*] PS/2 keyboard init

> Is this required? It"s odd to set it when using SeaBIOS.

The PS/2 Keyboard init was suggested in one of the howtos.
regarding Intel PCI-e Wifi, I am not sure - I can make a test without this option and look if this has impact to my wifi card.

>> │ [*] Enable TPM support
>> [Console]
>> │ [*] Squelch AP CPUs from early console.
>> │ [*] Send console output to a CBMEM buffer
>> │ (0x20000) Room allocated for console output in CBMEM
>> │ [*] Send POST codes to an external device
>> │ Device to send POST codes to (None)
>> │ [*] Send POST codes to an IO port
>> │ (0x80) IO port for POST codes
>> [System tables]
>> │ [*] Generate SMBIOS tables
>> [Payload]
>> │ Add a payload (SeaBIOS) ---> │
>> │ SeaBIOS version (1.10.2) ---> │
>> │ (0) PS/2 keyboard controller initialization timeout (milliseconds) │

> Why override the default? If it works that"s just fine. I"m just wondering
> if we should have different defaults then.

What do you mean with overriding? Which option is not correct or might be optimized?
Will there coreboot configuration file be optimized for all settings when choosing the mainboard?
If so this would mean that I start from scratch to look what is working with the default settings and then slowly modify the configuration to get windows running and see what breaks at which point (2ndary payloads / standby resume etc).

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot/attachments/20171005/91ab2968/attachment.html>

More information about the coreboot mailing list