コマンドラインからVirtualBoxの仮想マシンを作成する
VBoxManage
というコマンドを使用すると、VirtualBoxをコマンドラインから操作できるようです。
今回、仮想マシンの設定でGUIを操作するのが嫌だったので(Vagrant も好みではないので...)、VBoxManage
を使って仮想マシンを生成するスクリプトを作成しました。スクリプト自体は単純で、VBoxManage
を連続で実行していくだけですが、誰かの参考になるかもしれないのでメモしておきます。
VBoxManage
のマニュアルは、以下のURLを参照のこと。
今回、動作確認した環境は以下のとおり。
- ホストPC
- OS: Windows 10 Home
- VMM: VirtualBox 5.2.8 (ホストネットワークアダプタ生成済み)
構築する仮想マシンのスペックは以下のとおりです。
- 仮想マシンのスペック
- OS: Ubuntu Server 18.04 LTS
- CPU: 2コア
- メモリ: 2048MB
- HDD: 100GB
- NIC1: NAT
- NIC2: ホストネットワークアダプタ
以下のスクリプトを 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"