VirtualBox

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Oracle VM VirtualBox
VirtualBox
VirtualBox screenshot.png
Windows 7 上の VirtualBox で Kubuntu Live CDを動かしている様子
開発元 オラクル
最新版 4.3.14[1] - 2014年07月15日(6日前) (2014-07-15[±]
対応OS クロスプラットフォーム
種別 仮想機械
ライセンス プロプライエタリ(3.xまで) / GNU General Public License
公式サイト www.virtualbox.org
テンプレートを表示

Oracle VM VirtualBox (オラクル ブイエム バーチャルボックス)とは、x86仮想化ソフトウェア・パッケージの一つ。現在の開発は米国オラクルが行っている。

概要[編集]

既存のオペレーティング・システム(ホストOS)上にアプリケーションの一つとしてインストールされ、この中で追加のオペレーティング・システム(ゲストOS)を実行することができる。例えば、Windows XPホストOS として動作しているマシン上で、Linuxをゲストとすることができる。あるいは、Solarisが実行されているマシン上で、Windows VistaをゲストOSとして実行することが出来る。

サポートされるホストOSはLinuxMac OS XWindows、そしてSolaris。また後述するようにソースコードが配布されているため、他のUnix系のOSでも導入できる。例えばFreeBSDではportsで導入することができる。

ゲストOSとしてサポートされるのは、FreeBSD、Linux、OpenBSDOS/2 Warp、Windows、Mac OS X Server[2]、Solarisなど多岐にわたる[3]が、x86/x64アーキテクチャのOSであれば基本的には動作する。

DesktopLinux.com の2007の調査によると、VirtualBoxは、Linuxデスクトップ上でWindowsプログラム群を走らせる三番目に人気のあるソフトウェア・パッケージであった[4]

歴史[編集]

当初はプロプライエタリ・ソフトウェア・ライセンスで提供され、製品VirtualBoxのある版は、個人的あるいは評価の使用に対してのみ無料であり、「VirtulBox Personal Use and Evaluation Licence (PUEL)」が適用された。[5] 2007年1月、数年の開発の後、VirtualBox OSE(Open Source Edition)がフリーソフトウェアとして、商用と個人的な使用のためにリリースされ、GNU General Public License (GPL), version 2が適用された[6]

VirtualBoxの開発元であったinnotekは、Connectixの仮想化製品(後にマイクロソフトにより買収)に対して、OS/2Linuxの仮想化のサポートの開発[7]や、OS/2への移植[8] にも貢献した。特に、innotekはMicrosoft Virtual PCMicrosoft Virtual Serverの両方に含まれる「付加」コードを開発し、これはホスト・ゲスト間の相互作用を大いに進歩させた。OS/2は拡張されたリングプロテクションが複雑であり、仮想化で実行するのは困難だった。

2008年2月にInnotekはサン・マイクロシステムズにより買収され[9][10][11]、これに伴ってバージョン1.6より製品表記がSun xVM VirtualBoxに改められた。

その後、2010年1月にサンもオラクルに買収された。これに伴ってバージョン3.20より権利表記の変更が再び行われ、また製品表記がOracle VM VirtualBoxに改められ、現在に至っている。

配布形態の変遷[編集]

現在のVirtualBoxはGNU General Public License (GPL) Version2でライセンスされる完全なオープンソースソフトウェア(OSS)であるが、3.x以前ではプロプライエタリ版とOSS版の2つの配布形態があった。

プロプライエタリ版はバイナリのみの配布で、個人や教育あるいは評価目的の製品の利用は無料であった[12]。商業目的のためのライセンスはサン及びオラクルから購入することができた。

OSS版はVirtualBox Open Source Edition (OSE) - オープンソース版と呼ばれ、GNU GPLの元に公開されているフリーソフトウェアであった。4.x以降はこちらがベースとなっている。プロプライエタリ版と比較すると、特許等の都合でソースが非公開となっている機能が欠けていた[13]

バージョン4.0よりOSS版にプラグイン機能が搭載され、機能の追加が可能となった。これに伴い、オラクルにより提供されていた上記二つの版は統合され、本体をオープンソースで、追加機能をプラグイン(ライセンスは提供元の都合でプロプライエタリでもオープンソースでも良い)として提供する形態となった。3.x以前でプロプライエタリ版のみに含まれていた機能はオラクルから「Oracle VM VirtualBox Extension Pack」として提供されている(詳細は後述)。

機能[編集]

VirtualBox Webコンソール

Virtualbox本体により提供される基本機能は次の通り。

  • スナップショット
  • シームレス・モード
  • クリップボード
  • 共有フォルダ
  • シリアルデバイスと、システム間の切替えを支援するユーティリティ
  • コマンドラインからの操作(GUIに追加)
    • GUIでサポートされていない機能が一部ある。
  • リモート・ディスプレイ(ヘッドレス:モニターのないホストマシンの場合に有用)

3Dアクセラレーションはバージョン2.0で追加され、3.0で実験的にDirectX9のサポートがなされている。ただし、現状では32ビットのWindows XP及びVistaゲスト環境に限定されており、64ビット環境ではサポートされない(Windows 7の64bit版から起動した場合はWindows XPのゲスト環境でDirectX9が一応動作する)。また、4.0系まではWindowsゲスト環境におけるビデオドライバがWDDMのものではないため、Windows Vista以降のDesktop Window Managerによるデスクトップコンポジション機能やAeroテーマを動作させることはできなかったが、4.1系から実験的にWDDMドライバサポートが開始されている。

エミュレートされる環境[編集]

複数のゲストOSを管理・起動することができ、同時に起動することもできる。それぞれのゲストOSは、独立して開始、稼働の一時停止、起動したままの状態を保っての保存と復帰(後述のGuest Additionsを入れないと時間同期の問題が生じる場合がある)、終了することができる。

複数のオペレーティング・システムを同時に走らせる場合、使用可能なメモリ量が重要な要素となる。理論上の割り当て限界はホストOS側のメモリ容量までとなるが、実際はシステムやホストOS側で動作しているアプリもあるので、そのぶんを計算して割り当てる必要がある。割り当て論理CPUコア数やメモリ割り当て容量は仮想マシン停止中であれば容易に調整可能である。

※ただしWindowsXPの場合、OSインストール後はCPUコア数は通常の方法では変更できないので、OSインストール時にあらかじめCPUコア数を設定してインストールを行うのが最も簡単な方法である。(因にインストール後の変更には適切なドライバのインストールやboot.iniの編集などいくらかの手間のかかる方法で行う必要がある。)

ハードウェア・エミュレーション[編集]

VirtualBoxは、ハードウェアによる仮想化支援機能として、VT-xインテル)と、AMD-VAMD)への対応を含む。対応当初はデフォルトでどちらも有効となっていなかったが[14]、現在のバージョンで提供される機能の一部(x86_64対応、マルチコア対応)には、これらの仮想化支援機能を必要とするものがある。

