コマンドラインからVirtualBoxの仮想マシンを作成する

VBoxManage というコマンドを使用すると、VirtualBoxコマンドラインから操作できるようです。

今回、仮想マシンの設定でGUIを操作するのが嫌だったので(Vagrant も好みではないので...)、VBoxManage を使って仮想マシンを生成するスクリプトを作成しました。スクリプト自体は単純で、VBoxManageを連続で実行していくだけですが、誰かの参考になるかもしれないのでメモしておきます。

VBoxManage のマニュアルは、以下のURLを参照のこと。

今回、動作確認した環境は以下のとおり。

構築する仮想マシンのスペックは以下のとおりです。

以下のスクリプトPowerShell で実行すると仮想マシンが生成され、VirtualBox仮想マシンマネージャーで管理できるようになります。 そして、仮想マシンを起動すると、Ubuntuインストーラが起動します。

# 仮想マシン名
$VMName = "test"

# インストールメディア(Ubuntu)のISOファイルのパスを指定
$InstallIso = "$HOME\iso\ubuntu-18.04.1.0-live-server-amd64.iso"

# VirtualBoxのホストネットワークアダプタ名
$HostOnlyAdapter = "VirtualBox Host-Only Ethernet Adapter #2"

$BaseDir = "$HOME\vm"
$DiskImage = $BaseDir + "\" + $VMName + "\" + "boot.vdi"

# VBoxManageコマンドへPATHを通す(VirtualBoxのインストール先を指定する)
$Env:Path += ";" + "C:\Program Files\Oracle\VirtualBox"

# 仮想マシンの作成 & 登録
VBoxManage createvm --name $VMName --register --basefolder $BaseDir

# 仮想ディスクの作成(100GB)
VBoxManage createmedium disk --filename $DiskImage -size 102400 --format vdi

# ゲストOSの指定
# 指定可能なタイプの一覧は以下のコマンドで確認できる
# > VBoxManage list ostypes
VBoxManage modifyvm $VMName --ostype Ubuntu_64

# システム: CPU 2コア、メモリ 2024MB
VBoxManage modifyvm $VMName --cpus 2
VBoxManage modifyvm $VMName --memory 2048

# マルチコア有効化
VBoxManage modifyvm $VMName --ioapic on

# 仮想マシンの時刻をUTCにする
VBoxManage modifyvm $VMName --rtcuseutc on
VBoxManage modifyvm $VMName --biossystemtimeoffset 0

# 起動順序: 光学ドライブ -> 仮想ディスク
VBoxManage modifyvm $VMName --boot1 dvd
VBoxManage modifyvm $VMName --boot2 disk
VBoxManage modifyvm $VMName --boot3 none
VBoxManage modifyvm $VMName --boot4 none

# ディスプレイ: ビデオメモリ 16MB
VBoxManage modifyvm $VMName --vram 16

# ストレージ: 光学ドライブ + 仮想HDD
# 光学ドライブには、ISOイメージを設定している
VBoxManage storagectl $VMName --name IDE --add ide --bootable on
VBoxManage storagectl $VMName --name SATA --add sata --bootable on
VBoxManage storageattach $VMName --storagectl IDE --port 0 --device 0 --type dvddrive --medium $InstallIso
VBoxManage storageattach $VMName --storagectl SATA --port 0 --device 0 --type hdd --medium $DiskImage

# オーディオ: なし
VBoxManage modifyvm $VMName --audio none

# ネットワーク: NAT + ホストオンリーアダプター
VBoxManage modifyvm $VMName --nictype1 82540EM --nic1 nat 
VBoxManage modifyvm $VMName --nictype2 82540EM --nic2 hostonly --hostonlyadapter2 $HostOnlyAdapter

# 作成した仮想マシンの情報を表示する
VBoxManage showvminfo $VMName

# 何らかのキーを押したら終了
Read-Host "press any key"