VirtualBoxでホストOSが起動したらゲストも起動したい

VirtualBoxでホストOSが起動したらゲストの仮想マシンを起動する

OSを起動した後にVirtualBoxを開いて仮想マシンを起動するというのは少し面倒です。特に仮想マシンがサーバOSであれば動いたホストOSが起動したら自動で動いていた方が楽ではないでしょうか?
ホストOSが起動したら、指定しているゲストの仮想マシンも自動起動したいと思い起動設定を確認しました。
仮想マシンが動作しているということは、メモリーも消費しているということです。リソースが不足して動作が遅くなるなどの影響が考えられますのでご注意ください。

Windowsの場合(7で確認)

WindowsにインストールしているVirtualBoxのゲストを自動で起動する場合は、起動用のバッチファイルを作成して、スタートアップに登録します。
下記で確認したのはWindows7とVirualBoxバージョン5.1.22です。

バッチファイルを作る

Windwosはスタートアップに登録されているコマンド(exeファイルやバッチファイル)を実行します。
テキストエディタで、次のような内容を記述して、.batという拡張子をつけて保存します。

start start "" /b "C:\Program Files\Oracle\\VBoxManage.exe" startvm "VM name" --type headless

ファイルのパスはご自分の環境に合わせて変更してください。
仮想マシン名はVirtualBoxマネジャーで仮想マシンを選択した際に表示される名前です。
virtualbox
この.batファイルをホストOS上の任意のフォルダに保存します。
ご自分だけが使用するPCであれば、何も考えずにc:\ユーザ\ご自分のフォルダにでも保存しておけば良いかと思います。
作成した.batファイルのショートカットを作成します。作成方法は.batファイルを右クリックして[ショートカットを作成]を選びます。

スタートアップに登録

作成した.batファイルをスタートアップに登録します。

  1. スタートメニューを開いて[プログラムとファイルの検索]項目に shell:startup と入力して[Enter]キーを押します
  2. virtualbox
    virtualbox

  3. スタートアップフォルダが開きます
  4. virtualbox

  5. スタートアップフォルダに作成した.batファイルをコピーします
  6. virtualbox

  7. Windowsを再起動します
  8. 再起動後にゲスト仮想マシンが起動していればOK
  9. virtualbox

Macの場合

Mac上にインストールしたVirtualBoxのゲストOSをMacが起動したタイミングで自動起動します。
下記で確認したのはmacOS High SierraとVirualBoxバージョン5.1.22です。

本当はlaunchdを使用するのが良いのだと思いますが、なぜか正しく動かないので、ここではOS起動時にシェルを起動するWindowsと同じような方法で自動起動したいと思います。

  1. シェルスクリプトを作成します
  2. $ sudo vi vm_run.command
    

    シェルに記述する内容

    #!/bin/sh
    vboxmanage startvm "VM Name" --type headless
    killall Terminal
    
  3. パーミッションを変更します
    lsコマンドの実行結果は必要箇所だけを抜き出しています
  4. $ ls -al
    total 120
    -rw-r--r--@  1 ***********  staff     76  2  5 19:15 vm_run.command
    $ sudo chmod +x vm_run.sh 
    Password:
    $ ls -al
    total 120
    -rwxr-xr-x@  1 ***********  staff     76  2  5 19:15 vm_run.command
    
  5. [システム環境設定]から[ユーザとグループ]をクリックします
  6. [ログイン項目]をクリックします
  7. VirtualBox

  8. [+]アイコンをクリックして作成したcommandファイルを追加します
  9. VirtualBox

  10. macを再起動します
  11. 再起動後にゲスト仮想マシンが起動していればOK
    この時の起動はVBoxHeadlessで起動されます