Mac上のVMware FusionやVirtualBoxでUEFI 2.0を試す

Macばっかり使ってるとUEFI 2.0で遊ぶ機会が無く、いつまでも使い方が分からないままな訳ですが、最近のVMwareVirtualBoxならUEFI 2.0をサポートしているので仮想マシン上で取り敢えず試してみる事が可能です。

VMware Fusionの場合

なんか適当にUbuntu Server 12.10/amd64のISOでも落としてきましょう。
こやつはEFI対応機を自動検出して全自動でEFI&GPTブート環境を構築してくれます、ArchやGentooで頑張る気合のないゆるふわ諸君には最適です。

ISOをインストールディスクに指定して新しいVMを生成します。
エディタでこのVMの.vmxを開いて以下の項目を追加します:

firmware = "efi"

Mac以外の環境では、VMware Playerへ同様の設定を行う事でUEFIを試すことが出来るようです(参考)。

後はCDブートしてUbuntuをセットアップすればEFIブート環境が構築されます。
EFIシェルを立ちあげたい場合は、EFIの起動画面に入ったら素早くEscキーを押し、出てきた画面でBoot Managerを選択、続いてEFI Internal Shell (Unsupported option)を選択すると起動できます。

VirtualBoxの場合

VMware Fusionと同様にUbuntu Server 12.10のVMを新しく作りましょう。
設定→システム→マザーボードの「EFIを有効化(一部のOSのみ)」を選択するとUEFI 2.0が有効化されます。
EFIシェルを立ちあげたい場合は、EFIの起動画面に入ったら素早くEscキーを押し、出てきた画面でBoot Managerを選択、続いてEFI Internal Shellを選択すると起動できます。

二つのVMEFI設定画面はかなり似ており、EFI Internal ShellはEDK II由来の全く同じもの(但しバージョンは異なる)ですが、VMware Fusionでは問題なく動く機能がVirtualBoxでは正常に動かないのが気になりました。

具体的には、こんな感じでした:

  • UEFI NVRAM variablesへアクセス出来ない UEFI Shellからのdmpstore実行でも、Linuxのefivars経由のアクセスも失敗する
  • ifconfigなどネットワーク系の機能が使えない
  • EDK IIを用いてソースコードからビルドしたEFI Applicationの挙動がおかしい事があるように見える

UEFIを試す場合以外にもVMware Fusionの方が優れている点が多いように見えるので、OS X仮想マシンを使うならVMware Fusionを購入すると良いのではないでしょうか。

UEFI Shellの動作風景