OVMF in TianoCore seems to have code in place for using SeaBIOS as a CSM, but some of it may depend on their specific platform.
On Fri., Mar. 20, 2020, 5:56 p.m. Rafael Send, flyingfishfinger@gmail.com wrote:
FWIW I use Grub to load either SeaBIOS or Tianocore at boot, defaulting to Tianocore for this exact problem. Hope that's of some help :)
R
On Fri, Mar 20, 2020 at 1:35 PM Dalao via coreboot coreboot@coreboot.org wrote:
The Tianocore package which ran on top of SeaBIOS, DuetPkg, was remove
long ago, so that's not a viable approach (and it was buggy AF anyway). You'd need to build SeaBIOS as a CSM, package it with Tianocore, and add the appropriate hooks. Then debug from there
It appears building SeaBIOS as CSM for Tianocore is quite hard and I have searched around there is no guide. Could we build two roms and use something like coreboot's fallback mechanism feature to achieve the hybrid boot goal? Like default to boot in Tianocore image but with an option to reboot to SeaBIOS image...
Mar 15, 2020, 15:45 by matt.devillier@gmail.com:
On Sat, Mar 14, 2020, 11:02 PM Dalao dalao@tutanota.com wrote:
SeaBIOS is a legacy BIOS implementation, so no it can't boot UEFI boot
media. Likewise, Tianocore is a pure UEFI implementation, and doesn't boot legacy boot media / legacy installed OSes. There should be a way to use SeaBIOS as a CSM for Tianocore, but currently it's not working / not implemented (I tried briefly awhile back but didn't have any luck).
I tried to follow the steps to build tianocore for SeaBIOS https://www.coreboot.org/TianoCore But I get these errors. It says it can't found nmake.exe... Is this should be build on Windows? How to setup the environment?
The Tianocore package which ran on top of SeaBIOS, DuetPkg, was remove long ago, so that's not a viable approach (and it was buggy AF anyway). You'd need to build SeaBIOS as a CSM, package it with Tianocore, and add the appropriate hooks. Then debug from there
[dalao@pc tianocore2018]$ git clone --branch UDK2018 https://github.com/tianocore/edk2 Cloning into 'edk2'... remote: Enumerating objects: 66, done. remote: Counting objects: 100% (66/66), done. remote: Compressing objects: 100% (43/43), done. remote: Total 342725 (delta 35), reused 31 (delta 23), pack-reused 342659 Receiving objects: 100% (342725/342725), 286.48 MiB | 436.00 KiB/s, done. Resolving deltas: 100% (247240/247240), done. Updating files: 100% (15636/15636), done. [dalao@pc tianocore2018]$ cd edk2/ [dalao@pc edk2]$ cd BaseTools [dalao@pc BaseTools]$ export EDK_TOOLS_PATH=$(pwd) [dalao@pc BaseTools]$ cd ../ [dalao@pc edk2]$ . ./edksetup.sh BaseTools WORKSPACE: /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2 EDK_TOOLS_PATH: /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/BaseTools CONF_PATH: /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Conf Copying $EDK_TOOLS_PATH/Conf/build_rule.template to /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Conf/build_rule.txt Copying $EDK_TOOLS_PATH/Conf/tools_def.template to /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Conf/tools_def.txt Copying $EDK_TOOLS_PATH/Conf/target.template to /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Conf/target.txt [dalao@pc edk2]$ build -p DuetPkg/DuetPkgIa32.dsc Build environment: Linux-5.4.22-1-MANJARO-x86_64-with-glibc2.2.5 Build start time: 11:48:18, Mar.15 2020
WORKSPACE = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2 ECP_SOURCE = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/EdkCompatibilityPkg EDK_SOURCE = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/EdkCompatibilityPkg EFI_SOURCE = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/EdkCompatibilityPkg EDK_TOOLS_PATH = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/BaseTools CONF_PATH = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Conf POSTBUILD = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/DuetPkg/PostBuild.bat -p DuetPkg/DuetPkgIa32.dsc -b DEBUG -a IA32 -t MYTOOLS --conf=/home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Conf all
Architecture(s) = IA32 Build target = DEBUG Toolchain = MYTOOLS
Active Platform = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/DuetPkg/DuetPkgIa32.dsc Flash Image Definition = /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/DuetPkg/DuetPkg.fdf
Processing meta-data ......... done! Building ... /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf [IA32] Building ... /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull.inf [IA32] Building ... /home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/MdePkg/Library/BaseMemoryLib/BaseMemoryLib.inf [IA32] /bin/sh: Vcbinnmake.exe: command not found
build.py... : error 7000: Failed to execute command Vc\bin\nmake.exe /nologo tbuild [/home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Build/DuetPkgIA32/DEBUG_MYTOOLS/IA32/MdePkg/Library/BasePcdLibNull/BasePcdLibNull]
build.py... : error 7000: Failed to execute command Vc\bin\nmake.exe /nologo tbuild [/home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Build/DuetPkgIA32/DEBUG_MYTOOLS/IA32/MdePkg/Library/BaseDebugLibNull/BaseDebugLibNull]
build.py... : error 7000: Failed to execute command Vc\bin\nmake.exe /nologo tbuild [/home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/Build/DuetPkgIA32/DEBUG_MYTOOLS/IA32/MdePkg/Library/BaseMemoryLib/BaseMemoryLib]
build.py... : error F002: Failed to build module
/home/dalao/T440pCorebooting/tianocoreAsSeabiosPayload/tianocore2018/edk2/MdePkg/Library/BasePcdLibNull/BasePcdLibNull.inf [IA32, MYTOOLS, DEBUG]
- Failed -
Build end time: 11:48:28, Mar.15 2020 Build total time: 00:00:10
[dalao@pc edk2]$
Personally, given that it's 2020, I'd not bother with legacy-installed
OSes (or SeaBIOS) outside of use with emulation or if a special use case demands it. Esp given that it's easy enough to migrate Windows from legacy to UEFI.
I tried the tianocore payload by selecting it and using all default settings. But I can't see anything like the SeaBIOS for me to select the boot media. But it does boot the archlinux in UEFI mode. I'm wondering is this the problem with my display (I have tried both "Use libgfxinit" and "Run VGA Option ROMs" with tianocore) or the tianocore has nothing to display to select boot media?
Mar 15, 2020, 10:08 by matt.devillier@gmail.com:
On Sat, Mar 14, 2020 at 8:33 PM Dalao via coreboot coreboot@coreboot.org wrote:
I have just corebooted T440p. Then I noticed some graphic display problems...
Firstly I "Use libgfxinit" with "Legacy VGA text mode", insert a usb disk with archlinux's latest install image iso. I can see a text mode of archlinux's start screen.
But when I hit enter, it shows some log till "Triggering uevents" and then there is no display...
Then I tried "Use libgfxinit" with "Linear "high-resolution" framebuffer". I can see the graphic mode of archlinux's start screen, but again after I hit enter and see some logs, there is no display... Also, the display is not ideal, just at the top left corner not full screen.
Also, under this setting, the nvramcui's display becomes bad.
unfortunately, many legacy bootloaders seem to assume a full array of VESA video modes will be available, and fail less than gracefully when that's not the case. With libgfxinit there is no ability to change video modes -- all that's available is either the native panel resolution (high resolution framebuffer) or VGA text mode.
Next I included pci8086,0416.rom vbios and tried "Run VGA Option ROMs" with "Legacy VGA text mode". This time, I can't see the archlinux start screen as shown above, there is no display at the beginning. But I can hit the enter blindly. Then after a while I can see archlinux is booting and the first line I can see is "Probing EDD (edd=off to disable)...ok" the archlinux starts ok.
Lastly I also tried "Run VGA Option ROMs" with "Set framebuffer graphics resolution" with the default "framebuffer graphics resolution (1024x768 16.8M-color (8:8:8))" (although my T440p's resolution is 1920x1080). Also the Framebuffer mode is changed to "VESA framebuffer". I still can't see archlinux's start screen...
How to make everything work like the vendor BIOS? i.e., I can see both the archlinux's start screen and it's booting.
add the VGA BIOS. set the PCI IDs correctly. Set coreboot display init to none, and let SeaBIOS run the VBIOS.
How to fix the nvramcui under "high-resolution" framebuffer"?
will work properly with above settings
Also, as for now it appears seabios can't boot UEFI media. Tianocore by default can't boot Linux/Windows installed by legacy method (installed when using seabios). my goal is to add UEFI support through tianocore as seabios payload (or through tianocore's CSM compatibility support module? ). So that it can boot both UEFI installed Windows or legacy installed Windows like the vendor bios can do. How to achieve this?
SeaBIOS is a legacy BIOS implementation, so no it can't boot UEFI boot media. Likewise, Tianocore is a pure UEFI implementation, and doesn't boot legacy boot media / legacy installed OSes. There should be a way to use SeaBIOS as a CSM for Tianocore, but currently it's not working / not implemented (I tried briefly awhile back but didn't have any luck).
Personally, given that it's 2020, I'd not bother with legacy-installed OSes (or SeaBIOS) outside of use with emulation or if a special use case demands it. Esp given that it's easy enough to migrate Windows from legacy to UEFI.
coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org
coreboot mailing list -- coreboot@coreboot.org To unsubscribe send an email to coreboot-leave@coreboot.org