VirtualBox コマンドラインで管理する

http://www.virtualbox.org/

マニュアル
Program Files\Sun\VirtualBox\doc\UserManual.pdf

ゲストOSのリストを表示する

C:\Program Files\Sun\VirtualBox>VBoxManage.exe list vms
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

"ubuntu9.10" {3d513084-d500-4018-9859-40b6229123d6}
"WinXP" {56dd6b2f-004e-421f-91e7-17252b9c61f6}
"CentOS" {a80c99d1-b6b5-4517-9913-0da9bc7c1b00}
"CentOS54" {cb63cf19-1c35-447a-a77b-7153840a9803}
"CentOS54s" {8e838ba0-62e9-4118-ba3e-d39d5ac28850}
"ubuntu10.04" {40cbced2-a1fd-4f35-809e-23b3a31a7ead}

※以降のコマンドで、VMの名前は大小文字の区別が必要となる。

ゲストOSをGUIなしで起動する

C:\Program Files\Sun\VirtualBox>VBoxManage.exe startvm "WinXP" -type vrdp
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

Waiting for the remote session to open...

上記は、別コンソールが起動される。

または

C:\Program Files\Sun\VirtualBox>VBoxHeadless.exe -startvm "WinXP"
Sun VirtualBox Headless Interface 3.1.6
(C) 2008-2010 Sun Microsystems, Inc.
All rights reserved.

Listening on port 3389.

必ずVRDPサーバが有効になるため、無効にしたい場合は、以下

C:\Program Files\Sun\VirtualBox>VBoxHeadless.exe -startvm "WinXP" -vrdp=off


下記コマンドでもできるが、推奨は上記コマンド。
VBoxManage.exe startvm "WinXP" --type headless
VBoxManageでHeadlessを開始すると、コンソールに出力したものを見たりログにとったりできないという理由ぽい。

This is the recommended way, because when starting the headless interface
through VBoxManage, you will not be able to view or log messages that
VBoxHeadless may have output on the console. Especially in case of startup
errors, such output might be desirable for problem diagnosis.

ゲストOSの起動を確認する

C:\Program Files\Sun\VirtualBox>VBoxManage.exe list runningvms
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

"WinXP" {56dd6b2f-004e-421f-91e7-17252b9c61f6}

VRDPについて

windowsでVRDPを有効にしてゲストOSを起動した場合、デフォルトで3389となるが、ホストOSがWindowsの場合、
すでにホスト自身がRDPをデフォルト3389で使用している可能性があるため、変更する必要がある。
また、ゲストOSごとにポートを設定する必要がある。

# VRDP接続を有効にする
C:\Program Files\Sun\VirtualBox>VBoxManage.exe modifyvm "WinXP" --vrdp on
# VRDPのポートを変更する
C:\Program Files\Sun\VirtualBox>VBoxManage.exe modifyvm "winXP" --vrdpport 33890

ホストOSから実行する場合
「ファイル名を指定して実行する」の例。

mstsc /v 127.0.0.1:33890

ゲストOSをコントロールする

VBoxManage.exe controlvm オプション

オプションは以下。

pause
仮想マシンの状態を変えないで、一時的に停止する。「一時停止」と同じ。
resume
pause状態を再開する「再開」と同じ。
reset
物理のリセットボタンと同じで「リセット」と同じ。
poweroff
電源ケーブルを引き抜く。「仮想マシンの電源オフ」と同じ。
savestate
VMの状態をディスクに保存してから停止する。「仮想マシンの状態を保存」と同じ。
acpipowerbutton
ACPIの電源ボタンと同じ
acpisleepbutton
ACPIのスリープボタンと同じ

ゲストOSの名前を変更する

# メモリを512MBに変更する
C:\Program Files\Sun\VirtualBox>VBoxManage.exe modifyvm "WinXP" -name "WincowsXP_SP3"

ゲストOSの割り当てメモリ量を変更する

# メモリを512MBに変更する
C:\Program Files\Sun\VirtualBox>VBoxManage.exe modifyvm "WinXP" -memory "512MB"

※MB単位で指定すること
※-vramとすると、仮想グラフィックカードのRAM容量となる。

ゲストOSのスナップショットを作成する

C:\Program Files\Sun\VirtualBox>VBoxManage.exe snapshot "WinXP" take "snap01"
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

最新のスナップショット状態にリストアする

C:\Program Files\Sun\VirtualBox>VBoxManage.exe snapshot "WinXP" restorecurrent
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

Restoring snapshot 67e61df2-6dcf-4954-9397-548afdccdabb
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

スナップショットを指定してリストアする

C:\Program Files\Sun\VirtualBox>VBoxManage.exe snapshot "WinXP" restore "bff570b
4-0b77-457a-8aa9-aac9d21be446"
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

Restoring snapshot bff570b4-0b77-457a-8aa9-aac9d21be446
0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%


スナップショット名が日本語だとエラー。
UUIDを指定してすれば問題なかったが、GUIでデフォルトのスナップショット名はマルチバイト。CUI管理するなら注意がいるかも。

C:\Program Files\Sun\VirtualBox>VBoxManage.exe snapshot "WinXP" restore "スナッ
プショット1"
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

ERROR: Could not find a snapshot named '繧ケ繝翫ャ繝励す繝ァ繝・ヨ・・
Details: code VBOX_E_OBJECT_NOT_FOUND (0x80bb0001), component Machine, interface
 IMachine, callee IUnknown
Context: "FindSnapshot(Bstr(a->argv[2]), pSnapshot.asOutParam())" at line 381 of
 file VBoxManageSnapshot.cpp

※スナップショットの名前を変更してもよさげ。
snapshot edit "WinXP" --name

スナップショットを削除する

C:\Program Files\Sun\VirtualBox>VBoxManage.exe snapshot "WinXP" delete "snap01"
Sun VirtualBox Command Line Management Interface Version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%

ゲストOSのスナップショットの情報を確認する

C:\Program Files\Sun\VirtualBox>VBoxManage.exe showvminfo "WinXP"
...
Snapshots:

   Name: snap00 (UUID: bff570b4-0b77-457a-8aa9-aac9d21be446)
      Name: snap01 (UUID: 67e61df2-6dcf-4954-9397-548afdccdabb) *

シンプルなWindowで起動する

ボタンクリックがないシンプルなwindow。
VBoxSDLで実行可能。フルスクリーンやサイズを指定して起動ができる。
内部デバッグ用で、公式サポート外となる。

C:\Program Files\Sun\VirtualBox>VBoxSDL.exe --startvm "WinXP"
Sun VirtualBox SDL GUI version 3.1.6
(C) 2005-2010 Sun Microsystems, Inc.
All rights reserved.

SDL Error: 'DirectInputDevice::SetDataFormat: Invalid parameters' 

TODO:エラーとなる。とりあえず後回し。