Laszlo Ersek 8ff1221199 EmulatorPkg: require GCC48 or later %!s(int64=5) %!d(string=hai) anos
..
AutoScanPei ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
BootModePei ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
CpuRuntimeDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
EmuBlockIoDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
EmuBusDriverDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
EmuGopDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
EmuSimpleFileSystemDxe 1e57188216 EmulatorPkg: IoThunk->Close() is called too early, may causing hang %!s(int64=5) %!d(string=hai) anos
EmuSnpDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
EmuThunkDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
FirmwareVolumePei ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
FlashMapPei ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
FvbServicesRuntimeDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
Include 79e4f2a56a EmulatorPkg: formalize line endings %!s(int64=5) %!d(string=hai) anos
Library ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
MiscSubClassPlatformDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
PlatformSmbiosDxe 79e4f2a56a EmulatorPkg: formalize line endings %!s(int64=5) %!d(string=hai) anos
RealTimeClockRuntimeDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
ResetRuntimeDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
Sec 79e4f2a56a EmulatorPkg: formalize line endings %!s(int64=5) %!d(string=hai) anos
ThunkPpiToProtocolPei d18d8a1d0e EmulatorPkg: Remove all trailing whitespace %!s(int64=13) %!d(string=hai) anos
TimerDxe ba6037f833 EmulatorPkg: Removing ipf which is no longer supported from edk2. %!s(int64=5) %!d(string=hai) anos
Unix 8ff1221199 EmulatorPkg: require GCC48 or later %!s(int64=5) %!d(string=hai) anos
Win f4eaaf1a6d Emulator/Win: Fix build failure using VS2015x86 or old WinSDK %!s(int64=5) %!d(string=hai) anos
EmulatorPkg.dec cc5c08f9d6 EmulatorPkg: Remove EdkShellBinPkg in FDF and DEC %!s(int64=5) %!d(string=hai) anos
EmulatorPkg.dsc cc5c08f9d6 EmulatorPkg: Remove EdkShellBinPkg in FDF and DEC %!s(int64=5) %!d(string=hai) anos
EmulatorPkg.fdf cc5c08f9d6 EmulatorPkg: Remove EdkShellBinPkg in FDF and DEC %!s(int64=5) %!d(string=hai) anos
Readme.md 289cb872ed EmulatorPkg: Update package level Readme.md %!s(int64=5) %!d(string=hai) anos
build.sh 8ff1221199 EmulatorPkg: require GCC48 or later %!s(int64=5) %!d(string=hai) anos

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)

How to Build & Run

You can use the following command to build.

  • 32bit emulator in Windows:

    build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -D WIN_SEC_BUILD -a IA32

  • 64bit emulator in Windows:

    build -p EmulatorPkg\EmulatorPkg.dsc -t VS2017 -D WIN_SEC_BUILD -a X64

  • 32bit emulator in Linux:

    build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -D UNIX_SEC_BUILD -a IA32

  • 64bit emulator in Linux:

    build -p EmulatorPkg\EmulatorPkg.dsc -t GCC5 -D UNIX_SEC_BUILD -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