Ubuntu 22.04 安装和运行 EDK2 超详细教程


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 位编译器
  • python3pip:Python 3 及其包管理工具
  • nasm:汇编编译器
  • libssl-dev:支持 OpenSSL
  • qemu-system-x86qemu-system-armqemu-system-aarch64:QEMU 虚拟机(用于测试 UEFI)

📥 3. 下载 EDK2 源代码

我们要从 GitHub 获取 EDK2 的源码。

🔹 克隆 EDK2 源码

bash 复制代码
git clone https://github.com/tianocore/edk2.git --recursive
cd edk2

注意:

  • --recursive 是为了下载 EDK2 依赖的子模块。

  • 如果忘记加 --recursive,可以手动运行:

    bash 复制代码
    git 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

🎯 总结

  1. 安装依赖
  2. 下载 EDK2
  3. 初始化环境
  4. 编译 UEFI
  5. 使用 QEMU 运行 UEFI

到这里,你已经成功在 Ubuntu 22.04 上部署并运行了 EDK2 了!🎉

相关推荐
SKYDROID云卓小助手2 小时前
三轴云台之相机技术篇
运维·服务器·网络·数码相机·音视频
东方佑2 小时前
自动调整PPT文本框内容:防止溢出并智能截断文本
linux·运维·powerpoint
zhougl9963 小时前
html处理Base文件流
linux·前端·html
泥土编程4 小时前
kubekey -实现懒人一键部署K8S集群
linux·运维
wirepuller_king7 小时前
创建Linux虚拟环境并远程连接,finalshell自定义壁纸
linux·运维·服务器
在野靡生.8 小时前
Ansible(1)—— Ansible 概述
linux·运维·ansible
风123456789~8 小时前
【Linux运维】查询指定日期的上月
linux·运维·服务器
zyk_5208 小时前
Docker desktop如何汉化
运维·docker·容器
韭菜盖饭8 小时前
解决Docker端口映射后外网无法访问的问题
运维·docker·容器
我没想到原来他们都是一堆坏人9 小时前
利用vmware快速安装一个可以使用的centos7系统
linux·虚拟机