EDK2 Ubuntu Build Note

/ Linux

EDK2

Ubuntu 20.04でのQEMU用x64/aarch64ビルド方法

Environment

sudo apt install build-essential git python2 uuid-dev nasm
sudo apt install gcc-aarch64-linux-gnu
export GCC5_AARCH64_PREFIX=aarch64-linux-gnu-

Download

git clone https://github.com/tianocore/edk2.git && cd edk2
git submodule update --init --recursive

Build

make -C BaseTools
source edksetup.sh
build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtQemu.dsc -q
build -a AARCH64 -t GCC5 -p ArmVirtPkg/ArmVirtKernelQemu.dsc -q
build -a X64 -t GCC5 -p OvmfPkg/OvmgPkgX64.dsc -q

下記のエラーが出る場合

edk2/Build/OvmfX64/RELEASE_GCC5/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/LongJump.iii:44: error: parser: instruction expected
edk2/Build/OvmfX64/RELEASE_GCC5/X64/MdePkg/Library/BaseLib/BaseLib/OUTPUT/X64/LongJump.iii:49: error: parser: instruction expected

nasmのバージョンが低い。

wget http://www.nasm.us/pub/nasm/releasebuilds/2.15.05/nasm-2.15.05.tar.xz
tar -xf nasm-2.15.05.tar.xz nasm-2.15.05/
cd nasm-2.15.05
./configure --prefix=/usr && make
sudo make install
nasm --version

2.15.05と出ればOK。失敗時のバージョンはaptでインストールされる2.14.02だったはず。

Qemu

次のようにしてコンパイルしたコードの動きを確認できる。RELEASEビルドだと全然何も出ない。

 qemu-system-aarch64 -machine virt -cpu cortex-a53 -nographic -no-reboot -bios Build/ArmVirtQemu-AARCH64/DEBUG_GCC5/FV/QEMU_EFI.fd

References