Nested Virtualization を使って仮想マシン上で Vagrant する

普段開発するときは、Windows 上に仮想マシンUbuntu を起動して、その仮想マシンで開発することがほとんどなのですが、仮想マシン上で Vagrant を使いたいと思って色々調べて設定していたら、結構時間がかかってしまいました。 結論から言うと、ゲストOSの Windows で仮想化ソフトとして VMware Player を使うと、仮想マシン上でも仮想マシンを起動することができます。

仮想マシン上で仮想マシンを動かすことを、Nested Virtualization といい、それが可能どうかはゲストOSで使う仮想化ソフトに依存します。 ゲストOS上の仮想化ソフトが、ハードウェア仮想化支援機能(Intel VT や AMD-V)を仮想化してホストOS上でも有効にできるのであれば、Nested Virtualization が可能になります。

調べた範囲だと、VMware Player では Nested Virtualization が可能でしたが、VirtualBox では不可能でした。 なので、ホストOS(Windows)上で VMware、ゲストOS(Ubuntu)上で VirtualBox を起動するようにすると、仮想マシン上で Vagrant を使えました。

f:id:itiut:20130929150053p:plain

設定

ゲストOS上の VirtualBox はインストールするだけでいいですが、ホストOS上の VMware Playerでは、ゲストOS上でもハードウェア仮想化支援機能を有効にするための設定が必要です。

仮想マシン設定の編集からプロセッサを選択し、仮想化エンジンのオプション設定で、Intel VT-x/EPT または AMD-V/RVI を仮想化にチェックを入れるだけです。

f:id:itiut:20130929150104p:plain

参考