VBoxManage - VirtualBox из командной строки

Я уже писал парочку статей в которых упоминал о VBoxManage - команде которая позволяет управлять виртуальными машинами VirtualBox. Это заметки о том как можно скопировать (клонировать) жесткий диск виртуальной операционной системы и о том как можно запускать и останавливать гостевую систему из командной строки. У команды VBoxManage очень много дополнительных команд о которых можно прочесть в справке, а здесь хочу остановится на тех которыми чаще всего пользуюсь сам при работе с гостевыми ОС из командной строки.

В качестве базовой операционной системы используется Ubuntu 9.10. Все примеры из нее.
Чтобы посмотреть перечень гостевых операционных систем VirtualBox, которые зарегистрированы в системе, и с которыми можно работать, используем команду VBoxManage list vms:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$ VBoxManage list vms
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

"gos" {affddb18-769e-41eb-b1f8-1604b118c7d4}
"Xubuntu" {ea20c950-96ff-4385-b4b7-d1f7d9bb8881}
"TinyME" {46c769af-8fe9-4760-bf4b-da87d3069047}
"OpenSuse" {1b3c4233-6e50-4cde-a3a8-d0ffe270f24b}
"WinPE" {b78931ef-7132-4d6e-88d1-7b6b5d485114}
"Ubuntu" {ced182e1-6645-4a0a-b9e0-c0b901aa8e6e}
"testXP" {3189a6b2-cfe3-4e18-b3db-558d5a94c967}
"windowsxp" {29d70497-7961-4fef-8c80-31d4c8dea5e7}
"Fedora12" {76fd053d-2288-488b-993a-6f3914b7b6e1}
"debian" {bc6ef9f1-e8d3-49df-9ea6-69b64cd4b651}
"Windows2003" {a6fa7a1c-c63e-48db-b197-c61f38bd8adf}

Если нужно отобразить только те гостевые ОС, которые запущены в данный момент, тогда используем команду VBoxManage list runningvms:

1
2
3
4
5
6
$ VBoxManage list runningvms
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

"windowsxp" {29d70497-7961-4fef-8c80-31d4c8dea5e7}

Гостевые ОС VirtualBox могу находится в нескольких состояниях (powered off - выключена, running - работает, saved - сохранена). Чтобы посмотреть в каком состоянии находится каждая гостевая ОС можно применить такую конструкцию:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ VBoxManage list vms -l | grep --regexp={Name:,State:}
Name:            gos
State:           powered off (since 2010-08-21T09:07:28.000000000)
Name:            Xubuntu
State:           powered off (since 2010-04-03T19:47:26.000000000)
Name:            TinyME
State:           powered off (since 2009-12-26T14:34:14.000000000)
Name:            OpenSuse
State:           powered off (since 2010-01-15T07:40:29.000000000)
Name:            WinPE
State:           powered off (since 2010-01-15T07:42:45.000000000)
Name:            Ubuntu
State:           powered off (since 2010-08-21T09:08:38.000000000)
Name:            testXP
State:           saved (since 2010-09-18T18:18:16.000000000)
Name:            windowsxp
State:           running (since 2010-09-22T19:42:58.144000000)
Name:            Fedora12
State:           powered off (since 2010-08-21T09:14:51.000000000)
Name:            debian
State:           powered off (since 2010-04-19T19:08:20.000000000)
Name:            Windows2003
State:           saved (since 2010-05-27T18:52:53.000000000)

Подробную информацию о конкретной виртуальной ОС можно получить командой VBoxManage showvminfo:

1
2
3
4
5
6
7
8
9
10
$ VBoxManage showvminfo "windowsxp"
Name:            windowsxp
Guest OS:        Windows XP
UUID:            29d70497-7961-4fef-8c80-31d4c8dea5e7
Config file:     /home/igor/.VirtualBox/Machines/windowsxp/windowsxp.xml
Hardware UUID:   29d70497-7961-4fef-8c80-31d4c8dea5e7
Memory size:     384MB
Page Fusion:     off
VRAM size:       16MB
.....

Вывод последней команды сокращен.

Иногда приходится запускать гостевую ОС на удаленном компьютере через ssh. Если попытаться запустить гостевую ОС с помощью команды VBoxManage startvm, то получим ошибку:

1
2
3
4
5
6
7
8
$ VBoxManage startvm "Ubuntu Server"
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Waiting for the VM to power on...
ERROR: The virtual machine 'Ubuntu Server' has terminated unexpectedly during startup with exit code 0
Details: code NS_ERROR_FAILURE (0x80004005), component Machine, interface IMachine, callee

