参考书籍:UEFI编程实践
安装开发工具
可自行选择其他版本,此处使用VS2019
安装VS2019
- 安装路径可自定义;
- 勾选:使用C++的桌面开发
- 勾选:C++ Clang工具(最开始没有安装,导致编译MdeModulePkg一直报错)
- 其他项目自选
安装 Python27
也可以安装新版python,实测python38/python39没问题
- 打开python-2.7.15.msi安装文件,点击Next;
- 找到Add python.exe to path 点击前面的×,选择Will be installed on local hard drive
- 点击Advanced 勾选Compile .py files byte code after installation
- 继续安装,直到完成
NASM
下载完成之后,解压 并 改名 至
C:\nasm
IASL
下载完成之后,解压 并 改名 至:
C:\ASL
环境变量
系统变量 -> Path 下添加:
C:\Python27\
C:\ASL
C:\nasm
系统变量 下新建:
PYTHON_HOME=C:\Python27
CLANG_BIN=VS2019安装路径\2019\Professional\VC\Tools\Llvm\x64\bin\
EDKII
在C盘根目录下面新建目录:C:\UEFI,进入此目录,右键 “GIT Bash Here”,执行如下指令下载EDKII:
git clone https://github.com/tianocore/edk2.git
git clone https://github.com/tianocore/edk2-libc.git
(下载可能会失败,多试几次,或者开启VPN下载)
完成之后会在C:\UEFI目录下面生成 \edk2 和 edk2-libc
配置开发环境
更新submodule:
GIT Bash进入C:\UEFI\edk2 目录,执行如下指令:
git submodule update --init
执行完这次操作之后,以后更新submodule时,就不用添加–init,直接执行 git submodule update 。
(下载可能会失败,多试几次,或者开启VPN下载;submodule的控制文件位于edk2.gitmodules)
编译 BaseTools
- 进入C:\UEFI\edk2 目录,执行如下指令:
edksetup.bat Rebuild
2. 编译好的工具在:C:\UEFI\edk2\BaseTools
设置开发工具路径
为方便后续开发,设置如下脚本 以配置环境变量,内容如下:
C:\UEFI\mybuild.bat
cmd /k "set WORKSPACE=%CD%&&set EDK_TOOLS_PATH=%CD%\edk2\BaseTools&&set CONF_PATH=%CD%\edk2\conf&&set PACKAGES_PATH=%CD%\edk2;%CD%\edk2-libc&&edk2\edksetup.bat"
设置EDKII配置文件:
配置文件位于:C:\UEFI\edk2\Conf,分别是 target.txt 和 tools_def.txt
- C:\UEFI\edk2\Conf\target.txt (确保TOOL_CHAIN_TAG正确)
ACTIVE_PLATFORM = EmulatorPkg/EmulatorPkg.dsc
TARGET = DEBUG
TARGET_ARCH = IA32
TOOL_CHAIN_CONF = Conf/tools_def.txt
**TOOL_CHAIN_TAG = VS2019**
- C:\UEFI\edk2\Conf\tools_def.txt
主要确定工具路径,如果使用默认路径安装VS2015则不用更改路径(如果安装的其他版本,则确认对应版本的路径)
编译指令
(前面环境配置完之后,以后重新运行edk2只用运行以下指令,不用重复执行上面步骤)
编译前准备:
C:\UEFI,双击脚本文件:
mybuild.bat
然后直接输入编译指令即可
编译环境已准备,输入指令编译模块:
c:\UEFI>build -p ***模块路径*** -t VS2015x86 -a IA32
example1:编译 EmulatorPkg 模块(edk2\EmulatorPkg\EmulatorPkg.dsc):
build -p edk2\EmulatorPkg\EmulatorPkg.dsc -t VS2015x86 -a IA32
example2:编译 Hello.inf 包(AppPkg\Applications\Hello\Hello.inf)
build -p edk2-libc\AppPkg\AppPkg.dsc -a X64 -m edk2-libc\AppPkg\Applications\Hello\Hello.inf -b DEBUG
BUILD 常用参数
模拟器运行 .efi 文件
编译EmulatorPkg 模块-模拟器模块:
edk2\EmulatorPkg\EmulatorPkg.dsc
运行模拟器:
C:\UEFI\Build\EmulatorIA32\DEBUG_VS2015x86\IA32\WinHost.exe
将 .efi 程序 放到 WinHost.exe 目录,进入 shell 之后即可在当前目录找到 .efi 程序