2016年10月23日日曜日

仮想マシンでuEFIが使えるようにしよう

これまでで、自由に仮想マシンを作ってゲストOSを導入、ネットワークを利用することが出来るようになった。

ただ、これらの仮想マシンは、ファームウェアとしては旧来のBIOS形式だけだ。
仮想マシン上でuEFIを利用することは出来ないだろうか?
利用出来る。ただし、現時点ではホストOS(aquarius)で、KVM用のuEFIファームウェアが用意されていないので、今のaquariusでは利用することが出来ない。

今回は、uEFIのファームウェアをインストールして、新規仮想マシンでuEFIを指定することが出来るようにする、というのが目的だ。
まぁ、仮想マシンでuEFIを利用するのに、どの程度のメリットがあるのか?という点も気にはなるが。
まだ出来るかどうか分からないが、ディスクレスクライアントに相当する環境を作ることが出来るのではないか?とちょっと期待している。

まぁ、難しいことは抜きにして、uEFI環境を作ってみよう。

まずは、どのパッケージがKVM-uEFI環境を作るのに必要か確認だ。
(aquarius) $ sudo apt-get update
(aquarius) $ apt-cache search uefi
たくさん出てくるが、それらしいパッケージ名は以下の2つだろう。
  • ovmf - UEFI firmware for virtual machines
  • qemu-efi - UEFI firmware for virtual machines
さて、じゃあどちらを使うべきか?

それぞれのパッケージの詳細を見てみよう。
(aquarius) $ apt-cache show ovmf
(aquarius) $ apt-cache show qemu-efi
どちらも、メンテナは同じ「Ubuntu Developers」で、オリジナルソースも同じ「edk2」のようだ。
備考としては、前者は

Description-en: UEFI firmware for virtual machines
 Open Virtual Machine Firmware is a build of EDK II for virtual machines.
 It includes full support for UEFI, including Secure Boot, allowing use
 of UEFI in place of a traditional BIOS in your VM.


と書かれているのに対し、後者は

Description-en: UEFI firmware for virtual machines
 qemu-efi is a build of EDK II for virtual machines. It allows virtual machines
 to run in a UEFI environment.


だ。
前者の方が高機能に見えるのだが、インストールサイズは、前者が4130に対し、後者は133152だ。ぜんぜん違う。
どちらがいいのだろうか?

よく分からないので、まずは前者をインストールしてみよう。
(aquarius) $ sudo apt-get --simulate install ovmf
(aquarius) $ sudo apt-get install ovmf

インストールしてみたら、virt-managerから仮想マシンを作ってみよう。
内容は、virt-managerで新規仮想マシンを作ろう に従い、最後の「インストールの前に設定をカスタマイズ」にチェックを入れて、詳細確認するところの画面まで行く。
(aquarius) $ virt-manager
とりあえず、カスタマイズの画面までは同じなので、カスタマイズの画面までは飛ばす。

カスタマイズの画面、概要ページのファームウェアを見てみよう。
プルダウンで選択できそうな状態になっている。


ここで、プルダウンを選んでみよう。
今までは「BIOS」しか選べなかったが、新しく「UEFI x86_64: /usr/share/OVMF/OVMF_CODE.fd」が選べるようになった。


今回の仮想マシンは、このOVMF_CODE.fdを選んだ状態で「インストールの開始」をしてみよう。
(uEFIを確認するのが目的なので、インストール用のCDメディアは用意しなくていいぞ)


なんか失敗したように見えるが、実は仮想マシンは完成していて、起動もしているぞ。(遠隔からの操作の場合に、これが出るのかもしれない。)
とりあえず、CLOSEする。


仮想マシンの詳細設定画面からは、「インストールのキャンセル」をクリックしよう。


「インストールを中断します」のダイアログは、「Yes」でいい。


仮想マシンの一覧には、testは作成済み、実行中になっているはずだ。
testを選択した状態で、「開く」ボタンをクリックしよう。


仮想マシンのコンソールが立ち上がってきて、EFI Shellの状態になっているのが確認できるはずだ。
これは、仮想HDDにはOSが入っておらず、それ以外のブートデバイス(CD-ROM等)も存在しないため、OSのブートが出来ず、EFI Shellが起動した、という状態だ。


uEFIの起動にかかる部分を確認するために、一度電源ボタンの横の▼マークから、「強制的にリセット」を選択しよう。


警告のダイアログが出るが、特にデータもないため、恐れず「Yes」だ。


画面の流れが一瞬でキャプチャ出来ないが、uEFIが起動しようとしているのは確認できるはずだ。

またEFI Shellになってしまったが、ここでexitと実行してみよう。
EFI Shellから抜けて、ブートメニューに入るはずだ。



適当に操作して、EDK IIと呼ばれているuEFIの動きを見てみてもいい。

ある程度感触を掴んだら、電源ボタンで強制的にOffさせ、仮想マシンを削除してしまおう。


次は、もう一つのuEFIである、qemu-efi を試してみたい。
が、ちょっと長くなったので、次回にする。

0 件のコメント:

コメントを投稿