VirtualBox演習:コマンドラインでVMにUbuntuをインストールする(ための準備)

まずVMを作らないといけない:

$ VBoxManage createvm --name test01
Virtual machine 'test01' is created.
UUID: 46753dff-0314-4ac2-aeac-e963286e80a6
Settings file: '/home/flatline/VirtualBox VMs/test01/test01.vbox'
$ VBoxManage showvminfo test01
VBoxManage: error: Could not find a registered machine named 'test01'
VBoxManage: error: Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component VirtualBox, interface IVirtualBox, callee nsISupports
Context: "FindMachine(Bstr(VMNameOrUuid).raw(), machine.asOutParam())" at line 2158 of file VBoxManageInfo.cpp

あがが,登録しないといけないんだった:

$ VBoxManage registervm $HOME/VirtualBox\ VMs/test01/test01.vbox
$ VBoxManage showvminfo test01
Name:            test01
Guest OS:        Other/Unknown
UUID:            46753dff-0314-4ac2-aeac-e963286e80a6
Config file:     /home/flatline/VirtualBox VMs/test01/test01.vbox
(略

$ VBoxManage list vms
"AndrX86-Ubu01" {dd9a5fb5-06ce-494a-ae9a-a66313ab6914}
"test01" {46753dff-0314-4ac2-aeac-e963286e80a6}

できてる.最初に createvm --register とするのが楽だったね.
さて,あれこれパラメタを設定しないといけない.上の方から行くか...

$ VBoxManage list ostypes
ID:          Other
Description: Other/Unknown
(略
ID:          Ubuntu
Description: Ubuntu

ID:          Ubuntu_64
Description: Ubuntu (64 bit)
(略
$ VBoxManage modifyvm test01 --ostype Ubuntu_64

今回はちょっと迎合気味に,Ubuntuを入れることになってるので...
ホストに合わせてゲストのメモリ量を調整する:

$ VBoxManage list hostinfo
Host Information:

Host time: 2011-04-19T03:56:38.267000000Z
Processor online count: 4
Processor count: 4
Processor#0 speed: 3193 MHz
Processor#0 description:         Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
Processor#1 speed: 3193 MHz
Processor#1 description:         Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
Processor#2 speed: 3193 MHz
Processor#2 description:         Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
Processor#3 speed: 3193 MHz
Processor#3 description:         Intel(R) Core(TM) i5-2400 CPU @ 3.10GHz
Memory size: 11960 MByte
Memory available: 10008 MByte
Operating system: Linux
Operating system version: 2.6.38-2-amd64
$ VBoxManage modifyvm test01 --memory $((4*1024))

12 GB積んでるホストなんで,テスト用のゲストに4 GBくらい割り振っても全然オッケー.
上記のごとくホストCPUは4コア Core i5 (Sandy Bridge) なんで,ゲストもSMPさせてあげたい:

$ VBoxManage modifyvm test01 --ioapic on
$ VBoxManage modifyvm test01 --cpus 2

IO APIC は複数CPUに割り込みを分配する機構なので,OnじゃないとSMPにならない.
サブネットに余裕もあるし,NICはブリッジを選ぶことにする:

$ VBoxManage modifyvm test01 --nic1 bridged
$ VBoxManage modifyvm test01 --bridgeadapter1 eth0

こういう意味的にグループをなす設定は,1回に複数個まとめて実行してもいいね: VBoxManage modifyvm test01 --nic1 bridged --bridgeadapter1 eth0
難関は仮想HDDの作成と登録である.

  1. HDDイメージ (.vdi) を作る
  2. SATAコントローラを生成
  3. 2. のSATAコントローラに 1. のイメージを接続
$ VBoxManage createhd --filename /dev/shm/test01.vdi --size $((32 * 1024))
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: fb4380fe-e4dd-47b6-be62-2bd6b113e8cd
$ VBoxManage storagectl test01 --name 'SATA コントローラ' --add sata
$ VBoxManage storageattach test01 --storagectl 'SATA コントローラ' --port 0 --device 0 --type hdd --medium /dev/shm/test01.vdi

サイズは可変で32 GBにしてみました.
続いてインストーラISOを読ませる仮想DVDドライブに取りかかる:

$ VBoxManage storagectl test01 --name 'IDE コントローラ' --add ide
$ VBoxManage storageattach test01 --storagectl 'IDE コントローラ' --port 1 --device 0 --type dvddrive --medium ~/maverick-server-amd64/ubuntu-10.10-server-amd64.iso

これで showvminfo すれば,ちゃんとなってるのが分かるはず.この段階で VBoxManage startvm test01 をやれば,UbuntuインストーラVMがブートするはず.
問題は VBoxManage startvm test01 --type headless やったときに,シリアル出力を見る方法について...
追記: [後で書く] そもそも新規OSインストールまでをコマンドライン上でやるのが目的だった.しかし大抵のOSのインストーラはシリアル経由で操作できないのでVirtualBoxとは別のノウハウが必要になる.