2020/4/26(日)時点での EDK II と QEMU の HEAD をビルドして使ってみた時のメモです。
作業環境
- Windows 10
- Oracle VM VirtualBox 6.1.6 (仮想ストレージ 20 GB 以上)
Downloads – Oracle VM VirtualBox
https://www.virtualbox.org/wiki/Downloads - Ubuntu Desktop 20.04 LTS
Download Ubuntu Desktop | Download | Ubuntu
https://www.ubuntu.com/download/desktop
準備作業
- 事前にインストールした初期状態の Ubuntu Desktop の仮想マシンをクローンする。
- クローンした新しい Ubuntu Desktop の仮想マシンを起動し、Terminal から以下のコマンドを投入する。ビルドエラーになった場合に、「apt-file search ファイル名」でパッケージを探せるようにするため。
$ sudo apt-get install -fy apt-file
$ sudo apt-file update
EDK2 の OvmfPkg をビルドする
- Terminal から以下のコマンドを投入する。同じ版を試したい場合は、git checkout すること。
$ sudo apt-get install -fy build-essential uuid-dev nasm iasl git python3-distutils
$ git clone https://github.com/tianocore/edk2/
$ cd edk2
$ git show -s --format=%H
0f1946b6626e263c7f764c21cc241cc9faf8a1ae
$ git submodule update --init
$ make -C BaseTools
$ . ./edksetup.sh
$ build -a X64 -t GCC49 -p OvmfPkg/OvmfPkgX64.dsc
$ cp -p Build/OvmfX64/DEBUG_GCC49/FV/OVMF_*.fd ~
$ cd ..
QEMU をビルドする
- Terminal から以下のコマンドを投入する。同じ版を試したい場合は、git checkout すること。
$ sudo apt-get install -fy zlib1g-dev libglib2.0 libpixman-1-dev libfdt-dev gvncviewer
$ git clone git://git.qemu-project.org/qemu.git
$ cd qemu
$ git show -s --format=%H
ee573f5326046223b6eef4ae7fbfec31d274e093
$ ./configure --target-list=x86_64-softmmu
$ make -j2
$ sudo make install
$ qemu-system-x86_64 --version
QEMU emulator version 4.2.94 (v5.0.0-rc4-dirty)
Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
$ cd ..
シェルスクリプトを準備する
- ホームディレクトリに以下のシェルスクリプトを作成する。ホームディレクトリに作業用の tmp_efi ディレクトリを作成するので注意すること。
efi_exec.sh
#!/bin/bash
IS_DBG=${1:-0}
mkdir -p $HOME/tmp_efi
if test $IS_DBG -eq 1
then
DBG="-gdb tcp::10000 -S"
else
DBG=""
fi
qemu-system-x86_64 \
-machine pc \
-net none -nographic -vnc :0 \
-drive if=pflash,readonly,file=OVMF_CODE.fd,format=raw \
-drive if=pflash,file=OVMF_VARS.fd,format=raw \
-drive format=raw,file=fat:rw:$HOME/tmp_efi \
-debugcon file:$HOME/tmp_efi/ovmf.log \
-global isa-debugcon.iobase=0x402 $DBG
VNC で EFI Shell を使ってみる
- Terminal を起動し、以下のコマンドを投入する。
$ ./efi_exec.sh
- EFI Shell が起動するので使ってみる。