はじめに
Windows10でもWSL2でUbuntuなどを便利に使えるようになりました。ところが、WSL2でもVirtualBoxを使いたくなることがあります。WSL2も便利なのですが、VirtualBoxを使えば複数のOSを同時に実行できるようになります。
しばらくの間、WSL2上ではVirtualBoxが上手く動かなかったりしたのですが、VirtualBox 6.1.16以上であれば早くはないのですが一応使えるようになりました。
今回は、このVirtualBox上に設定した仮想マシンをWSL2のコマンドラインから操作してみたいと思います。この操作のためにVirtualBoxのVBoxManageコマンドを使います。
VBoxManageコマンドは、Windows10の場合WSL2から見ると次の場所にインストールされています。
$ cd "/mnt/c/Program Files/Oracle/Virtualbox"
仮想マシンの表示
稼働中の仮想マシンを表示するためにlistvmというスクリプトを作成します。
#!/bin/bash
echo -e "VMNAME\t UUID"
if [ $# -ge 1 -a "$1" = "-a" ]; then
"/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe" list vms
else
"/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe" list runningvms
fi
exit 0
上記のような内容のファイルを/usr/local/binディレクトリーにlistvmという名前で作成して実行権を設定しておきます。
$ listvm
$ listvm -a
VMNAME UUID
"ubuntu1" {e2449fca-0000ac1-4557-8c45-80eff8f6aa66}
オプション無しで実行すると稼働中の仮想マシンを表示して、”-a”オプションを付ければVirtualBoxに設定されている仮想マシンが停止していても表示されます。
仮想マシンの起動
次の内容のファイルをstartvmとして作成して実行権を与えておきます。
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: startvm <vmname>"
exit 1
fi
"/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe" startvm $1 --type headless
exit 0
ここでは、コマンドラインから操作しますから”headless”モードで起動しています。
$ startvm ubuntu1
Waiting for VM "ubuntu1" to power on...
VM "ubuntu1" has been successfully started.
仮想マシンの起動確認
簡易的に仮想マシンの起動を確認するために、pingコマンドを使ってみることにします。次の内容のファイルをwaitvmとして作成して実行権を与えておきます。
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: waitvm <vmname>"
exit 1
fi
ping -c 1 $1
exit 0
ここで、事前の準備として仮想マシンにはホストオンリーアダプターに固定IPアドレスを設定してWindowsのhostsファイルに設定済みになっています。
ところが、現在WSL2上のVirtualBox仮想マシンは、VirtualBoxマネージャーの画面を開いていないと正常に起動してこ来ないようですから、マネージャー画面を開いておきます。
この状態であれば、仮想マシンが起動していますからlistvmにオプションをつけていなくても表示されます。
$ listvm
VMNAME UUID
"ubuntu1" {e2449fca-0000ac1-4557-8c45-80eff8f6aa66}
仮想マシンの停止
以下の内容のファイルをstopvmとして作成して実行権を与えておきます。
#!/bin/bash
if [ $# -lt 1 ]; then
echo "Usage: stopvm [-f] <vmname>"
exit 1
fi
if [ $# -ge 2 ]; then
if [ "$1" = "-f" ]; then
"/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe" controlvm $2 poweroff
exit 0
fi
fi
"/mnt/c/Program Files/Oracle/VirtualBox/VBoxManage.exe" controlvm $1 acpipowerbutton
exit 0
ここでは、オプション無しでstopvmを実行した場合にはシャットダウンを実行して”-f”オプションを付けた場合には電源オフを実行しています。
$ stopvm ubuntu1
$ stopvm -f ubuntu1
0%…10%…20%…30%…40%…50%…60%…70%…80%…90%…100
ここでは、上段がシャットダウンの実行例で下段が電源オフの実行例になっています。
Macの場合
Macの場合であれば、WSL2の場合のようにVirtualBoxマネージャー画面を開かないでそのまま実行することができています。
さらにVBoxManageなどのVirtualBox用のコマンドは/usr/local/binディレクトリーにWrapperが用意されていますからパスを意識しなくても、そのまま実行することが可能です。