VirtualBox

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索
Oracle VM VirtualBox
VirtualBox
VirtualBox screenshot.png
Windows 7 上の VirtualBox で Kubuntu Live CDを動かしている様子
開発元 オラクル
最新版 4.3.26[1] - 2015年3月16日(34日前) (2015-03-16[±]
対応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のある版は、個人的あるいは評価の使用に対してのみ無料であり、「VirtualBox 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 VTAMD AMD-Vかいずれかのハードウェア仮想化をサポートするCPU上で効率的かつ安全な仮想化を実現する[15]。 その一方で、これら2つの仮想化技術のいずれもサポートしていないCPUについてはソフトウェア的な仮想化を行う。 高性能なソフトウェア仮想化を実現するために、VirtualBoxはゲストコードの実行時分析や実行時改変を含む複雑なメカニズムを実装する。 性能上の大きな問題となるのは、最高の特権レベルであるリング0で実行されるべき特権命令のエミュレーションである。 ハードウェア仮想化を使用しない場合、ゲストコードをリング0で実行できないので代替実行手段が必要になる。 特権命令が不適切な特権レベルで実行される度に発生するトラップを捉えて対応するナイーブな対策は、性能低下が著しく現実的ではない。 そこで、VirtualBoxは実行時に必要に応じてリング0で実行されるべきコード片を分析し、特権命令をエミュレーション用コードで置き換えた効率的に実行可能なコード片を用意する。 この改変済みコード片は再利用可能なので、実行時コード改変のコストは多くの状況で償却し、全体的な性能向上が実現する。

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

関連項目[編集]

脚注[編集]

  1. ^ Changelog – Oracle VM VirtualBox” (2015年3月16日). 2015年3月4日閲覧。
  2. ^ すべてのホスト向けでゲストOSとしてリストされているが、Mac OS Xがホストでない場合はライセンス違反となる。
  3. ^ VirtualBoxウェブサイトのページ "Status: Guest OSes"
  4. ^ 2007 Desktop Linux Survey results revealed”. 2008年7月28日閲覧。
  5. ^ VirtualBox_PUEL - VirtualBox
  6. ^ http://www.virtualbox.org/wiki/GPL "The VirtualBox Open Source Edition is licensed under the GPL V2."
  7. ^ Microsoft Virtual PC Additions Version History
  8. ^ Connectix Announces First Virtual Computing Solution for OS/2 User
  9. ^ “Sun Microsystems Announces Agreement to Acquire innotek, Expanding Sun xVM Reach to the Developer Desktop” (プレスリリース), Sun Microsystems, (2008年2月12日), http://www.sun.com/aboutsun/pr/2008-02/sunflash.20080212.1.xml 2008年2月12日閲覧。 
  10. ^ Ecommerce Article about the acquisition by Sun, 13 February 2008
  11. ^ Sun Welcomes Innotek”. Sun Microsystems, Inc.. 2008年2月26日閲覧。 “On February 20 Sun completed the acquisition of innotek”
  12. ^ VirtualBox license page
  13. ^ "Editions" page on VirtualBox website
  14. ^ "Developer FAQ" page on VirtualBox website
  15. ^ "Technical Background" page on VirtualBox website

外部リンク[編集]