qemu-system-x86-64
ならびに qemu-system-i386
でゲストOSをセキュアブートする手順です。
- QEMUでUEFI起動するときに使うBIOS ROMであるOVMFで、セキュアブート対応になっているものをどこかから入手する。手っ取り早い方法は Fedora 33 などから抜いてくることで、例えば https://github.com/emojifreak/qemu-arm-image-builder/tree/main/OVMF-Fedora にある。Debian/Ubuntuのパッケージはダメダメで以下の手順では動かないからお勧めしない。自分でOVMFをコンパイルしなおす場合は セキュアブートできるOVMFをソースからコンパイルする を参照。
- 上記のgithubフォルダにある
OVMF_VARS.secboot.fd
はゲストごとにコピーを取って使う前提なのでコピーする。その上で以下のどちらかのようにqemuを起動する。KVMが使えるなら-enable-kvm
も付ける。
-
qemu-system-x86_64 -machine q35,smm=on -global driver=cfi.pflash01,property=secure,value=on -drive if=pflash,format=raw,unit=0,file=OVMF_CODE.secboot.fd,readonly=on -drive if=pflash,format=raw,unit=1,file=OVMF_VARS.secboot.fd
(64bitゲストOS用) -
qemu-system-i386 -machine q35,smm=on -global driver=cfi.pflash01,property=secure,value=on -drive if=pflash,format=raw,unit=0,file=OVMF32_CODE.secboot.fd,readonly=on -drive if=pflash,format=raw,unit=1,file=OVMF32_VARS.secboot.fd
(32bitゲストOS用)
ゲストOSがLinuxならdmesg
コマンドで secure boot is enabled
とか kernel is locked down
とか表示されます。
virt-manager を用いる場合、「インストールの前に設定をカスタマイズする」↓を選び、
チップセットに「Q35」を選びます。Firmwareに何を選べば良いかはディストーションに依存して変わりますが、Fedora 33の場合OVMF_CODE.secboot.fdを選びます。2020年11月以降のDebian Bullseyeなら普通にovmfパッケージを入れてOVMF_CODE_4M.ms.fdを選べば正常にセキュアブートします。