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 из командной строки.
Оставьте свой отзыв