Ubuntu Weekly Recipe

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

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

GNOME Boxesを使ってインストールする

GNOME BoxesはGUIからお手軽に仮想マシンを作成・管理するGTK+3製のツールです。バックエンドにQEMU/libvirtを使っているため,一般ユーザー向けのvirt-managerだと思えばよいでしょう※7⁠。GNOME Boxes自体は,UEFIファームウェアへの変更に対応していません。ただしバックエンドがvirt-managerと同じQEMU/libvirtであることからもわかるように,単に設定UIがないだけで,UEFIファームウェアを使った起動ができないわけではありません。そこで,最後の例としてGNOME BoxesでUEFI対応仮想マシンを作る例を紹介します。

次のような手順でGNOME Boxesにおける,UEFIファームウェア対応のイメージを作成できます※8⁠。

※7
virt-managerやVirtualBoxに比べると機能はかなり足りません。最近のGNOMEアプリケーションと同様に,あえて見た目や設定画面を極力シンプルに保つような実装になっています。ただVirtualBox自体を簡易な仮想マシン作成ツールとしてしか使っていない人であれば,⁠Oracleとは関係ないVirtualBox」ぐらいのイメージでもいいかもしれません。
※8
virt-managerを併用しているのであれば,一旦virt-managerで作成して,仮想マシンイメージをコピーしたほうが簡単です。

図9 新規ボタンでイメージを作成

画像

図10 起動画面になったら一度「強制終了」

画像

ここまでで仮想マシンの設定ファイルやイメージの雛形ができあがった状態になります。以降はホストの端末から,virshコマンドを使って操作します。まずは作成済みの仮想マシンのリストを表示しましょう。GNOME Boxesはセッションハイパーバイザーに仮想マシンを作成するので,virshコマンドには常に-c qemu:///sessionを渡します。

$ virsh -c qemu:///session list --all
 Id    名前                         状態
----------------------------------------------------
 -     boxes-unknown                  シャットオフ

仮想マシン名(ドメイン名)boxes-unknownであることがわかります。そこで,このドメイン用のNVRAMファイルを用意した上で,設定XMLファイルを編集しましょう。

$ cp /usr/share/OVMF/OVMF_VARS.fd /home/shibata/.config/libvirt/qemu/nvram/boxes-uknown_VARS.fd
$ virsh -c qemu:///session edit boxes-unknown

ファイルのコピー先は各自の環境にあわせてください。ディレクトリがなかったら作成します。またファイル名はドメイン名にあわせておくと良いでしょう。ファイルの先頭のほうにあるosタグの中身を次のように変更します。

  <os>
    <type arch="x86_64" machine="pc-i440fx-wily">hvm</type>
    <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
    <nvram>/home/shibata/.config/libvirt/qemu/nvram/boxes-uknown_VARS.fd</nvram>
    <boot dev="hd"/>
  </os>

追加したのはloaderタグとnvramタグの二つです。まずコード領域をloaderタグで指定します。こちらは読み込み専用なので,readonlyフラグもつけています。NVRAM領域のファイルを指定するのがnvramタグです。属性については/usr/share/libvirt/schemas/domaincommon.rngにも記載があります。

あとはこのファイルを保存した上で起動すれば,UEFIモードで起動するはずです。ちなみにこれらのXMLファイルは~/.config/libvirt/qemu/以下に保存されています。

著者プロフィール

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

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