I did a compare of the UFEIPAYLOAD.fd with the one extracted. There are some header starting with .ELF in the extracted one. It's possibly the reason why the extracted one works. The header is possibly added by cbfstool when it build the image.
Mar 25, 2020, 00:17 by flyingfishfinger@gmail.com:
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@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@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@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@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@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%3E%3E%3E%3E%3E%3E%3E%3E 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%3E%3E%3E%3E%3E%3E%3E%3E >> 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. >>>> >>>> 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@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