2. 开发环境搭建:Windows/Linux 下 EDK II 环境配置、Python 与工具链安装、BaseTools 编译与验证
搭建稳定、可复现的开发环境是 EDK II 模块开发的第一步。本章将分别介绍 Windows 和 Linux 两大主流平台下的环境配置流程,涵盖 Python 依赖、工具链安装、BaseTools 编译以及环境验证方法。
2.1 环境概览与核心依赖
EDK II 构建系统依赖以下核心组件:
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Python | 3.8 – 3.12 | 构建脚本与工具链驱动 |
| Git | ≥ 2.20 | 源码版本管理 |
| BaseTools | 随 edk2 源码 | 编译工具集(C 源码 + Python 封装) |
| 工具链 | VS2019/VS2022 (Windows) GCC5+ (Linux) | C 编译器、链接器 |
| NASM | ≥ 2.15 | 汇编器(X64 汇编支持) |
版本提示:Python 3.13 目前与 edk2 的部分脚本存在兼容性问题,建议使用 3.10 – 3.12 版本以获得最佳稳定性。
2.2 Windows 环境配置
2.2.1 安装基础工具
- 安装 Git for Windows:从官网下载安装包,选择“Git from the command line and also from 3rd-party software”。
- 安装 Python:下载 Python 3.10/3.11 安装包,务必勾选 “Add Python to PATH”。
- 安装 Visual Studio 2022:在“工作负载”中选择“使用 C++ 的桌面开发”,确保包含 MSVC v143 生成工具和 Windows 10 SDK。
- 安装 NASM:下载 Windows 安装包,安装后手动将
C:\Program Files\NASM添加到系统 PATH。
2.2.2 克隆 edk2 源码
cd C:\
git clone https://github.com/tianocore/edk2.git
cd edk2
git submodule update --init --recursive
2.2.3 编译 BaseTools
打开 x64 Native Tools Command Prompt for VS 2022,执行:
cd C:\edk2
edk2\BaseTools\Bin\Win32\Build.exe -t VS2022 -a X64 -p edk2\EmulatorPkg\EmulatorPkg.dsc
首次编译会自动触发 BaseTools 的本地编译。编译完成后,验证工具是否可用:
BaseTools\Bin\Win32\GenFw.exe --version
BaseTools\Bin\Win32\EfiRom.exe --version
常见问题:若提示
Python 未找到,请检查 PATH 中 Python 路径是否在 VS 命令提示符中生效。建议使用 where python 确认。
2.3 Linux 环境配置
2.3.1 安装系统依赖
以 Ubuntu 22.04/24.04 为例:
sudo apt update
sudo apt install -y git python3 python3-pip python3-venv \
build-essential uuid-dev nasm gcc g++ \
acpica-tools
2.3.2 克隆 edk2 并初始化子模块
cd ~
git clone https://github.com/tianocore/edk2.git
cd edk2
git submodule update --init --recursive
2.3.3 编译 BaseTools
cd ~/edk2
make -C BaseTools
编译完成后,设置环境变量:
export EDK_TOOLS_PATH=$HOME/edk2/BaseTools
export PATH=$EDK_TOOLS_PATH/Bin/Linux:$PATH
验证工具:
GenFw --version
EfiRom --version
注意:Linux 下默认使用 GCC5 工具链。若使用 Clang,需额外安装
llvm 和 clang 包,并在构建时指定 -t CLANGDWARF。
2.4 工具链与 Python 依赖安装
2.4.1 Python 虚拟环境(推荐)
cd ~/edk2
python3 -m venv edk2_venv
source edk2_venv/bin/activate
pip install --upgrade pip
pip install -r pip-requirements.txt
Windows 下使用:
python -m venv edk2_venv
edk2_venv\Scripts\activate
pip install -r pip-requirements.txt
2.4.2 工具链配置对比
| 平台 | 推荐工具链 | 环境变量 | 目标架构 |
|---|---|---|---|
| Windows | VS2022 | VS2022_PREFIX 自动检测 | IA32, X64, ARM64 |
| Linux | GCC5 | GCC5_*_PREFIX 可选 | IA32, X64, AARCH64 |
| macOS | Xcode Clang | CLANGDWARF_*_PREFIX | X64, AARCH64 |
2.5 环境验证与构建测试
2.5.1 验证 BaseTools 完整性
执行以下命令,确认关键工具存在且版本正确:
# Windows
where GenFw EfiRom VfrCompile
# Linux
which GenFw EfiRom VfrCompile
2.5.2 编译最小平台验证
使用 EmulatorPkg 进行快速验证(无需硬件):
# Windows (VS2022)
build -t VS2022 -a X64 -p EmulatorPkg\EmulatorPkg.dsc
# Linux (GCC5)
build -t GCC5 -a X64 -p EmulatorPkg/EmulatorPkg.dsc
编译成功后,会在 Build/EmulatorX64/DEBUG_* 目录下生成 Host.efi 等文件。
验证通过标志:终端输出
Build... Done! 且无 ERROR 日志。生成的 .efi 文件大小应大于 100KB。
2.6 环境搭建流程总览
下图展示了从零开始搭建 EDK II 开发环境的完整流程与关键决策点:
2.7 常见问题与排查
| 现象 | 可能原因 | 解决方案 |
|---|---|---|
Python 3 未找到 | Python 未加入 PATH | 重新安装并勾选“Add to PATH” |
NASM 未找到 | NASM 未安装或 PATH 缺失 | 手动添加 NASM 安装目录到 PATH |
BaseTools 编译失败 | 缺少 C 编译器或 SDK | Windows 安装 VS 工作负载;Linux 安装 build-essential |
子模块更新失败 | 网络问题或 Git 版本过低 | 使用代理或升级 Git 到 ≥ 2.20 |
构建时提示工具链未定义 | 未设置 ACTIVE_PLATFORM 或 TOOL_CHAIN_TAG | 在命令行中显式指定 -t VS2022 或 -t GCC5 |
最佳实践:建议在项目根目录创建
env_setup.sh(Linux)或 env_setup.bat(Windows)脚本,将环境变量、虚拟环境激活、工具链路径等集中管理,避免每次打开终端重复配置。