VirtualBox 2.2:Linux版はお勧めだが、Windows版はバグだらけ

 Sun Microsystemsは4月8日(米国時間)、オープンソースの仮想化ソフトウェアの最新版「VirtualBox 2.2」をリリースした。仮想マシン標準仕様の「OVF(Open Virtualization Format)」をサポートしたことが新版の特徴だが、それ以外にも改良された部分はいろいろある。その新機能を試すべくLinuxホストとWindowsホストにインストールしてみたのだが、両者の間には完成度に大きな開きがあった。結論から言うと、Linux版はアップグレードの価値があるが、Windows版の既存ユーザーは次のバージョンが出るまで導入を見合わせた方がよい。

VirtualBox 2.2の改良点

 最初にVirtualBox 2.2で加えられた変更点について概観しておこう。主な改良点としては以下のようなものがある。

  • 仮想マシン標準フォーマットのOVFをサポート
  • ハイパーバイザーの最適化による高速化
  • OpenGLによるLinux/Solarisゲストでの3Dアクセラレーション
  • ホストOSでSnow Leopard(次期Mac OS X)をサポート
  • 64ビットゲストの最大メモリサイズが16GBに
  • 新しいホストインタフェースネットワークモード

 このほか細かな変更としては、仮想マシンのオーディオコントローラやUSBコントローラがデフォルトで有効に設定されるようになった。また、CPUの仮想化支援機能のIntel-VT/AMD-Vも、それらが利用できる環境ではデフォルトで有効になる。

 なお、VirtualBoxのWindows、Mac OS X、各種Linux、Solaris/OpenSolaris用のバイナリパッケージやソースコードは、コミュニティサイト「VirtualBox.org」とSunのサイトのどちらからでもダウンロードできる。どちらのパッケージも中身は一緒だ。

●VirtualBox.orgのダウンロードページ
http://www.virtualbox.org/wiki/Downloads

●SunのVirtualBoxダウンロードページ
http://dlc.sun.com/virtualbox/vboxdownload.html

Linux版を試す

 まずはUbuntu 8.04 LTS(32ビット)をホストに、Linux版を試してみた。インストールは以下のようにdpkgコマンドを実行するが、依存関係のエラーで設定がストップする(中途半端な状態になる)。

$ sudo dpkg -i virtualbox-2.2_2.2.0-45846_Ubuntu_hardy_i386.deb
未選択パッケージ virtualbox-2.2 を選択しています。
(データベースを読み込んでいます ... 現在 98102 個のファイルとディレクトリがインストールされています。)
(virtualbox-2.2_2.2.0-45846_Ubuntu_hardy_i386.deb から) virtualbox-2.2 を展開しています...
dpkg: 依存関係の問題により virtualbox-2.2 の設定ができません:
 virtualbox-2.2 は以下に依存 (depends) します: libqt4-core (>= 4.3.4) ...しかし:
  パッケージ libqt4-core はまだインストールされていません。
 virtualbox-2.2 は以下に依存 (depends) します: libqt4-gui (>= 4.3.4) ...しかし:
  パッケージ libqt4-gui はまだインストールされていません。
dpkg: virtualbox-2.2 の処理中にエラーが発生しました (--install):
 依存関係の問題 - 設定を見送ります
以下のパッケージの処理中にエラーが発生しました:
 virtualbox-2.2

 そこで次のコマンドで必要なパッケージをインストールする(libaudio2はlibqt4-guiの依存パッケージ)。

