※当エントリでは「VirtualBox」のMac OS X版を使用しております。他プラットフォーム版には該当しない記述も含まれていますので御注意下さい。
VMwareによる「vmrun」、Parallelsによる「prlctl」等、これまで複数回に渡って各仮想化ソフトウェアにて利用可能なコマンドラインユーティリティを採り上げてきましたが、マルチプラットフォーム対応の仮想化ソフトウェア「Oracle VM VirtualBox」も、ハイパーバイザと共に改善を重ねてきたGUIコンソールが提供されている一方で、コマンドラインから仮想マシンを制御可能とする「VBoxManage」に対応しています。「VBoxManage」からは各種パワーオペレーションやスナップショット、或いはGUIからは制御する事ができないライブマイグレーションや仮想CPUコアのホットプラグ等、任意のVirtualBox仮想マシンに対して様々な制御を行う事ができますが、その中でも今回は基本機能の一つとして、同コマンドラインユーティリティを通じた仮想マシンの起動をMac OS X環境にて実践してみたいと思います。
「vmrun」に関連した内容を採り上げた以前のエントリの一部では、LAN上の別のコンピュータからsshを経由したリモートコントロールにて「vmrun」を実践しておりましたが、今回はローカル環境からの制御を行ってみたいと思います。使用した環境は「Mac OS X 10.6.5(ホストOS)」+「Oracle VM VirtualBox 3.2.10」+「ReactOS 0.3.12(ゲストOS)」となります。
ローカル環境からは通常、「Terminal」等を通じて「VBoxManage」を実行する事が可能となりますが、「startvm」コマンド(任意の仮想マシンを起動するためのコマンド)を実行する際の基本的な書式は以下の通りとなります(「VBoxManage」は標準でパスが通っている「/usr/bin/」に属しているため、「VBoxManage」に対して別途にパスを指定する必要はありません)。
VBoxManage startvm <"vmname"> [--type gui|vrdp|headless]
※「vmrun」においては通常、(引数として対象となる仮想マシンを指定する際に)仮想マシンバンドルに含まれる構成ファイル(vmx)を指定する事となりますが、「VBoxManage」では自動で割り当てられている一意に特定可能な識別子(UUID)か、或いは「prlctl」と同様に仮想マシン名を指定します(仮想マシン名に空白が含まれる場合には、仮想マシン名をダブルクォート(")で囲む必要があります)。UUIDは以下のコマンドから取得する事が可能です。
VBoxManage list vms
また、「startvm」コマンドでは以下のパラメータを指定する事が可能となっています(パラメータを指定せずに実行した場合には、下記リストの「gui」にて起動される事となります)。
- gui……GUIを伴う「VirtualBoxVM」がシングルウインドウモードにて起動
- vrdp/headless……ヘッドレスモードにて起動(GUIコンソールを伴わずして「VBoxHeadless」のみがバックグラウンドにて単独で起動)
何れのケースにおいても、仮想マシンの管理全般等を司るGUIベースのマネジメントコンソール「VirtualBox.app」は起動されません。
↑「Terminal」を通じた「startvm」コマンドの実行により、任意のVirtualBox仮想マシンを起動。「gui」パラメータを指定(或いはパラメータを指定せずに実行)した場合には、GUIを伴う「VirtualBoxVM」がシングルウインドウモードにて起動される事となります(クリックで拡大します)
※「vmrun」における「start」コマンドをパラメータを指定せずに実行した場合には、「vmware-vmx」がGUIコンソールと共に起動される事となり、同様のケースにおいて「prlctl」では、GUIコンソールを伴わずして「prl_vm_app」のみがバックグラウンドにて単独で動作可能なヘッドレスモードにて起動される事となります。
「VBoxManage」において利用可能なその他のパワーオペレーション関連のコマンドとして、「pause」「reset」「resume」「poweroff」「savestate」等も用意されています(VBoxManage 3.2.10)。その他にも「VBoxManage」をオプションなしで実行する事により、利用可能なコマンド、パラメータのリスト等を確認する事ができます。
尚、ヘッドレスモードは上記の他にも、ヘッドレスインターフェイス「VBoxHeadless」を通じて制御する事も可能です。「startvm」コマンドにおける「headless」パラメータ等との違い等は、機会がありましたら改めて採り上げてみたいと考えております。