這篇是針對 ASRock Rack ALTRAD8UD 平台的 EDK2 韌體編譯指南, 更新自之前以 Mt. Jade 為主的舊文章。Rebecca 幾個月前已經把 Altrad8ud 的支援 commit 進 EDK2 主線了。
環境準備(Ubuntu 24.04)
安裝必要的建構工具,包含 ARM 交叉編譯器:
sudo apt install build-essential uuid-dev iasl nasm \
gcc-aarch64-linux-gnu python3-distutils git
Clone 所需的 repositories:
git clone https://github.com/tianocore/edk2.git
git clone https://github.com/tianocore/edk2-platforms.git
git clone https://github.com/tianocore/edk2-non-osi.git
git clone https://github.com/AmpereComputing/edk2-ampere-tools.git
git clone https://git.trustedfirmware.org/TF-A/trusted-firmware-a.git
初始化 BaseTools
cd edk2
git submodule update --init
make -C BaseTools
source edksetup.sh
編譯 ARM Trusted Firmware(ATF)
cd trusted-firmware-a
make CROSS_COMPILE=aarch64-linux-gnu- PLAT=altra \
bl31 fiptool certtool
設定環境變數
export WORKSPACE=/path/to/workspace
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms:$WORKSPACE/edk2-non-osi
export VENDOR_NAME="ASRock Rack"
export BOARD_NAME="ALTRAD8UD"
執行 buildfw.sh
# RELEASE build,啟用 Secure Boot 和 TPM2
./edk2-ampere-tools/buildfw.sh \
-b RELEASE \
-p AmpereAltraAltrad8udPkg \
--secure-boot --tpm2
可用選項包含:RELEASE/DEBUG、Secure Boot、網路功能、TPM2 等。
合併到原廠 BIOS
產出的 EDK2 image 約 10MB,需要合併到 32MB 的原廠 BIOS,偏移量為 0x600000:
# 複製原廠 BIOS
cp stock_bios.bin merged_bios.bin
# 在偏移量 0x600000 寫入 EDK2 image
dd if=edk2_image.bin of=merged_bios.bin bs=1 seek=$((0x600000)) conv=notrunc
# 打包成 tar 供 WebGUI 升級使用
tar czf altrad8ud_bios.tar.gz merged_bios.bin
也可以直接透過 BMC 介面部署,省去打包步驟。
原文發佈於 blog.richliu.com