QEMU の為の UEFI ファームウェアのビルド手順

概要

仮想環境 KVM 上の VM で UEFI を利用したい場合は OSS の仮想マシン用 UEFI ファームウェア OVMF.fd を使用する。

Webで公開されている OVMF.fd は 2014/02/10 の物で大変古い上にファームウェアと NVRAM が分離していない為に不便である。

ファームウェアの OVMF_CODE.fd と NVRAM の OVMF_VARS.fd に分離可能な最新版を使う為に GitHub の edk2 プロジェクトの最新版のソース を clone してビルドする。

下記は Gentoo Linux の環境を使った手順である。

環境構築

gcc をアップデート、その他必要なパッケージを導入する。

emerge -uvt sys-devel/gcc
gcc-config -l

emerge -avt dev-lang/nasm
emerge -avt sys-power/iasl

# Git のインストール
emerge -avt dev-vcs/git

# python の USEフラグに sqlite が必要なので適宜リビルドする
USE=sqlite emerge -avt python

ソースの入手

Github よりソースを clone する

git clone https://github.com/tianocore/edk2.git

# 2回目以降は clone せずに pull する
git clean -fxd
git pull

edk2 の環境設定

OVMF をビルドする為の設定を実施する

cd edk2
make -C BaseTools
source edksetup.sh

target.txt を書き換える

vim Conf/target.txt

    ACTIVE_PLATFORM       = OvmfPkg/OvmfPkgX64.dsc

    # gcc の表記はバージョンに合わせる
    TOOL_CHAIN_TAG        = GCC49

    TARGET_ARCH              = X64

ソースのビルド

build コマンドを打ちソースをビルドする

build

# 成功した場合の表示例
#    - Done -
#    Build end time: 20:30:02, Sep.03 2016
#    Build total time: 00:01:45


# オプションを付けてビルドする事も可能
build -a X64 -p OvmfPkg/OvmfPkgX64.dsc

ビルドされたバイナリの場所

edk2/Build/OvmfX64/DEBUG_GCC49/FV/OVMF_CODE.fd
edk2/Build/OvmfX64/DEBUG_GCC49/FV/OVMF_VARS.fd