ハードディスク[編集]

ハードディスクドライブは、通常「仮想ディスク・イメージ (Virtual Disk Images)」と呼ばれる他の仮想化ソリューションとは互換性のない特別なコンテナ・フォーマットとしてエミュレートされる。これらは、ホストOS上のシステムファイル(拡張子 .vdi)として格納される。別の方法として、VirtualBoxはiSCSIの対象との接続が可能で、それらを仮想ハードディスク群として使用することが出来る。

この他、他の仮想マシンソフトウェアで用いられる、vmdk形式 (VMware)、vhd形式 (Microsoft Virtual PC)、hdd形式 (Parallels) などの仮想ディスクイメージにも対応する。但し、これらディスクイメージは本来VirtualBox向けのフォーマットではない為、フォーマットのバージョンとVirtualBoxのバージョンの対応など、利用に当たっては互換性の面における注意が必要であるが、有志によりコンバートユーティリティがいくつか開発されており、(当然無保証となるが)これらの仮想ディスク形式において相互変換可能な環境がそろいつつある。

光学ドライブ[編集]

CDやDVDドライブとしてISOイメージが使用できる。例えば、LinuxディストリビューションのDVDイメージをダウンロードして、直接 VirtualBoxで使用することが出来る。その場合、ISOイメージをCD-RやDVD-RWといった物理メディアを準備する必要がない。また、物理的ディスクを仮想マシンから直接的にマウントすることも可能である。

グラフィック機能[編集]

標準で16MBのVRAMを搭載するVESAカードをグラフィック機能として提供する(VRAMの値は128MBを上限として調節可能)。ゲストOSとしてWindows、OS X、Linux あるいはSolarisを使用する場合、Guest Addtionsとして提供される追加のグラフィック・ドライバにより、描写性能の向上と機能の追加が可能である。例として、ホストOS上で仮想マシンのウインドウサイズを変更した場合、ゲストOSの解像度が動的に変更される。また、バージョン2.1以降においては、追加のグラフィック・ドライバにより、OpenGLやDirectX 9などの3D描写に対応する(停止中に3D/2Dアクセラレーションフラグを有効にする必要がある)。