$ sudo apt-get install libqt4-core libqt4-gui libaudio2

 必要なパッケージがインストールされると、VirtualBoxの設定が自動的に再開され、「vboxusersグループを作成する」旨のメッセージが表示されるのでEnterキーを入力すればよい。

 VirtualBoxを起動するには、端末エミュレータ上で「VirtualBox」コマンドを実行するか、メニューの「アプリケーション」→「システムツール」→「Sun VirtualBox」を選択する。

 仮想マシンを作成するには「新規」ボタンをクリックして「新規仮想マシン作成ウィザード」を開き、指示に従って設定していけばよい(図1)。ウィザードはデフォルトでディスクイメージを新規作成するようになったが、それ以外は従来とほとんど変わらない。ウィザードでは仮想マシンの名前、メモリ容量、ディスクイメージの設定しか行えないので、たとえばビデオメモリを変更したい場合などは仮想マシン作成後に「設定」ウィンドウを開いて変更する必要がある。もっとも、オーディオコントローラやUSBコントローラがデフォルトで有効になったので、よく初心者が戸惑う「仮想マシンの音が出ない」といったトラブルはかなり減ることだろう。

vbox1_thumb.png
図1:新規仮想マシン作成ウィザード

 Linux版では、ゲストOSとしてWindows XPとWindows Vista、Ubuntu 8.10をインストールしてみたが、どれも問題なくインストールすることができた(図2)。後述する「Guest Additions」をインストールすることで、いずれのゲストでもマウス統合機能(ホスト/ゲスト間のフォーカスの移動をマウスの移動だけで実現する機能)が利用できている。

vbox2_thumb.png
図2:Linux版VirtualBoxで動作するLinuxゲスト(Ubuntu 8.10)とWindowsゲスト(XPとVista)

Linux版のブリッジ接続が簡単に

 VirutualBox 2.2はゲストのネットワーク接続方式として以下のモードをサポートしている。

  • 未割り当て:ネットワークを利用しないモード
  • NAT(デフォルト):ホストがNATルータとして機能するモード
  • ブリッジネットワーク:ゲストがホストと同じネットワークに接続するモード
  • 内部ネットワーク:仮想的なLAN内でゲスト間の通信が行えるモード
  • ホストオンリーネットワーク:仮想的なLAN内でゲスト間、ゲスト/ホスト間の通信が行えるモード

 このうち、内部ネットワークとホストオンリーネットワークはネットワークの構築テストなどに適したモードで、ゲストから外部のホストには接続できない。たとえば、DHCPサーバやWindowsネットワークのドメインコントローラなどを考えなしに実機でテストしようとするとネットワークが混乱して周囲に迷惑をかけることになるが、VirtualBoxの内部ネットワークに接続した仮想マシンなら安全にテストが行える。

 ゲストから外部ホストに接続できるのは、NATとブリッジネットワークの2つで、ゲストを単純なデスクトップ用途で利用する場合はデフォルトのNATで不都合はない。一方、外部からゲストに接続したい場合、たとえばゲストにSSH経由でログインしたり、ゲストの共有フォルダをリモートからマウントしたりしたい場合はブリッジネットワークを利用することになる。単に限られたポートだけアクセスできればよい場合は、NATでポートフォワードを設定するという手もあるが、ブリッジネットワークのほうが簡単だ。

 ただし、バージョン2.1以前のLinux版VirtualBoxでブリッジネットワークを利用するには、bridge-utilなどをインストールしてコマンドを実行し、手動でネットワーク設定ファイルを書き換えてブリッジインタフェースを用意するなど、いささか面倒な作業が必要だった。

 これがVirtualBox 2.2では、仮想マシンのネットワーク設定画面で「割り当て」に「ブリッジネットワーク」を選ぶだけで、ブリッジネットワークが利用できるようになった(図3)。ブリッジインタフェースを用意する必要はなく、ホストのネットワークインタフェース(通常はeth0)がブリッジインタフェースの代わりに使われる。これは、netfilterドライバによってホストとゲストへのパケットを振り分けることで実現されている。

vbox3_thumb.png
図3:仮想マシンのネットワーク設定。「ブリッジネットワーク」を選んで詳細を表示するとブリッジインタフェースとして「eth0」が割り当てられていることがわかる

 Linuxホスト上のLinux/Windowsゲストの双方でNATとブリッジネットワークを試したところ、どちらも正常にネットワークに接続することができた。

