2. 开发环境搭建:Windows/Linux 下 EDK II 环境配置、Python 与工具链安装、BaseTools 编译与验证

搭建稳定、可复现的开发环境是 EDK II 模块开发的第一步。本章将分别介绍 Windows 和 Linux 两大主流平台下的环境配置流程,涵盖 Python 依赖、工具链安装、BaseTools 编译以及环境验证方法。

2.1 环境概览与核心依赖

EDK II 构建系统依赖以下核心组件:

组件版本要求说明
Python3.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 安装基础工具

  1. 安装 Git for Windows:从官网下载安装包,选择“Git from the command line and also from 3rd-party software”。
  2. 安装 Python:下载 Python 3.10/3.11 安装包,务必勾选 “Add Python to PATH”。
  3. 安装 Visual Studio 2022:在“工作负载”中选择“使用 C++ 的桌面开发”,确保包含 MSVC v143 生成工具和 Windows 10 SDK。
  4. 安装 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 工具链配置对比

平台推荐工具链环境变量目标架构
WindowsVS2022VS2022_PREFIX 自动检测IA32, X64, ARM64
LinuxGCC5GCC5_*_PREFIX 可选IA32, X64, AARCH64
macOSXcode ClangCLANGDWARF_*_PREFIXX64, 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 开发环境的完整流程与关键决策点:

EDK II 开发环境搭建流程 EDK II 开发环境搭建流程 1. 选择开发平台 Windows 环境 Linux 环境 安装 VS2022 + NASM + Python 克隆 edk2 + 子模块初始化 安装 GCC5 + NASM + Python 克隆 edk2 + 子模块初始化 4. 编译 BaseTools 5. 构建 EmulatorPkg 验证 验证通过 → 环境就绪 验证失败 → 检查 PATH 与依赖

2.7 常见问题与排查

现象可能原因解决方案
Python 3 未找到Python 未加入 PATH重新安装并勾选“Add to PATH”
NASM 未找到NASM 未安装或 PATH 缺失手动添加 NASM 安装目录到 PATH
BaseTools 编译失败缺少 C 编译器或 SDKWindows 安装 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)脚本,将环境变量、虚拟环境激活、工具链路径等集中管理,避免每次打开终端重复配置。