编译环境准备
sudo apt-get install gcc-aarch64-linux-gnu
sudo apt-get install qemu-system-aarch64
NOTE: 需要确保 aarch64-linux-gnu-gcc 的版本号,过低会编译错误
代码下载
mkdir uefi && cd uefi
git clone https://github.com/tianocore/edk2-platforms.git
git clone https://github.com/acpica/acpica.git
git clone https://github.com/tianocore/edk2.git
由于EDK II里面包含一些子模块的仓库,请运行如下命令对子模块进行更新:
cd edk2
git submodule update --init
cd ..
编译
编译方法
cd uefi
export WORKSPACE=$PWD
export PACKAGES_PATH=$WORKSPACE/edk2:$WORKSPACE/edk2-platforms
export IASL_PREFIX=$WORKSPACE/acpica/generate/unix/bin/
export GCC5_AARCH64_PREFIX=/usr/bin/aarch64-linux-gnu-
source edk2/edksetup.sh
build -a AARCH64 -t GCC5 -p edk2/ArmVirtPkg/ArmVirtQemu.dsc -b DEBUG
编译错误
解决办法
sudo apt install iasl
cp /usr/bin/iasl acpica/generate/unix/bin/
最终编译出 QEMU_EFI.fd 代表编译成功
运行
qemu-system-aarch64 -M virt -cpu cortex-a57 -bios Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_EFI.fd -net none -serial stdio
输出如下:
倒计时之后进入 shell
在 shell 下可以输入 help 可以看到一些关键运行指令
按下 ctrl+C 可以退出 shell