libvirt の UEFI 設定¶
概要¶
QEMU の為の UEFI ファームウェアのビルド手順 で作成した仮想マシン用の UEFI ファームウェアを libvirt の仮想マシンに設定する
下記にビルドしたとして手順を進める
edk2/Build/OvmfX64/DEBUG_GCC49/FV/OVMF_CODE.fd
edk2/Build/OvmfX64/DEBUG_GCC49/FV/OVMF_VARS.fd
ファームウェアの配置¶
ドメイン(libvirt に登録した仮想マシン)がファームウェアを読みだす為の共通のディレクトリを作成し、配置する
mkdir -p /usr/share/OVMF
cp -ip Build/OvmfX64/DEBUG_GCC49/FV/OVMF_CODE.fd Build/OvmfX64/DEBUG_GCC49/FV/OVMF_VARS.fd /usr/share/OVMF
qemu.conf の書き換え¶
QEMU の設定にファームウェアの配置場所を記載する
vim /etc/libvirtd/qemu.conf
nvram = [
"/usr/share/OVMF/OVMF_CODE.fd:/usr/share/OVMF/OVMF_VARS.fd",
]
ドメインの設定ファイルへの記述¶
ドメイン(libvirt に登録した仮想マシン)の設定ファイルを UEFI を利用するように書き換える
virsh edit [ドメイン名]
<os>
<type arch='x86_64' machine='pc-i440fx-1.5'>hvm</type>
<loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
<nvram template='/usr/share/OVMF/OVMF_VARS.fd'/>
<boot dev='hd'/>
<boot dev='cdrom'/>
</os>
# ドメインを起動し、nvram の記述が書き換わる事を確認する
virsh start [ドメイン名]
virsh edit [ドメイン名]
# 表示例
<nvram template='/usr/share/OVMF/OVMF_VARS.fd'>/var/lib/libvirt/qemu/nvram/vmbase_VARS.fd</nvram>
警告
ドメインをクローンする場合の注意
UEFI の起動エントリは NVRAM ファイルに書き込まれる為、ドメインのクローンを作成する場合は
[ドメイン名]_VARS.fd
もコピーし設定も書き換える必要がある。 NVRAM をコピーせずに新規のファイルを使う場合は起動エントリがない為、仮想ディスクに OS をインストールしていても起動しない事に注意する。
おまけ¶
qemu コマンドでの指定
mv OVMF.fd bios.bin
qemu-system-x86_64 -enable-kvm -net none -m 1024 -drive file=/usr/share/ovmf/x86_64/bios.bin,format=raw,if=pflash,readonly
QEMU の為の UEFI ファームウェアのビルド手順
基板覚書