3ce3274a5e
"vm_image: 'ubuntu-latest'" now refers to Ubuntu Focal (20.04LTS), not Ubuntu Bionic (18.04LTS), according to <https://github.com/actions/virtual-environments/issues/1816>. In Focal, an EmulatorPkg linking step fails like this: > INFO - "gcc" -o > /home/vsts/work/1/s/Build/EmulatorIA32/DEBUG_GCC5/IA32/Host -m32 > -L/usr/X11R6/lib > -Wl,--start-group,@/home/vsts/work/1/s/Build/EmulatorIA32/DEBUG_GCC5/IA32/EmulatorPkg/Unix/Host/Host/OUTPUT/static_library_files.lst,--end-group > -lpthread -ldl -lXext -lX11 > INFO - /usr/bin/ld: skipping incompatible > /usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a when searching for -lgcc > INFO - /usr/bin/ld: cannot find -lgcc > INFO - /usr/bin/ld: skipping incompatible > /usr/lib/gcc/x86_64-linux-gnu/9/libgcc.a when searching for -lgcc > INFO - /usr/bin/ld: cannot find -lgcc > INFO - collect2: error: ld returned 1 exit status > INFO - make: *** [GNUmakefile:421: > /home/vsts/work/1/s/Build/EmulatorIA32/DEBUG_GCC5/IA32/EmulatorPkg/Unix/Host/Host/DEBUG/Host] > Error 1 So for now, stick with the previous Ubuntu environment, which continues to be supported, per <https://github.com/actions/virtual-environments/issues/1816>. The following ticket has been opened about this particular issue: <https://github.com/actions/virtual-environments/issues/2324>. Signed-off-by: Bob Feng <bob.c.feng@intel.com> Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Andrew Fish <afish@apple.com> Cc: Ray Ni <ray.ni@intel.com> Message-Id: <20201221031930.1799-1-bob.c.feng@intel.com> Reviewed-by: Laszlo Ersek <lersek@redhat.com> [lersek@redhat.com: update the commit message to refer to GCC rather than to QEMU] |
||
---|---|---|
.. | ||
Application/RedfishPlatformConfig | ||
AutoScanPei | ||
BootModePei | ||
CpuRuntimeDxe | ||
EmuBlockIoDxe | ||
EmuBusDriverDxe | ||
EmuGopDxe | ||
EmuSimpleFileSystemDxe | ||
EmuSnpDxe | ||
EmuThunkDxe | ||
FirmwareVolumePei | ||
FlashMapPei | ||
FvbServicesRuntimeDxe | ||
Include | ||
Library | ||
PlatformCI | ||
PlatformSmbiosDxe | ||
RealTimeClockRuntimeDxe | ||
ResetRuntimeDxe | ||
Sec | ||
ThunkPpiToProtocolPei | ||
TimerDxe | ||
Unix | ||
Win | ||
EmulatorPkg.ci.yaml | ||
EmulatorPkg.dec | ||
EmulatorPkg.dsc | ||
EmulatorPkg.fdf | ||
Readme.md | ||
build.sh |
Readme.md
Overview
EmulatorPkg provides an environment where a UEFI environment can be emulated under an environment where a full UEFI compatible environment is not possible. (For example, running under an OS where an OS process hosts the UEFI emulation environment.)
https://github.com/tianocore/tianocore.github.io/wiki/EmulatorPkg
Status
- Builds and runs under
- a posix-like environment with X windows
- Linux
- OS X
- Windows environment
- Win10 (verified)
- Win8 (not verified)
- a posix-like environment with X windows
How to Build & Run
You can use the following command to build.
-
32bit emulator in Windows:
build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -a IA32
-
64bit emulator in Windows:
build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -a X64
-
32bit emulator in Linux:
build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -a IA32
-
64bit emulator in Linux:
build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -a X64
You can start/run the emulator using the following command:
-
32bit emulator in Windows:
cd Build\EmulatorIA32\DEBUG_VS2017\IA32\ && WinHost.exe
-
64bit emulator in Windows:
cd Build\EmulatorX64\DEBUG_VS2017\X64\ && WinHost.exe
-
32bit emulator in Linux:
cd Build/EmulatorIA32/DEBUG_GCC5/IA32/ && ./Host
-
64bit emulator in Linux:
cd Build/EmulatorX64/DEBUG_GCC5/X64/ && ./Host
On posix-like environment with the bash shell you can use EmulatorPkg/build.sh to simplify building and running emulator.
For example, to build + run:
$ EmulatorPkg/build.sh
$ EmulatorPkg/build.sh run
The build architecture will match your host machine's architecture.
On X64 host machines, you can build + run IA32 mode as well:
$ EmulatorPkg/build.sh -a IA32
$ EmulatorPkg/build.sh -a IA32 run