Ubuntu 22.04 安装和运行 EDK2 超详细教程
适合新手小白,从零开始
🌟 1. 什么是 EDK2?
EDK2(EFI Development Kit 2)是一个开源的 UEFI(统一可扩展固件接口)开发环境,主要用于编写和测试 UEFI 固件。简单来说,它可以用来开发和运行 UEFI BIOS,比如在 QEMU 模拟器中测试 UEFI 启动。
🚀 2. 安装 EDK2 的必备工具
在 Ubuntu 22.04 中,我们需要安装一些编译工具和依赖项。
🔹 第一步:更新 Ubuntu
bash
sudo apt update && sudo apt upgrade -y
这一步的作用:确保你的 Ubuntu 系统是最新的,避免后续出现兼容性问题。
🔹 第二步:安装必要的软件包
bash
sudo apt install -y build-essential uuid-dev iasl git \
gcc-aarch64-linux-gnu gcc-12 g++-12 \
python3 python3-pip nasm python3-distutils \
libssl-dev qemu-system-x86 qemu-system-arm qemu-system-aarch64
各个软件的作用:
build-essential
:C/C++ 编译工具uuid-dev
:UUID 相关的开发库iasl
:Intel ACPI 编译工具git
:用于克隆代码gcc-aarch64-linux-gnu
:ARM 64 位编译器python3
、pip
:Python 3 及其包管理工具nasm
:汇编编译器libssl-dev
:支持 OpenSSLqemu-system-x86
、qemu-system-arm
、qemu-system-aarch64
:QEMU 虚拟机(用于测试 UEFI)
📥 3. 下载 EDK2 源代码
我们要从 GitHub 获取 EDK2 的源码。
🔹 克隆 EDK2 源码
bash
git clone https://github.com/tianocore/edk2.git --recursive
cd edk2
注意:
--recursive
是为了下载 EDK2 依赖的子模块。如果忘记加
--recursive
,可以手动运行:
bashgit submodule update --init --recursive
🛠 4. 设置 EDK2 环境
在 EDK2 目录下,运行:
bash
source edksetup.sh
作用:初始化 EDK2 编译环境。
然后,我们需要创建 BaseTools
(EDK2 需要的工具):
bash
make -C BaseTools
作用:构建 EDK2 需要的基础工具。
📝 5. 选择编译工具
EDK2 需要指定编译工具,这里我们用 GCC。
🔹 设置 GCC 编译器
bash
export GCC5_AARCH64_PREFIX=aarch64-linux-gnu-
export GCC5_X64_PREFIX=x86_64-linux-gnu-
export TOOLCHAIN=GCC5
作用:
GCC5_AARCH64_PREFIX
:用于 ARM 64 位编译GCC5_X64_PREFIX
:用于 x86_64 编译TOOLCHAIN=GCC5
:选择 GCC 作为编译工具
如果你要用 Clang(可选):
bash
export CC=clang
export CXX=clang++
export TOOLCHAIN=CLANG38
但对于新手,建议使用 GCC(默认支持较好)。
🔧 6. 选择要编译的 UEFI 固件
EDK2 可以编译不同的平台,我们主要介绍 x86_64(用于 QEMU)和 AARCH64(ARM)。
🔹 选择 x86_64 平台(用于 PC 模拟 UEFI)
如果你要在 QEMU(x86_64)上测试 UEFI,请运行:
bash
source edksetup.sh
build -a X64 -t GCC5 -p OvmfPkg/OvmfPkgX64.dsc
编译时间大概 3-10 分钟(取决于你的电脑性能)。
🔹 选择 AARCH64 平台(ARM)
如果你要在 ARM(AARCH64)平台上运行 UEFI,请运行:
bash
source edksetup.sh
build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dsc
📁 7. 编译完成后,找到 UEFI 固件
编译完成后,生成的 UEFI 固件位置如下:
平台 | 固件路径 |
---|---|
x86_64(PC BIOS) | Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd |
AARCH64(ARM BIOS) | Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_EFI.fd |
🚀 8. 运行 UEFI 固件
🔹 在 QEMU 上运行 x86_64 UEFI
bash
qemu-system-x86_64 -bios Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd -m 512M
你会看到一个 UEFI 界面,说明成功运行!🎉
🔹 在 QEMU 上运行 AARCH64(ARM)UEFI
bash
qemu-system-aarch64 -machine virt -cpu cortex-a57 -m 1024 \
-bios Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_EFI.fd \
-nographic
这会运行 ARM 版本的 UEFI。
💾 9. 创建 UEFI 虚拟磁盘(可选)
如果你想创建一个 UEFI 启动磁盘,可以运行:
bash
qemu-img create -f qcow2 uefi_disk.qcow2 20G
然后在 QEMU 中挂载磁盘:
bash
qemu-system-x86_64 -bios Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd \
-m 1024 -drive file=uefi_disk.qcow2,if=virtio
这样你可以在 QEMU 里安装 UEFI 操作系统,比如 Windows 或 Linux。
🛠 10. 可能遇到的问题
❓ edksetup.sh: command not found
请确认你已在 edk2
目录下运行:
bash
source edksetup.sh
❓ No rule to make target 'BaseTools'
请确保 BaseTools
已正确构建:
bash
make -C BaseTools
❓ qemu-system-x86_64: command not found
请检查 QEMU 是否安装:
bash
qemu-system-x86_64 --version
如果没有安装,运行:
bash
sudo apt install qemu-system
🎯 总结
- 安装依赖
- 下载 EDK2
- 初始化环境
- 编译 UEFI
- 使用 QEMU 运行 UEFI
到这里,你已经成功在 Ubuntu 22.04 上部署并运行了 EDK2 了!🎉