Oracle VM VirtualBox(オラクル ブイエム バーチャルボックス)は、x86系およびAMD64/Intel64アーキテクチャに対応した
仮想化ソフトウェアパッケージです。元々は
ドイツのInnotek社によって開発されましたが、現在は米国のオラクル社が開発を継続しています。
概要
VirtualBoxは、既存の
オペレーティングシステム(ホストOS)上で、アプリケーションとして動作します。この中で、追加の
オペレーティングシステム(ゲストOS)を実行することができます。例えば、WindowsがホストOSとして動作しているマシン上で、
LinuxをゲストOSとして実行することが可能です。同様に、
Solarisが動作している環境でWindowsをゲストOSとして動作させることもできます。
サポートされているホストOSは、
Linux、macOS、Windows、
Solarisです。また、
ソースコードが公開されているため、他の
Unix系OSでも利用可能です。FreeBSDではportsを通してインストールできます。
ゲストOSとしてサポートされているのは、FreeBSD、
Linux、OpenBSD、OS/2 Warp、Windows、macOS Server、
Solarisなど多岐にわたります。基本的にはx86/x64アーキテクチャのOSであれば動作します。
2007年のDesktop
Linux.comの調査によると、VirtualBoxは
Linuxデスクトップ上でWindowsプログラムを実行する
ソフトウェアとして3番目に人気がありました。
歴史
当初、VirtualBoxはプロプライエタリ
ライセンスで提供され、個人利用や評価目的でのみ無料でした。この際には「VirtualBox Personal Use and Evaluation Licence (PUEL)」が適用されました。2007年1月、数年の開発を経て、VirtualBox OSE(Open Source Edition)が
GNU General Public License (GPL) version 2の下で自由
ソフトウェアとしてリリースされました。これにより、商用利用も可能になりました。
開発元のInnotekは、
コネクティクスの
仮想化製品(後に
マイクロソフトに買収)のOS/2や
Linuxサポートの開発に貢献し、Microsoft Virtual PCとMicrosoft Virtual Serverに含まれる「付加」コードを開発しました。これによりホストとゲスト間の相互作用が大幅に進歩しました。特に、OS/2の拡張リングプロテクションは
仮想化環境での実行が困難でしたが、Innotekの技術によって克服されました。
2008年2月、Innotekは
サン・マイクロシステムズに買収され、製品表記がSun xVM VirtualBoxに変更されました。その後、2010年1月にサンもオラクルに買収されたため、バージョン3.20から製品表記はOracle VM VirtualBoxとなりました。
配布形態の変遷
VirtualBoxはバージョン4.0以降、
[GNU General Public License]] (GPL) Version 2でライセンスされる完全な
オープンソース[[ソフトウェア]になりました。しかし、バージョン3.x以前はプロプライエタリ版とOSS版の2つの形態で配布されていました。
プロプライエタリ版は
バイナリのみの配布で、個人、教育、評価目的であれば無料で利用できました。商業目的の
ライセンスはサンまたはオラクルから購入する必要がありました。
OSS版はVirtualBox Open Source Edition (OSE)として公開され、GNU GPLの下で自由
ソフトウェアとして配布されていました。バージョン4.x以降はこちらがベースとなっています。プロプライエタリ版と比較すると、特許などの理由で一部機能が欠けていました。
バージョン4.0以降は
プラグイン機能が搭載され、機能追加が可能になりました。オラクルは本体をオープンソースで提供し、追加機能を
プラグインとして提供する形態を取りました。プロプライエタリ版にのみ含まれていた機能は、「Oracle VM VirtualBox Extension Pack」として提供されています。
機能
VirtualBox本体で提供される基本機能は以下の通りです。
スナップショット
シームレスモード
クリップボード共有
共有フォルダ
シリアルデバイスとシステム間の切り替えユーティリティ
コマンドラインからの操作(GUIに追加)
リモートディスプレイ(ヘッドレス環境で便利)
64ビットゲストOSのサポート
AMD-VとVT-xによるネステッドページング
3Dアクセラレーション(
32ビットWindows XPおよびVistaゲストOS)
3Dアクセラレーションはバージョン2.0で導入され、3.0でDirectX 9の実験的サポートが開始されました。ただし、現在は
32ビットWindows XP/Vistaゲスト環境に限られています。バージョン4.1以降、WDDMドライバの実験的サポートが開始され、Windows Vista以降のデスクトップコンポジション機能が利用できるようになりました。
エミュレートされる環境
複数のゲストOSを管理・起動でき、同時起動も可能です。各ゲストOSは、独立して起動、一時停止、保存と復帰(Guest Additionsがないと時間同期に問題が発生することがあります)、終了が可能です。
複数のOSを同時に実行する場合、利用可能なメモリ量が重要です。理論上の割り当て限界はホストOSのメモリ容量までですが、実際にはホストOSや他のアプリケーションの動作に必要な分を考慮して割り当てる必要があります。割り当てる論理
CPUコア数やメモリ容量は、仮想マシン停止中に調整可能です。
Windows XPと2000では、OSインストール後の
CPUコア数は通常の方法では変更できないため、インストール時に設定する必要があります。インストール後の変更には、ドライバのインストールやboot.iniの編集などが必要になります。
VirtualBoxは、
ハードウェア仮想化支援機能であるVT-x(
インテル)とAMD-V(AMD)に対応しています。初期バージョンではどちらもデフォルトで無効でしたが、現在はこれらの機能が必要なものもあります。バージョン5.0からKVMが選択可能になり、
Linux環境での
ハードウェアエミュレーションのオーバーヘッドが削減可能になりました。VirtualBoxのチップセットエミュレーションには
インテルの82441FXチップセットが用いられています。
ハードディスク
ハードディスクドライブは、「仮想ディスクイメージ (Virtual Disk Images)」としてエミュレートされます。これは、他の
仮想化ソリューションとは互換性のない特別なコンテナフォーマットです。これらのファイルは、ホストOS上のシステムファイル(拡張子 .vdi)として保存されます。また、VirtualBoxはiSCSIターゲットとの接続もサポートしており、それらを仮想ハードディスクとして利用できます。
vmdk形式 (
VMware)、vhd形式 (Microsoft Virtual PC)、hdd形式 (Parallels)などの仮想ディスクイメージにも対応しています。ただし、これらの形式はVirtualBox向けではないため、バージョン間の互換性に注意が必要です。有志によってコンバートユーティリティも開発されています。
光学ドライブ
CD/DVDドライブとしてISOイメージを使用できます。例えば、
LinuxディストリビューションのISOイメージを直接VirtualBoxで使用できます。物理メディアに書き込む必要はありません。また、物理ディスクを仮想マシンから直接マウントすることも可能です。
グラフィック機能
標準で16MBの
VRAMを持つVESAカードをグラフィック機能として提供します(
VRAMは128MBまで調節可能)。ゲストOSがWindows XP以降、macOS、
Linux、
Solarisの場合、Guest Additionsによって描画性能の向上と機能の追加が可能です(
VRAMは128MB推奨)。例えば、ホスト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は、一般的なブロードバンドルータと同様に動作します。
バージョン5.0からは準
仮想化機能が搭載され、準
仮想化ネットワーク (virtio-net) が選択可能になりました。これにより、VirtualBoxがvirtio-netドライバを持つOSのカーネルと協調することで、ゲストOSと物理ネットワークインターフェースの間で直接データを受け渡せるようになり、ネットワークエミュレーションのオーバーヘッドを削減できます。
オーディオ機能
オーディオカードとして、Intel HDオーディオ、ICH AC'97(デフォルト)、SoundBlaster 16カードのいずれかを
仮想化します(ただし、Intel HDオーディオは対応するゲストOSに制限があります)。
転送
バージョン7.0以降、デフォルトでUSB 2.0コントローラ(EHCI)、USB 3.0コントローラ(xHCI)をサポートしています。
追加の機能
バージョン4.0以降、Extension Packageと呼ばれる機能拡張
プラグインが導入されました。これは、VirtualBox本体がGPL
ライセンスになったことで、プロプライエタリ
ソフトウェアによる機能を標準で実装できなくなったための措置です。
Oracleから「Oracle VM VirtualBox Extension Pack」と呼ばれる
プラグインが提供されており、以下の機能が含まれます。
Remote Desktop Protocol (RDP) によるリモート制御機能
ホストのWebカメラのパススルー機能
LinuxホストでのPCIバスパススルー機能(バージョン6.0まで)
IntelカードによるPXEブート機能
シームレスモード
ゲスト仮想ディスクの暗号化
初回のみダウンロードとインストールが必要ですが、その後はVirtualBoxのアップデート時にExtension Packのアップデートを促され、自動的にアップデートされます。インストール後、パッケージを削除するかどうかを確認されます。
phpVirtualBox
phpVirtualBoxは、WebブラウザでVirtualBoxを操作するためのWebサービス
ソフトウェアです。サーバーサイドはPHPで記述されており、インターフェースには
Ajaxが用いられています。動作にはPHPをサポートするWebサーバー、PHP、VirtualBoxが必要です。GUIでできることはほぼ全て実行できます。
技術解説
VirtualBoxは、Intel VTまたはAMD AMD-Vをサポートする
CPUで効率的かつ安全な
仮想化を実現します。これらの技術をサポートしない
CPUでは、
ソフトウェア的な
仮想化を行います(バージョン6.0まで。6.1以降は
ハードウェア仮想化必須)。
高性能な
ソフトウェア仮想化を実現するため、VirtualBoxはゲストコードの実行時分析や実行時改変を行います。特に、リング0で実行されるべき特権命令のエミュレーションが性能上の大きな課題です。
ハードウェア仮想化を使用しない場合、ゲストコードをリング0で実行できないため、代替実行手段が必要です。特権命令が不適切な特権レベルで実行されるたびにトラップが発生するナイーブな対策では性能低下が大きいため、VirtualBoxは実行時に必要なコード片を分析し、特権命令をエミュレーション用のコードに置き換えることで効率的な実行を可能にします。この改変済みコードは再利用可能であり、実行時コード改変のコストを償却し、全体的な性能向上に貢献します。
macOS版では、ネットワークブリッジ(ホストインタフェース)がバージョン2.0からサポートされています。
Rapportと干渉し、起動しなくなることがあります。