Guest Additionsと3Dアクセラレーション

 VirtualBox 2.2では、OpenGLによる3Dアクセラレーション機能がLinux/Solarisゲストで利用可能になった。これを利用するには、仮想マシンの設定「一般」で「3Dアクセラレーションを有効化」をチェックする(図4)。同時にビデオメモリの割り当ても増やしておいたほうがよいだろう。そのうえでゲストに「Guest Additions」をインストールする。Guest AdditionsはVMware製品における「VMware tools」に相当するもので、仮想グラフィックスドライバなどが含まれている。ちなみに、3Dアクセラレーションを利用しない場合も、Ubuntuゲストで800×600以上の画面解像度を利用するにはGuest Additionsが必要になる。

vbox4_thumb.png
図4:仮想マシンの一般設定で「3Dアクセラレーションを有効化」をチェック

 Guest Additionsをインストールするには、仮想マシンのCD/DVDドライブが空の状態で「デバイス」メニューから「Guest Additionsのインストール」を選択する。するとGuest AdditionsのISOイメージがマウントされて、ソフトウェアの自動実行を確認するダイアログが表示されるので「実行する」をクリックする(図5)。インストール後にゲストを再起動すれば、Guest Additionsが有効になる。

vbox5_thumb.png
図5:Guest Additionsのインストール。「実行する」をクリックし、次に表示されるダイアログでパスワードを入力する

vbox6_thumb.png
図6:「ハードウェア・ドライバ」に表示されたGuest Additionsのドライバ

 ただし、筆者がUbuntuゲストにGuest Additionsをインストールしたところ、マウスポインタが消えたほか、仮想グラフィックスドライバが正常にインストールされないという問題に遭遇した。この問題はGuest Additionsをインストールし直すことで解消したが、こいうこともあるのであわてないようにしたい。正常にインストールできていれば、ゲストの再起動時に画面解像度が自動的にリサイズされ、Ubuntuであれば「システム」メニューの「システム管理」→「ハードウェア・ドライバ」で開く画面にGuest Additionsのドライバが表示される(図6)。なお、WindowsゲストではGuest Additionsをトラブルフリーでインストールすることができた。

 さて、Guest Additionsをインストールすると自動的にマウス統合機能が有効になり、ゲスト/ホスト間の移動をマウスの移動だけで行えるようになる。また、Linuxゲストでは、OpenGLを使ったアプリケーションが動作可能になり、Compizによるデスクトップ視覚効果も利用可能になる(図7)。Ubuntuで視覚効果を有効にするには、「システム」メニューの「設定」→「外観の設定」を選択し「視覚効果」タブで「通常効果」か「追加効果」を選べばよい。より細かく視覚効果を設定したければ、「CompizConfig設定マネージャ」(conpiz-config-setting-manager)をインストールするとよいだろう。

vbox7_thumb.png
図7:OpenGLアプリケーション(glxgears)と視覚効果(ウィンドウの変形)

OVFによる仮想アプライアンスのインポート/エクスポート

 VirtualBox 2.2の最大の目玉となるOVFは、DMTF(Distributed Management Task Force)」という団体によって策定された仮想マシンの標準フォーマットだ。ただし、OVF仕様が出来たばかり(2009年3月リリース)ということもあり、現在OVFを直接サポートしている仮想化ソフトウェアはVirtualBox 2.2だけである(VMwareは「VMware OVF Tool」、Citrixは「Kensho OVF Tool」といった外部ツールでOVFに対応している)。このOVFは異なる仮想化ソフトウェア間で仮想マシンを移動させる際にも使えるが、主たる目的は「仮想アプライアンス」の普及にある。これまでも仮想化ソフトウェアで動作する仮想アプライアンスは存在したが、OVFが定着すれば仮想アプライアンスを提供する側も導入する側も仮想化ソフトウェアの種類を気にする必要がなくなる。

 さて、VirtualBox 2.2の「ファイル」メニューには、「仮想アプライアンスのインポート」と「仮想アプライアンスのエクスポート」という2つの項目が追加されている。メニューから「仮想アプライアンスのエクスポート」を選ぶとウィザードが起動するので、エクスポートする仮想マシンを選択して、仮想アプライアンスに付与する情報(提供元やライセンス形態など)を設定し、出力先を指定すればよい(図8)。なお、起動中の仮想マシンはエクスポートできない。エクスポートが完了すると拡張子「.ovf」の仮想マシン設定ファイルと拡張子「.vmdk」のディスクイメージが指定した場所に生成される。逆にインポートする場合は設定ファイルとディスクイメージを同じディレクトリに置いた状態でメニューから「仮想アプライアンスのインポート」を選び、ウィザードで設定ファイルを指定して「インポート」をクリックすればよい。