Поэтому чтобы запустить гостевую ОС на базовом компьютере с которым вы работаете через ssh, нужно использовать ключ –type=headless:

1
2
3
4
5
6
7
$ VBoxManage startvm "Ubuntu Server" --type=headless
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Waiting for the VM to power on...
VM has been successfully started.

С таким ключом гостевая операционная система будет запущена, без отображения графического интерфейса. Если таким образом запустить в локальной базовой системе, например, гостевую Windows XP, то вы не увидите окна запущенной гостевой системы, но сможете зайти в нее, например через RDP (если такой доступ был предварительно настроен).

Выключить гостевую операционную систему можно командой VBoxManage controlvm не забыв указать имя ОС и тип выключения - savestate или poweroff:

1
2
3
4
5
6
$ VBoxManage controlvm "Ubuntu Server" savestate
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

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

Чтобы изменить количество оперативной памяти выделяемой для гостевой ОС используем команду VBoxManage modifyvm с ключом –memory:

1
2
3
4
$ VBoxManage modifyvm "Ubuntu Server" --memory 384
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Гостевая ОС должна быть в состоянии poweroff - выключена при использовании команды VBoxManage modifyvm.

Чтобы подключить новый НЖМД нужно его сначала создать командой VBoxManage createhd:

1
2
3
4
5
6
7
$ VBoxManage createhd --filename /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Fourth.vdi --size 1000 --remember
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

0%...10%...20%...30%...40%...50%...60%...70%...80%...90%...100%
Disk image created. UUID: 7ed81ed3-175c-433d-bad5-d827522a6074

А затем подключить к гостевой ОС с помощью команды VBoxManage storageattach. Но сначала нужно выполнить команду VBoxManage showvminfo, чтобы посмотреть информацию о контроллерах к которым будем подключать диск:

1
2
3
4
5
6
7
8
9
10
11
12
$ VBoxManage showvminfo "Ubuntu Server"
........
Storage Controller Name (1):            SATA контроллер
Storage Controller Type (1):            IntelAhci
Storage Controller Instance Number (1): 0
Storage Controller Max Port Count (1):  30
Storage Controller Port Count (1):      3
IDE контроллер (1, 0): /home/igor/downloads/ubuntu-10.04.1-server-i386.iso (UUID: e24c2236-7d4d-4c60-88db-3e5228c325ae)
SATA контроллер (0, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server.vdi (UUID: 043d63de-4a4b-40aa-a8bb-e4c72873ae0a)
SATA контроллер (1, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Second.vdi (UUID: 3591867f-2e0f-4b40-8196-6f361a17bb21)
SATA контроллер (2, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Third.vdi (UUID: a0c6b102-f1b5-422f-9c1c-344a7baf71ff)
.......

Сейчас к гостевой ОС Ubuntu Server подключено три НЖМД к SATA-контроллеру с именем SATA контроллер. Команда подключения четвертого диска будет выглядеть так:

1
2
3
4
$ VBoxManage storageattach "Ubuntu Server" --storagectl "SATA контроллер" --port 3 --device 0 --type hdd --medium /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Fourth.vdi
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Проверим, что диск подключен:

1
2
3
4
5
6
7
$ VBoxManage showvminfo "Ubuntu Server"
.....
SATA контроллер (0, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server.vdi (UUID: 043d63de-4a4b-40aa-a8bb-e4c72873ae0a)
SATA контроллер (1, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Second.vdi (UUID: 3591867f-2e0f-4b40-8196-6f361a17bb21)
SATA контроллер (2, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Third.vdi (UUID: a0c6b102-f1b5-422f-9c1c-344a7baf71ff)
SATA контроллер (3, 0): /mnt/virtualdisks/Ubuntu-Server/Ubuntu_Server_Fourth.vdi (UUID: 7ed81ed3-175c-433d-bad5-d827522a6074)
.....

Чтобы удалить диск используем эту же команду, но в ключе medium указываем none:

1
2
3
4
$ VBoxManage storageattach "Ubuntu Server" --storagectl "SATA контроллер" --port 3 --device 0 --type hdd --medium none
Oracle VM VirtualBox Command Line Management Interface Version 3.2.8
(C) 2005-2010 Oracle Corporation
All rights reserved.

Пока все. Напомню, что это были наиболее часто используемые мною команды для работы с гостевыми ОС VirtualBox из командной строки.

Статьи и новости схожей тематики:

Оставьте свой отзыв