Hi,
Good to know, I actually at one point did the same (extract working
Tianocore from coreboot binary), so maybe that's how it worked.
Did you figure out why it works when you extract it, but not if you just
add the built blob?
Rafael
On Mon, Mar 23, 2020 at 11:44 PM Dalao <dalao(a)tutanota.com> wrote:
I did have
some trouble getting this to work correctly. I believe you
must add it to cbfs with
"add-payload" and not just as a regular file.
If that doesn't work let us know, I'll
take a look at what exactly I did.
Thank you, with the help of people on irc, now I have been able to make it
work. At first I used the UEFIPAYLOAD.fd in tianocore's build output
folder, it does not work. Then I extracted it from coreboot.rom, and it
works. I will document the process for maybe someone will find this useful
in the future:
Firstly I follow this guide to build seabios (
https://github.com/librecore-org/librecore/wiki/Chainloading-SeaBIOS-from-a…).
But I just use the bios.bin.elf I did not use that vgabios.bin that display
is not good on T420.
Next I build coreboot and select tianocore as payload, and then extract it.
cbfstool ./build/coreboot.rom extract -m x86 -n fallback/payload -f
./GrubPayloads/tianocore
Then I build coreboot again and select GRUB as payload with
high-resulotion framebuffer, and add SeaBIOS, Tianocore and grub.cfg
cbfstool ./build/coreboot.rom add -n elf/seabios.elf -f
./GrubPayloads/bios.bin.elf -t raw
cbfstool ./build/coreboot.rom add-payload -n img/tianocore -f
./GrubPayloads/tianocore
cbfstool ./build/coreboot.rom add -n etc/grub.cfg -f
./GrubPayloads/grub.cfg -t raw
This will work, but without VBG BIOS, the DP output does not work on T420.
So I add the VGA BIOS blob.
cbfstool ./build/coreboot.rom add -f pci8086,0166.rom -n pci8086,0166.rom
-t optionrom
2020年3月24日 02:05 来自 flyingfishfinger(a)gmail.com:
Hi,
I did have some trouble getting this to work correctly. I believe you must
add it to cbfs with "add-payload" and not just as a regular file.
If that doesn't work let us know, I'll take a look at what exactly I did.
Good luck,
R
On Sat, Mar 21, 2020 at 6:08 AM Dalao <dalao(a)tutanota.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 :)
Cool! This is what I want. I have followed this tutorial (
https://github.com/librecore-org/librecore/wiki/Chainloading-SeaBIOS-from-a…)
and now I'm able to use Grub to chainload SeaBIOS. But in order to load
Tianocore, it appears there is no tutorial online. I tried to use the above
method to chainload the Tianocore's build output file UEFIPAYLOAD.fd, but
it can't load. So how you achieved this?
Mar 21, 2020, 5:55 AM by flyingfishfinger(a)gmail.com:
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(a)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(a)gmail.com:
On Sat, Mar 14, 2020, 11:02 PM Dalao <dalao(a)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(a)gmail.com:
On Sat, Mar 14, 2020 at 8:33 PM Dalao via coreboot
<coreboot(a)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.
https://imgur.com/0QqQgJn
But when I hit enter, it shows some log till "Triggering uevents" and then
there is no display...
https://imgur.com/CHI9jeE
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.
https://imgur.com/dvYLERu
Also, under this setting, the nvramcui's display becomes bad.
https://imgur.com/7YG0kOX
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(a)coreboot.org
To unsubscribe send an email to coreboot-leave(a)coreboot.org
_______________________________________________
coreboot mailing list -- coreboot(a)coreboot.org
To unsubscribe send an email to coreboot-leave(a)coreboot.org
_______________________________________________
coreboot mailing list -- coreboot(a)coreboot.org
To unsubscribe send an email to coreboot-leave(a)coreboot.org