Ubuntu 22.04 安裝和運行 EDK2 超詳細教程
適合新手小白,從零開始
🌟 1. 什么是 EDK2?
EDK2(EFI Development Kit 2)是一個開源的 UEFI(統一可擴展固件接口)開發環境,主要用于編寫和測試 UEFI 固件。簡單來說,它可以用來開發和運行 UEFI BIOS,比如在 QEMU 模擬器中測試 UEFI 啟動。
🚀 2. 安裝 EDK2 的必備工具
在 Ubuntu 22.04 中,我們需要安裝一些編譯工具和依賴項。
🔹 第一步:更新 Ubuntu
sudo apt update && sudo apt upgrade -y
這一步的作用:確保你的 Ubuntu 系統是最新的,避免后續出現兼容性問題。
🔹 第二步:安裝必要的軟件包
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 源碼
git clone https://github.com/tianocore/edk2.git --recursive
cd edk2
注意:
--recursive
是為了下載 EDK2 依賴的子模塊。- 如果忘記加
--recursive
,可以手動運行:git submodule update --init --recursive
🛠 4. 設置 EDK2 環境
在 EDK2 目錄下,運行:
source edksetup.sh
作用:初始化 EDK2 編譯環境。
然后,我們需要創建 BaseTools
(EDK2 需要的工具):
make -C BaseTools
作用:構建 EDK2 需要的基礎工具。
📝 5. 選擇編譯工具
EDK2 需要指定編譯工具,這里我們用 GCC。
🔹 設置 GCC 編譯器
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(可選):
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,請運行:
source edksetup.sh
build -a X64 -t GCC5 -p OvmfPkg/OvmfPkgX64.dsc
編譯時間大概 3-10 分鐘(取決于你的電腦性能)。
🔹 選擇 AARCH64 平臺(ARM)
如果你要在 ARM(AARCH64)平臺上運行 UEFI,請運行:
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
qemu-system-x86_64 -bios Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd -m 512M
你會看到一個 UEFI 界面,說明成功運行!🎉
🔹 在 QEMU 上運行 AARCH64(ARM)UEFI
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 啟動磁盤,可以運行:
qemu-img create -f qcow2 uefi_disk.qcow2 20G
然后在 QEMU 中掛載磁盤:
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
目錄下運行:
source edksetup.sh
? No rule to make target 'BaseTools'
請確保 BaseTools
已正確構建:
make -C BaseTools
? qemu-system-x86_64: command not found
請檢查 QEMU 是否安裝:
qemu-system-x86_64 --version
如果沒有安裝,運行:
sudo apt install qemu-system
🎯 總結
- 安裝依賴
- 下載 EDK2
- 初始化環境
- 編譯 UEFI
- 使用 QEMU 運行 UEFI
到這里,你已經成功在 Ubuntu 22.04 上部署并運行了 EDK2 了!🎉