audk/EmulatorPkg
Jian J Wang cf320090fa EmulatorPkg/EmulatorPkg.dsc: override PCD default to avoid boot failure
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=1215

This issue is caused by commit 5267926134.

The reason is this commit changed the condition of building page table
in DxeIpl. The code before it will only build page table for the sake
of PcdSetNxForStack. This commit added PcdImageProtectionPolicy and
PcdDxeNxMemoryProtectionPolicy into the logic. But the default value of
PcdImageProtectionPolicy is 02, which means the DxeIpl should build page
table. Due to the fact that EmulatorPkg doesn't support page table at all,
this will cause exception on Windows OS.

This patch solves this issue by setting PcdImageProtectionPolicy to 0
explicitly in EmulatorPkg.dsc.

Cc: Jordan Justen <jordan.l.justen@intel.com>
Cc: Andrew Fish <afish@apple.com>
Cc: Ruiyu Ni <ruiyu.ni@intel.com>
Cc: Star Zeng <star.zeng@intel.com>
Cc: Jiewen Yao <jiewen.yao@intel.com>
Contributed-under: TianoCore Contribution Agreement 1.1
Signed-off-by: Jian J Wang <jian.j.wang@intel.com>
Reviewed-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Star Zeng <star.zeng@intel.com>
2018-09-28 10:19:35 +08:00
..
AutoScanPei EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
BootModePei EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
CpuRuntimeDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
EmuBlockIoDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
EmuBusDriverDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
EmuGopDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
EmuSimpleFileSystemDxe EmulatorPkg: IoThunk->Close() is called too early, may causing hang 2018-08-31 10:40:20 +08:00
EmuSnpDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
EmuThunkDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
FirmwareVolumePei EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
FlashMapPei EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
FvbServicesRuntimeDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
Include EmulatorPkg: formalize line endings 2018-08-30 09:26:54 +08:00
Library EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
MiscSubClassPlatformDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
PlatformSmbiosDxe EmulatorPkg: formalize line endings 2018-08-30 09:26:54 +08:00
RealTimeClockRuntimeDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
ResetRuntimeDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
Sec EmulatorPkg: formalize line endings 2018-08-30 09:26:54 +08:00
ThunkPpiToProtocolPei EmulatorPkg: Remove all trailing whitespace 2011-06-28 16:50:26 +00:00
TimerDxe EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
Unix EmulatorPkg: Removing ipf which is no longer supported from edk2. 2018-09-25 23:46:00 +08:00
Win Emulator/Win: Fix build failure using VS2015x86 or old WinSDK 2018-09-10 10:29:35 +08:00
EmulatorPkg.dec Add a new SMBIOS Library, and platform SMBIOS driver that does not use Framework or Hii. 2012-01-30 18:57:30 +00:00
EmulatorPkg.dsc EmulatorPkg/EmulatorPkg.dsc: override PCD default to avoid boot failure 2018-09-28 10:19:35 +08:00
EmulatorPkg.fdf EmulatorPkg: Use MdeModulePkg/Bds module 2018-08-31 10:40:18 +08:00
Readme.md EmulatorPkg: Update package level Readme.md 2018-09-10 10:29:34 +08:00
build.sh EmulatorPkg/build.sh: Merge GCC toolchain detection from OVMF 2017-06-02 17:44:00 -07:00

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