Ubuntu Weekly Recipe

第441回 QEMU/KVMでUEFIファームウェアを使う

この記事を読むのに必要な時間:およそ 5 分

UEFIシステムにUbuntuをインストールする

実際にUEFIファームウェアを有効にした仮想マシンにUbuntu 16.04 LTSをインストールしてみましょう。

ひとつ注意点として,一度BIOSモードで起動した上でインストールした仮想マシンイメージは,BIOSのファームウェアをOVMFに変更するだけでは起動できません。Ubuntuのインストーラーが,BIOSモードの時はUEFIシステムパーティションを作らず,NVRAM領域の変更も行わないためです。もしBIOSモードで作成済みの仮想マシンイメージをUEFIに移行したいのであれば,何手間かの作業が必要になりますが,今回の記事では扱いません。

QEMUコマンドを使ってインストールする

もっともプリミティブなやり方として,QEMUコマンドを直に叩いてUbuntuをインストールしてみましょう。

$ cp /usr/share/OVMF/OVMF_VARS.fd ubuntu1_OVMF_VARS.fd
$ qemu-img create -f qcow2 ubuntu1.qcow2 32G
$ qemu-system-x86_64 -m 2G -enable-kvm \
    -drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \
    -drive if=pflash,format=raw,file=ubuntu1_OVMF_VARS.fd \
    -drive if=virtio,file=ubuntu1.qcow2 \
    -cdrom ~/ダウンロード/ubuntu-16.04.1-desktop-amd64.iso

これだけです。あとはインストーラーから,普通の手順でインストールを行い,インストールが完了したらシャットダウンしてください。次回以降は,作成したイメージを指定して起動します。

$ qemu-system-x86_64 -m 2G -enable-kvm \
    -drive if=pflash,format=raw,readonly,file=/usr/share/OVMF/OVMF_CODE.fd \
    -drive if=pflash,format=raw,file=ubuntu1_OVMF_VARS.fd \
    -drive if=virtio,file=ubuntu1.qcow2

実際に起動したイメージでdmesgコマンドを実行すれば,UEFIファームウェアを使っていることがわかります※6⁠。

※6
カーネルファイル名がsignedのついた署名済みカーネルとなっていますが,OVMFの初期状態だとセキュアブートが無効化されているため,署名の検証は行われません。
$ dmesg | grep -i efi
[    0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.4.0-38-generic.efi.signed root=...
[    0.000000] efi: EFI v2.60 by EDK II

BIOSで起動した時は上記EFI関連のメッセージは表示されません。BIOS関連のメッセージとして,次の内容が表示されます。ちなみにUEFIファームウェアを使った場合も,下記のメッセージは表示されます。

$ dmesg | grep -i bios
[    0.000000] e820: BIOS-provided physical RAM map:
...
[    0.000000] DMI: QEMU Standard PC (i440FX + PIIX, 1996), BIOS Ubuntu-1.8.2-1ubuntu1 04/01/2014
...

なおGRUBの最初の画面がどうなっているかでも,UEFIかどうかを判断できます。

図5 UEFIの場合はGRUBメニュー画面になる

画像

図6 BIOSの場合はUbuntuロゴが表示される

画像

virt-managerを使ってインストールする

Ubuntu 16.04 LTSにインストールされるvirt-managerであれば,GUIからUEFIの使用を設定可能です。

$ sudo apt install virt-manager
(libvirtdグループへの参加を反映するために,一度ログインしなおす)
$ virt-manager

図7 仮想マシンの最後のステップで「インストールの前に設定をカスタマイズする」をチェック

画像

図8 概要のファームウェアでOVMFファイルを指定

画像

あとは画面の指示に従って起動&インストールしてください。OVMFのNVRAM領域は,/var/lib/libvirt/qemu/nvram/以下にドメイン名_VARS.fdという名前で保存されます。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。