Hello,

I own a Thinkpad X230t and I encountered Coreboot project on the Internet. I 
enjoy FOSS stuff, and also I would like to change my WWAN/WLAN cards in my 
computer so I decided to switch from proprietary Lenovo UEFI firmware to 
Coreboot. By the way I found that those Thinkpads are well supported by the 
project and it is favorable model to use with Coreboot firmware.

I use Windows 7 x64 in UEFI-CSM mode as my main OS. My disk is partitioned with 
GPT. By the way, unfortunately Windows 7 x64 only allows only these 
configurations:
- BIOS or UEFI Legacy Mode firmware + MBR partition table and bootloader in MBR 
of the disk drive and/or VBR of the system partition
- UEFI CSM (non-GOP, Int 10h) firmware + GPT partition table and bootloader in 
seperate EFI System Partition

So I cannot get for example BIOS/UEFI-Legacy + GPT partition table + bootloader 
in Protective MBR with Windows 7.

I started my experience with Coreboot building like 15 different image's using 
different parameters in 'make menuconfig' so I can find out what is well-suited 
for me. By the way I also bricked my laptop like 3 times, but that wasn't a 
problem because I have access to external programmer. All these builds I've 
made using SeaBIOS primary payload and like 1 with Tianocore. I used SeaBIOS at 
first because I recognized it simpler than Tianocore so first I can distinguish 
Coreboot features from primary payload features, and then switch to Tianocore. 
I got problems with libgfxinit on Xubuntu 20.04 LTS Installer (MBR 
SYSLINUX+grub) and also with Windows 7 x64 MBR installer, so I extracted VGA 
BIOS from proprietary Lenovo UEFI, included it as an Option ROM and it solved 
my problems.

However, with SeaBIOS I couldn't access my Windows 7 x64 UEFI-CSM Int 10h HDD 
installation. It got stuck on Booting from Hard Drive probably because there is 
like NOP loop in the Protective MBR of GPT-partitioned drive. I made 3 
different MBR/BIOS images on thumbdrives in order to test the SeaBIOS:
- Xubuntu 20.04 Installer+LiveCD with SYSLINUX+GRUB
- installed Xubuntu 20.04 LTS with GRUB
- Windows 7 x64 Installer in MBR mode

I got all of these running well, but I still have problem with my main OS on 
the HDD. Of course, with standard SeaBIOS I am not able to boot my Windows 
installation because it's GPT/ESP-enabled and it cannot boot from the MBR.

So I changed my primary payload to Tianocore and chose to boot up the 
BOOTX64.EFI from Windows 7 ESP partition and it resulted with black screen 
having some different artifacts like few color strips. I guess that's because 
Tianocore is only supporting UEFI Level 3 (UEFI non-CSM) and thus it doesn't 
initialize Int 10h vector and assumes that the operating system will initialize 
graphics using UEFI GOP, which is not the case with Windows 7. In my earlier 
experiments, I had exactly the same artifacts when I tried to switch UEFI-CSM 
to UEFI-non CSM on Desktop Gigabyte motherboard with stock proprietary firmware 
and I gave it up, because I found out that it's impossible to have Windows 7 
support UEFI Level 3 with GOP initialization.

Before I found out about Coreboot I didn't even realize that BIOS/UEFI firmware 
can be split in 2 stages like it is in Coreboot + SeaBIOS/Tianocore. I'm 
looking for a solution so I can boot up my UEFI-CSM Int 10h Windows 7 x64 
installation. I don't know what architecture should I be looking for:
- run SeaBIOS as primary payload so it properly initializes the Int 10h along 
with Intel HD Graphics Option ROM, then run some sort of UEFI secondary payload
- run Tianocore as primary load and force it to initialize the Int 10h using 
some hidden flags during compilation, or just run SeaBIOS somehow as an 
secondary payload
By the way, how it's solved in usual proprietary UEFI-CSM firmware?

Regarding first option, I found something such as DuetPkg from Tianocore/EDK-II 
project which allows to boot this stuff using BIOS from MBR thumbdrive/disk or 
even as secondary payload of SeaBIOS. Unfortunately I found out that this 
project was abandoned by Tianocore community like 2 years ago. I also found out 
patched version of Duet for Coreboot on 
https://www.notabs.org/coreboot/duet-payload/ , but it hasn't been maintained 
since 2014 and I don't know if I can trust these patches. I guess that would be 
the case for me, but since it hasn't been maintained for few years, maybe 
there's a more modern solution for my problem? As I understand Tianocore is 
something more than DuetPkg so I cannot use it as SeaBIOS secondary payload 
because some parts of it would double their responsibility with SeaBIOS 
routines?

Regarding second option, I found on the Internet information that SeaBIOS can 
be compiled with option to be the CSM payload of something what is called OVMF 
which I understand to be Tianocore firmware for virtual machines such as qemu.

Could some more experienced users (perhaps developers) give me a hint which 
solution I should be looking for, and maybe give some more advise about 
particular packages and tools which I could solve my problem by?

Best regards,
geekyTPuser
_______________________________________________
coreboot mailing list -- coreboot@coreboot.org
To unsubscribe send an email to coreboot-le...@coreboot.org

Reply via email to