ネットワーク機能[編集]

イーサネット・アダプタとして、AMD PCnet-PCI II(Am79C970A), AMD PCnet-FAST III(Am79C973), Intel PRO/1000 MT Desktop (82540EM), Intel PRO/1000 T Server (82543GC), Intel PRO/1000 MT Server (82545EM) のいずれかを仮想化する。これらの仮想化されたアダプタによる外部との接続手段として、NAT(ホストOSによるNAPT機能)、ブリッジアダプタ(ホストOSの物理インターフェースとのブリッジ機能)、内部ネットワーク(ゲストOS同士を接続する内部的なネットワーク)、ホストオンリーアダプタ(ホストOS上の仮想Ethernetアダプタと直接的に接続する)が提供される。 新規作成される仮想マシンは、いずれかのアダプタとNATの組み合わせが設定される。ゲストOS上のアプリケーションは、これによりホストOSを経由して外部との通信が可能となる。NATを提供するホストOSは、一般的なブロードバンドルータと同様の動作を行う。

オーディオ機能[編集]

オーディオ・カードとして、VirtualBoxは、Intel HDオーディオ、 ICH AC'97(デフォルト)、SoundBlaster 16カードのいずれかを仮想化する(但し、Intel HDオーディオは、対応するゲストOSに制限がある)。

追加の機能[編集]

バージョン4.0より、Extension Packageと呼ばれる機能拡張プラグインが導入された。これは、4.0よりVirtualBox本体がGPLライセンスとなったために、プロプライエタリ・ソフトウェアによる機能を標準で実装することができなくなったために設けられたものである。

Oracleから「Oracle VM VirtualBox Extension Pack」と呼ばれる機能拡張プラグインを配布しており、これにより以下の機能が提供される。

  • USB 2.0 コントローラ (EHCI)
  • Remote Desktop Protocol(RDP)による遠隔制御機能 (マイクロソフト及びシトリクスにより開発された、プロプライエタリな遠隔制御プロトコル。つまりWindowsのリモートデスクトップクライアントやrdesktopソフトウェアから接続することが可能)
  • IntelカードによるPXEブート機能
  • シームレスモード (ホストOSとゲストOSのデスクトップの操作を統合する機能)

phpVirtualBox[編集]

phpVirtualBoxとは、VirtualBoxをWebブラウザで操作するためのウェブサービスソフトウェア。その名のとおりサーバサイトはPHPで記述されている他、インターフェースまわりにAjaxが用いられている。動作にはPHP動作をサポートするWebサーバ、PHP、VirtualBoxが必要。GUIでできることはほぼすべてできるようになっている。

技術解説[編集]

VirtualBoxは、出来るだけ多くのコードをネーティブに(ホストのプロセッサ上で直接)走らせようとする。これは、ユーザモードのコードについても働く。これはゲストのIntel ringアーキテクチャ:リング3で走っている。しかしながら、ゲストのリング0のコード、これは通常多くの特権命令を含み、割り込みを受けなければならない。VirtualBoxは、比較的斬新なアプローチによりこの矛盾を解決した。それは、ゲスト・オペレーティング・システムを騙し、そのリング0のコードが実際にはリング1で実行される。リング1は通常インテル・アーキテクチャ上で動作するOSでは使用されていない。

もし、問題が起きたら、VirtualBoxは、組込みの動的再コンパイラーで、他の仮想化プログラムがするように行う。VirtualBoxの再コンパイラーはフリーでオープンソースのQEMUをベースにしている。追加として、VirtualBoxは自動的に逆アセンブルし、多くの状況では、ゲストのコードが将来再コンパイルされるのを避ける。繰り返される再コンパイルは比較的高価に付く。[15] 結果的に、ゲストのリング3とリング0のコードをほとんどの場合、ネイティブに実行することが出来る。そして、この「伝統的な」再コンパイルと実際のコードへのパッチ当ての組合せによりVirtualBoxは、VMwareと比較できるような効率を手に入れている。[16]

VirtualBoxはまた、より良い効率とさらなる安全性のためにIntel VTAMD AMD-Vのハードウェアの協力による仮想化をサポートする。[17]

Mac OS X版では、ネットワーク・ブリッジ(ホストインターフェース)がサポートされていなかったが、バージョン2.0でサポートされた。

関連項目[編集]

脚注[編集]

外部リンク[編集]