2. EDK II 开发环境搭建:Windows/Linux下安装VS、Python、NASM、Git、EDK II源码克隆、环境变量配置

搭建稳定、一致的开发环境是进入EDK II世界的第一步。本章将指导你在Windows和Linux两大主流操作系统上,完成从基础工具链安装到EDK II源码克隆、环境变量配置的全流程。请严格按照版本要求操作,避免因工具版本不匹配导致的编译失败。

2.1 工具链概览与版本要求

EDK II对编译工具链有严格的版本依赖。下表列出了核心组件的推荐版本及用途:

组件 推荐版本 用途 Windows Linux
Visual Studio VS 2019 / 2022 C 编译器、链接器、NMAKE 必需 不适用
Python 3.8 ~ 3.12 构建脚本(BaseTools)、环境管理 必需 必需
NASM 2.15.05+ 汇编器(X64/IA32 汇编代码) 必需 必需
Git 2.30+ 源码版本控制、克隆 EDK II 仓库 必需 必需
OpenSSL 1.1.1 或 3.x 加密库(可选,用于安全启动) 可选 可选
版本兼容性提示: 建议优先使用 VS 2022 Community 版(免费)和 Python 3.10。Python 3.13 及以上版本可能因移除了部分标准库导致 BaseTools 脚本报错,请谨慎升级。

2.2 Windows 环境搭建

2.2.1 安装 Visual Studio

  1. 访问 Visual Studio 官网,下载 Community 2022 安装程序。
  2. 运行安装程序,在“工作负载”选项卡中勾选 “使用 C++ 的桌面开发”。
  3. 在右侧“安装详细信息”中,确保包含 “Windows 10/11 SDK” 和 “适用于最新 v143 生成工具的 C++ ATL”。
  4. 点击“安装”,等待完成(约需 10-20 分钟,取决于网络速度)。
  5. 安装完成后,重启系统以确保环境变量生效。

2.2.2 安装 Python

  1. 从 Python 官网 下载 Python 3.10.x Windows 安装包(64位)。
  2. 安装时 务必勾选 “Add Python to PATH”。
  3. 选择 “Customize installation”,确保所有可选功能(pip、py launcher)均被勾选。
  4. 安装完成后,打开命令提示符验证:python --version 应显示 Python 3.10.x。

2.2.3 安装 NASM

  1. 从 NASM 官网 下载 Windows 安装包(通常为 nasm-2.16.01-installer-x64.exe)。
  2. 运行安装程序,安装路径建议保持默认 C:\Program Files\NASM。
  3. 安装程序会自动将 NASM 添加到系统 PATH。若未自动添加,请手动将 C:\Program Files\NASM 加入环境变量。
  4. 验证:打开新命令提示符,输入 nasm --version。

2.2.4 安装 Git

  1. 从 Git 官网 下载 Windows 版 Git 安装程序。
  2. 安装过程中,建议选择 “Git from the command line and also from 3rd-party software”。
  3. 选择 “Use Visual Studio Code as Git’s default editor”(若已安装 VS Code)。
  4. 行结束符转换选择 “Checkout as-is, commit as-is”(避免 CRLF/LF 转换问题)。
  5. 验证:git --version。

2.3 Linux 环境搭建(以 Ubuntu 22.04 LTS 为例)

Linux 环境通常使用系统包管理器安装工具链,更为简洁。

2.3.1 安装编译工具链

# 更新包索引
sudo apt update

# 安装 GCC、G++、Make、uuid-dev 等基础工具
sudo apt install -y build-essential uuid-dev

# 安装 Python 3.10 及 pip
sudo apt install -y python3 python3-pip

# 安装 NASM
sudo apt install -y nasm

# 安装 Git
sudo apt install -y git

2.3.2 验证安装

gcc --version
python3 --version
nasm --version
git --version
Linux 特别说明: 某些发行版默认的 Python 版本可能为 3.12 或更高。若遇到 BaseTools 兼容性问题,建议使用 python3.10 或通过 update-alternatives 切换默认 Python 版本。

2.4 克隆 EDK II 源码

EDK II 官方主仓库托管在 GitHub 上。我们推荐克隆稳定分支 edk2-stable,而非主分支 master,以获得更稳定的构建体验。

# 创建工作目录(建议路径不含空格和中文)
mkdir -p ~/workspace/edk2
cd ~/workspace/edk2

