
VirtualBoxには、仮想マシンのデスクトップショートカットを作成できる便利な機能があります。しかし、GUIのないサーバーでVirtualBoxを実行している場合、この機能はあまり役に立ちません。そのような場合、必要なときに毎回コマンドを実行して仮想マシンを起動するのは面倒です。では、どうすれば良いでしょうか?LinuxでVirtualBoxの仮想マシンをホストしている場合、非常に簡単です。仮想マシンの起動、停止、再開を管理するbashスクリプトを作成すれば良いのです。
これからその方法をご紹介します。VirtualBoxと必要な仮想マシンが既にインストールされていることを前提としています。それでは、実際にどのように行うのか見ていきましょう。
VMの一覧表示
まず最初に、仮想マシンの名前を確認する必要があります。GUIであれば、VirtualBoxを開いて仮想マシンの一覧を確認できるでしょう。しかし、サーバーにはGUIがないため、仮想マシンの一覧を表示するには便利なコマンドを使用する必要があります。そのコマンドは以下のとおりです。
VBoxManage list vms
コマンドの出力(図A)には、各仮想マシンの名前とUIDが表示されます。ここでは仮想マシンの名前をメモしておきます。
図A

bashスクリプトの作成
VM「UbuntuSERVER Clone」を起動するスクリプトを作成したいとします。nano ubuntuserverclone.startコマンドでファイルを作成します。ファイルの内容は以下のようになります。
#! /bin/bash
VBoxManage startvm "UbuntuSERVER Clone" --type headless
そのファイルを保存して閉じます。
タスクごとに異なるファイルを作成する必要があります。以下の内容のubuntuserverclone.stopファイルを作成できます。
#! /bin/bash
VBoxManage controlvm "UbuntuSERVER Clone" poweroff --type headless
同じ仮想マシンを一時停止するには、次の内容の ubuntuserverclone.pause というファイルを作成します。
#! /bin/bash
VBoxManage controlvm "UbuntuSERVER Clone" pause --type headless
一時停止した仮想マシンを再開するには、次の内容を含む ubuntuserverclone.resume というファイルを作成します。
#! /bin/bash
VBoxManage controlvm "UbuntuSERVER Clone" resume --type headless
各ファイルを作成した後、次のコマンドを使用して実行権限を付与してください。
chmod u+x ubunserverclone.start
作成するファイルごとにファイル名を毎回置き換えてこれを実行すると、新しい bash スクリプトが適切なアクションを実行します。
スクリプトを実行する
2つの選択肢があります。これらのスクリプトを特定のディレクトリ内で実行するか、$PATH 内のディレクトリにコピーしてグローバルに実行することができます。グローバルに実行しない場合は、ターミナルを開き、スクリプトが格納されているディレクトリに移動して、コマンド./ubuntuserverclone.startを実行してください。
グローバルルートを選択する場合は、コマンドsudo cp ubuntuserverclone* /usr/local/binでファイルをコピーします。次に、コマンドsudo chmod o+x /usr/local/bin/ubuntuserverclone.*で適切な権限を付与します。これで、 ubuntuserverclone.start (または .stop、.pause、.resume)コマンドを実行するだけで、どのディレクトリからでも各スクリプトを実行できるようになります。
ヘッドレスVMを簡単に制御
VirtualBoxのヘッドレス仮想マシンの制御が驚くほど簡単になる方法はこれだけです。各仮想マシンに制御用のbashスクリプトを作成すれば、毎回コマンド全体を入力することなく、仮想マシンの起動、停止、一時停止、再開が可能になります。