1. 安装必要环境
① 安装Visual Studio 2019。注意:如果机器上已安装了其他版本的Visual Studio,需要先将其卸载,而后再安装Visual Studio 2019。
安装时,"工作负载"勾选"使用C++的桌面开发"。此外,在右侧”安装详细信息”列表中,需要勾选”适用于Windows的clang编译器”。
② 安装Python 3.8至C:\Python38\,并添加到环境变量中。
Python 3.8下载地址:Python Release Python 3.8.0 | Python.org
③ 安装NASM至C:\NASM\,并添加到环境变量中。
NASM下载地址(目前稳定版为2.16.01。感谢评论区网友提示,最好下载NASM 2.15以上版本,否则可能出现兼容性问题):https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-2.16.01-installer-x64.exe
④ 安装CYGWIN至C:\cygwin64\,并添加到环境变量中。
CYGWIN下载地址:http://www.cygwin.com/setup-x86_64.exe
⑤ 安装IASL至C:\ASL\。
IASL下载地址:https://acpica.org/sites/acpica/files/iasl-win-20200110.zip
注意,IASL所在目录必须是”C:\ASL\”,否则后续构建流程将会出错(推测是由于EDK2指定IASL路径时采用的是硬编码)。
IASL无需添加到环境变量中。
⑥ 将Visual Studio 2019自带的Clang路径(在笔者机器上,该路径为:C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\VC\Tools\Llvm\x64\bin\),加入环境变量中。
笔者机器上的环境变量配置,如下图所示(Clang路径未能截全,请参考上一段的示例)。
打开Developer Command Prompt for VS 2019(可在任务栏左侧的搜索框中输入关键字以查找此应用程序)。可以把它理解为一个Visual Studio 2019的Shell程序。
注:如无特殊说明,后续命令都将在Developer Command Prompt for VS 2019中执行,并且执行命令时所处目录为edk2工程顶级目录,即”xxx\edk2”。
⑦ 下载EDK2
git clone https://github.com/tianocore/edk2
cd edk2
git submodule update --init
2. 配置EDK2开发环境
edksetup.bat Rebuild # 生成BaseTools/Bin/Win32目录下的一系列文件
edksetup.bat
注:执行此命令后,可能出现的报错信息、出错原因及解决方法
① 控制台中出现”!!!Warning!!! No {ENV} set”字样的警告,则表明相应的环境变量ENV未配置好,请重新配置该环境变量。虽然是Warning,但必须解决,否则后续Build将会出错。
② 控制台中出现"Error: Cannot find BaseTools Bin Win32!!!",则通常是因为没有执行上一条命令"edksetup.bat Rebuild"所致。执行上一条命令,而后再执行本命令即可。
notepad Conf/target.txt # 创建Conf目录下的"target.txt"配置文件
进行如下修改:
=======================================
ACTIVE_PLATFORM = MdePkg/MdePkg.dsc
...
TARGET = RELEASE
...
TARGET_ARCH = X64
...
TOOL_CHAIN_TAG = VS2019
...
MAX_CONCURRENT_THREAD_NUMBER = 0
…
=======================================
build
编译需要一段时间。若最后出现”Done”,则表明编译成功。
notepad Conf\target.txt
==========================================
ACTIVE_PLATFORM = CryptoPkg/CryptoPkg.dsc
...
==========================================
build
同上,编译需要一段时间。若最后出现”Done”,则表明编译成功。
3. 编译Ovmf工程
build -a X64 -p OvmfPkg\OvmfPkgX64.dsc -b RELEASE
注:目前仅在RELEASE模式下build成功,DEBUG模式下会build失败,原因未知。
4. 编译EmulatorPkg工程
Emulator是64位EDK2的UEFI界面模拟器,用于取代32位EDK2中的NT32工程。
build -a X64 -p EmulatorPkg\EmulatorPkg.dsc
5. 打开Emulator模拟器
执行程序” C:\edk2\Build\EmulatorX64\RELEASE_VS2019\X64\WinHost.exe”。
该程序将会启动一个”GOP Window”窗口。等待数秒后,将进入如下界面,表明Emulator工程能够正常运行。