# 克隆 EDK II 稳定分支(以 edk2-stable202405 为例)
git clone https://github.com/tianocore/edk2.git -b edk2-stable202405

# 进入 edk2 目录
cd edk2

# 初始化子模块(必须执行,否则编译会缺少依赖)
git submodule update --init --recursive
子模块初始化失败? 若网络不稳定导致子模块克隆超时,可尝试设置 Git 代理,或使用国内镜像源(如 Gitee 上的 EDK2 镜像)。子模块未完全初始化是编译失败最常见的原因之一。

2.5 环境变量配置

EDK II 使用 edksetup.bat(Windows)或 edksetup.sh(Linux)脚本自动配置环境变量。该脚本会设置 WORKSPACE、EDK_TOOLS_PATH、PACKAGES_PATH 等关键变量,并将 BaseTools 编译工具加入 PATH。

2.5.1 Windows 环境变量配置

  1. 打开 “x64 Native Tools Command Prompt for VS 2022”(开始菜单中搜索)。
  2. 切换到 EDK II 源码目录:cd C:\path\to\edk2
  3. 执行环境配置脚本:edksetup.bat
  4. 验证环境变量:echo %WORKSPACE% 应显示 EDK II 根目录路径。

2.5.2 Linux 环境变量配置

# 进入 EDK II 目录
cd ~/workspace/edk2/edk2

# 执行环境配置脚本
source edksetup.sh

# 验证环境变量
echo $WORKSPACE
持久化配置: 为避免每次打开终端都执行 source edksetup.sh,可将该命令添加到 ~/.bashrc 或 ~/.zshrc 文件中:
echo "source ~/workspace/edk2/edk2/edksetup.sh" >> ~/.bashrc

2.6 环境搭建验证:编译 BaseTools

环境变量配置完成后,建议立即编译 BaseTools,以验证工具链是否正常工作。

# 在 EDK2 根目录下执行
make -C BaseTools

# 编译成功后,BaseTools/Source/C/bin 目录下会生成可执行文件

若编译过程中出现错误,请检查以下常见问题:

  • Python 版本不匹配: 确保 Python 3 为默认版本,且 pip 已安装。
  • NASM 未找到: 检查 NASM 是否在 PATH 中。
  • uuid-dev 缺失(Linux): 安装 uuid-dev 包。
  • VS 环境未激活(Windows): 务必使用 x64 Native Tools Command Prompt,而非普通 CMD。

2.7 开发环境架构总览

下图展示了 EDK II 开发环境的整体架构,以及各工具之间的调用关系:

EDK II 开发环境架构总览 EDK II 源码仓库 Git 版本控制 子模块(CryptoPkg等) Visual Studio (Windows) GCC (Linux) NASM 汇编器 Python 构建脚本 编译输出:.efi 固件驱动 / .fd 固件镜像 / FV 卷 BaseTools 生成:GenFw、GenFfs、GenSec、VfrCompile 等 关键环境变量说明: • WORKSPACE:指向 EDK II 根目录,所有构建操作以此为基准。 • EDK_TOOLS_PATH:指向 BaseTools 目录,包含编译辅助工具。 • PACKAGES_PATH:指向额外包路径(如 edk2-platforms),用于多仓库项目。

2.8 常见问题与避坑指南

问题现象 根本原因 解决方案
Python 命令找不到 Python 未加入 PATH 重新安装并勾选“Add to PATH”,或手动添加 Python 安装目录到系统环境变量
nasm: command not found NASM 未安装或 PATH 未配置 Linux 执行 sudo apt install nasm;Windows 检查 PATH 是否包含 NASM 安装目录
make: command not found Linux 缺少 build-essential sudo apt install build-essential
uuid.h: No such file or directory Linux 缺少 uuid-dev 库 sudo apt install uuid-dev
LINK : fatal error LNK1104: cannot open file 'uuid.lib' Windows SDK 未正确安装 重新运行 VS 安装程序,确保“Windows 10/11 SDK”已勾选
Submodule 'xxx' not initialized 未执行 git submodule update 在 EDK2 根目录执行 git submodule update --init --recursive
最佳实践: 建议在搭建环境后,立即编译 EDK II 自带的 MdeModulePkg 或 MdePkg 中的示例模块(如 HelloWorld),以端到端验证整个工具链是否正常工作。这是避免后续开发中“环境问题”与“代码问题”混淆的关键一步。