EDKII Windows 开发环境搭建
一、获取 EDKII 源码
1. 获取源码:
github 源码链接
推荐使用 git clone --recursive https://github.com/tianocore/edk2.git
直接把所有依赖全 clone 下来。不然可能会因 get submodules 不完整,遇到本文 (三 - 5) 中的问题:
BrotliCompress.c(20): fatal error C1083: ļ: ./brotli/c/common/constants.h: No such file or directory
2. 获取最新的 Submodules:
第 1 步中使用 git clone --recursive
命令 clone 仓库的忽略以下步骤
To get a full, buildable EDK II repository, use following steps of git command
git clone https://github.com/tianocore/edk2.git cd edk2 git submodule update --init cd ..
If there’s update for submodules, use following git commands to get the latest submodules code.
cd edk2 git pull git submodule update
Note: When cloning submodule repos, ‘–recursive’ option is not recommended. EDK II itself will not use any code/feature from submodules in above submodules. So using ‘–recursive’ adds a dependency on being able to reach servers we do not actually want any code from, as well as needlessly downloading code we will not use.
二、阅读 ReadMe
1. 根据 ReadMe 的指引,找到以下文档:
三、搭建 Windows 开发环境
1. 安装 Visual Studio 2019
- 安装时勾选 C++ 桌面开发组件
2. 安装 Python
Install Python37 or late version (https://www.python.org/) to run python tool from source
3. 安装 NASM
- 下载链接: NASM(下载 Win32/Win64 的绿色包即可)
- 解压 “NASM” 文件夹至 C 盘根目录(最好是 C 盘根目录,免得出奇怪的问题)
- 新建环境变量:
4. 安装 ASL
- 下载链接:ASL
- 将压缩包中的 “iasl.exe” 解压至 “C:\ASL”, 没有这个路径的话要先创建 “C:\ASL”
- 添加环境变量至 path:
5. 编译 BaseTools
根据 Getting Started with EDK II 的指引,使用以下命令编译 BaseTools
$ D:\edk2> set PYTHON_HOME=C:\Users\beirs\AppData\Local\Programs\Python\Python310
$ D:\edk2> edksetup.bat Rebuild
然后就是喜闻乐见的世事无常大肠包小肠:
BrotliCompress.c(20): fatal error C1083: ļ: ./brotli/c/common/constants.h: No such file or directory
此问题是 submodules 不完整导致,建议回到本文开头,按照建议重新 clone 仓库
6. 编译 EmulatorPkg (UEFI 仿真)
- 运行 edksetup 脚本,建立命令行 build 命令环境(如果 powershell 下 build 命令不可用,可尝试 cmd 执行)
$ D:\edk2> .\edksetup.bat
- 阅读 “EmulatorPkg\Readme.md”, 根据文档提示执行 build 命令,编译 UEFI 仿真环境
build -p EmulatorPkg\EmulatorPkg.dsc -t VS2019 -a X64
编译完成如下:
- 阅读 “EmulatorPkg\Readme.md”, 根据文档提示执行 UEFI 仿真器
cd Build\EmulatorX64\DEBUG_VS2017\X64\ && WinHost.exe
然后,ohohoh,真棒啊!可以开心耍了
四、EDKII Samples
推荐看看源码中以下模块的实现,都是比较实用的示例:
- ShellPkg\Application\
- MdeModulePkg\Application\HelloWorld
- MdeModulePkg\Universal\DriverSampleDxe
EDKII 官方文档链接: https://github.com/tianocore/tianocore.github.io/wiki/EDK-II-Documents