vbox8_thumb.png
図8:仮想アプライアンスのエクスポート

 ちなみに、付属マニュアル(英文)の「13 Known issues」に記載されているように、VirtualBoxのOVFサポートは完全な状態ではない。Intel-VT/AMD-Vや3Dアクセラレーションなどいくつかの設定はエクスポートされず、OVF標準で既定されているOVAフォーマット(設定ファイルとディスクイメージをtarアーカイブ化した形式)もサポートされていない。異なるマシンのVirtualBox間で仮想マシンを移動するのであれば、OVF形式を利用するよりもVirtuaBoxネイティブの設定ファイル(.xmlファイル)とディスクイメージ(.vdiファイル)をコピーするほうが無難だ。

Windows版の問題点

 Guest Additionsのインストール時にちょっとしたトラブルはあったものの、Linux版のVirtualBox 2.2はほぼ正常に動作した。では、Windows版はどうだろう。Windows XP SP3をホストOSとして試してみたが、筆者は以下のような問題に遭遇した。

  • ホストキー(ゲストからホストへ制御を移すキー、デフォルトは右Ctrl)が変更できない
  • NAT接続ができず、NATの詳細ダイアログも表示できない(図9
  • ブリッジネットワークドライバが正常にインストールされれず、ブリッジネットワークが利用できない(ホストの起動時に毎回「新しいハードウェアの検出ウィザード」が起動する)
  • ホストオンリーネットワークインタフェースが「接続は限られているか利用不可能です」というアラートを出す(図10

vbox9_thumb.png
図9:「割り当て」でNATを指定していてもドライバボタンをクリックすると別の接続方式の詳細ダイアログが表示されてしまう vbox10.png 図10:ホストオンリーネットワークインタフェースのアラート

 ホストキーの問題は「Happy Hacking Keyboard」のように右Ctrlがないキーボードのユーザーには困った問題だが、Ctrl+Alt+Delでゲストからホストに戻ることができ、Guest Additionsをインストールすればホストキーを使わずにゲストとホストを行き来できるのでそれほど深刻ではない。だが、ネットワーク周りの問題は重大だ。ホストオンリーネットワークのアラートは、この接続方式が外部への接続を許可していないことを考えればこれで正常なのかもしれないが気分の良いものではない。

 2ちゃんねるのVirtualBoxスレッドには、修復インストール(VirtualBoxがインストールされた状態でインストーラを実行し、「Repair」ボタンをクリック)でネットワーク周りのトラブルが解消するという情報があり、実際、修復インストールと再インストールを5~6回繰り返してなんとかNATとブリッジ接続が可能になったが、不審な点は残った。たとえば、NATの詳細ダイアログはあいかわらず表示できず、ブリッジインタフェースはインストールされなかった(デバイスマネージャに表示されない)。そのため、ブリッジネットワークはホストインタフェースを介してのみ行えるという状態になった。さらに、NAT接続でネットワークを利用すると仮想マシンがフリーズするという現象にも遭遇した。フリーズに遭遇したのは1回だけなので一過性の現象かもしれないが、Windows版のVirtualBox 2.2は安心して使える状態とは言い難いというのが率直なところだ。問題を修正したバージョンが出るまで、Windowsホストでは旧版の2.1.4を利用するほうがよいだろう。