Управление VirtualBox с помощью консоли. Запуск виртуальной машины в VirtualBox без GUI Запуск виртуальной машины из командной строки

Иногда возникает необходимость запустить виртуальную машину на хосте без иксов. Я расскажу о том как это сделать, имея доступ к хостовой системе только по ssh + rdp (Remote Desktop Protocol). процесс я буду описывать для OC Ubuntu 9.10 в качестве хоста.

Начнем с установки VirtualBox.

Предварительно нужно установить пакет dkms (Dynamic Kernel Module Support Framework):

Sudo apt-get install dkms

На сайте предлагается 2 варианта: прописать источник пакетов (deb download.virtualbox.org/virtualbox/debian karmic non-free) в /etc/apt/sources.list либо скачать и установить deb-пакет. Когда я прописал источник и сделал sudo apt-get install virtualbox-3.1 у меня потянулась куча пакетов из зависимостей (в том числе и каких-то для GUI интерфейса). Поэтому лучше скачать deb-пакет. Качаем, устанавливаем:

Sudo dpkg -i virtualbox-3.1_3.1.0-55467_Ubuntu_karmic_i386.deb

Возможно тут также потребуются зависимости (какие-то библиотеки для парсинга xml, в котором хранятся конфиги, но их значительно меньше чем в первом случае). Если установка не завершилась из-за зависимостей, можно просто сделать

Sudo apt-get -f install

При этом установятся зависимости и VirtualBox

Ок. VirtualBox поставили. Начнем создавать guest-машины.

Создаем саму машину:

VBoxManage createvm --name ubuntu --ostype Ubuntu --register
(name - имя машины, ostype - тип системы. полный список всех типов можно узнать командой VBoxManage list ostypes)

Настраиваем

VBoxManage modifyvm ubuntu --memory 512 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 eth0 --vram 4 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on --usb off --vrdp on --vrdpport 3390

Тут с большего все понятно. в качестве типа сети можно указать также NAT (--nic1 nat). также включаем rdp

Создаем hdd диск для виртуальной машины:

VBoxManage createhd --filename /home/user/vbox/ubuntu.vdi --size 20000 --register

Добавляем контроллер IDE в нашу машину

VBoxManage storagectl ubuntu --name "IDE Controller" --add ide

Цепляем на IDE0 созданный ранее hdd

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/user/vbox/ubuntu.vdi

На IDE1 цепляем установочный образ

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/user/vbox/iso/ubuntu-9.10-alternate-i386.iso

Говорим машине грузиться с диска

VBoxManage modifyvm ubuntu --boot1 dvd

Запускаем машину

Для того чтобы поставить базовую систему воспользуемся rdp-клиентом (у меня KDE, в стандартную поставку входит KRDC). коннектимся на хостовую машину на порт, который указали в настройках (--vrdpport 3390), ставим систему, делаем sudo apt-get install openssh-server . теперь на виртуальную машину можно попасть по ssh

Останавливаем виртуальную машину

VBoxManage controlvm ubuntu acpipowerbutton
через acpi

Или более жестко

VBoxManage controlvm ubuntu poweroff

Говорим грузится с hdd

VBoxManage modifyvm ubuntu --boot1 disk

Можно также отцепить установочный диск

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --medium none

И снова запускаем

Nohup VBoxHeadless --startvm ubuntu &

Еще полезные команды:

VBoxManage list runningvms
просмотр всех запущенных машин

VBoxManage showvminfo ubuntu
просмотр информации о виртуальной машине

Таким образом на одной машине с минимально установленной системой можно поднимать несколько виртуальных для различных целей и экспериментов

1.Создаем виртуальную машину с именем windows_xp
VBoxManage createvm --name windows_xp --regist er
Созданная виртуальная машина является XML файлом, который располагается в домашней директории /root/VirtualBox\ VMs/windows_xp/windows_xp.vbox
2. Далее нужно создать диск виртуальной машины
VBoxManage createhd --filename /date/VirtualBox/windows_xp.vdi --size 15000 --variant Fixe d
По умолчанию диск создается в домашней папке пользователя, мы создали диск windows_xp.vdi в диретроии /date/VirtualBox/ размером 15 гигабайт; размер фиксированный, т. е. его увеличение динамически не происходит.
3.Создаем контроллер виртуальных дисков
VBoxManage storagectl windows_xp --name "IDE Controller" --add ide --controller PIIX4
С помощью этой команды создается контроллер IDE с именем “IDE Controller”, тип контроллера – PIIX4.
4. Подключаем виртуальный диск к виртуальной машине:
VBoxManage storageattach windows_xp --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /date/VirtualBox/windows_xp.vdi

5.Подключаем виртуальный образ ос которую хотим установить
VBoxManage storageattach windows_xp --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /date/public/winxp_pro_eng_sp3.iso

6. Устанавливаем размер оперативной памяти для виртуальной машины 512мб
vboxmanage modifyvm windows_xp --memory 512

7. Устанавливаем тип системы VBoxManage modifyvm windows_xp --ostype WindowsX P
посмотреть все возможные ostype: VBoxManage list ostypes

8. Разрешаем подключаться к консоли по протоколу RDP
vboxmanage modifyvm windows_xp --vrde on
Чтобы удобней было управлять виртуалками нужно набор дополнений который включает USB 2.0 и встроенный RDP сервер. Скачиваем дополнения и устанавливаем: wget http://dlc.sun.com.edgesuite.net/virtualbox/4.2.12/Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-4.2.12-84980.vbox-extpack

9. Запускаем виртуальную машину
vboxheadless -s windows_xp или в фоне:
VBoxManage startvm windows_xp --type headless
чтобы запустить гостевую ОС на базовом компьютере с которым вы работаете через ssh, нужно использовать ключ –type=headless:

10. Подключаемся по RDP ip_servera и устанавливаем win_xp как обычно

11.Выключить машину можно так VBoxManage controlvm windows_xp poweroff

12.Монтируем диск VboxGuestAdditions
VBoxManage storageattach windows_xp --storagectl "IDE Controller" --port 0 --device 1 --type dvddrive --medium /usr/share/virtualbox/VBoxGuestAdditions.iso

Стартуем машину и устанавливаем VboxGuestAdditions
13. Подробную информацию о конкретной виртуальной ОС можно получить командой VBoxManage showvminfo windows_xp

14. С помощью этой команды создается сетевой интерфейс NIC типа «мост»
VBoxManage modifyvm windows_xp --nic1 bridged --bridgeadapter1 eth0

15. Если диск виртуальной машины нужно клонировать, то это делается с помощью утилиты VBoxManage:
VBoxManage clonehd /путь/откуда/копируем/image1.vdi /путь/куда/копируем/image2.vdi
После этого все замечательно подключается к новой виртуальной машине.

16.Создать расшаренную папку с сервером
vboxmanage sharedfolder add "windows_xp" --name share-name --hostpath /mnt
Подключить расшаренную папку из windows_xp выполнить
\\vboxsvr\share-name

Виртуализация… виртуализация…
Сейчас все пытаются выжать из своих аппаратных ресурсов как можно больше. Иметь несколько отдельных компьютеров с различными ОС немного накладно и не все организации пойдут на это. Но выход есть, можно использовать виртуальные машины. И возможно, что многие используют для этих целей замечательный продукт от Sun «VirtualBox». Я уверен, что большинство для настройки используют GUI интерфейс, т.к. это очень наглядно и удобно. Но многие ли задумывались о возможности управления VirtualBox через консоль.
Была поставлена задача: На один сервер поставить две ОС (Ubuntu и Windows). При этом был работающий сервер под управлением Ubuntu 9.04 Server Edition. Поэтому было решено ставить Windows XP в качестве гостевой системы.
Но возникла проблема на Ubuntu НЕ УСТАНОВЛЕНА никакая графическая среда, т.е. там есть только голая консоль.

Итак, что у нас есть:

  • Хост система: Ubuntu 9.04 Server Edition
  • VirtualBox 2.2.2
  • Гостевая система: Windows XP

Установка VirtualBox

Скачиваем с официального сайта VirtualBox пакет для Ubuntu 9.04
После того, как скачали, выполняем комманду:
dpkg -i virtualbox-2.2_2.2.2-46594_Ubuntu_jaunty_i386.deb
VirtualBox должен установится. Если возникла проблемы при установке пакета, изучите сообщение об ошибках. Возможно у вас не установлены необходимые пакеты. В моем случае у меня не был установлен пакет libxslt1.1 , что моментально было исправлено командой sudo apt-get install libxslt1.1 .
Добавляем себя в группу vboxusers
sudo usermod -a -G vboxusers имя_пользователя

Создание виртуальной машины

Для начала стоит отметить, что для управления виртуальными машинами через консоль используется одна команда VBoxManage (правда у неё очень много параметров).
Начнем.
  1. Для начала создадим машину и сразу её зарегистрируем
    VBoxManage createvm -name имя_виртуальной_машины -register
  2. Далее необходимо создать диск для машины
    VBoxManage createhd --filename имя_диска --size размер_диска_в_мегабайтах
    Существует возможность выбрать тип диска VDI (VirtualBox), VMDK (VMWare), VHD (Microsoft Virtual PC). По умолчанию, конечно же, VDI:).
  3. Делаем дополнительные настройки нашей виртуальной машины. Укажем:
    • Тип гостевой ОС. Для получения списка поддерживаемых ОС выполните команду VBoxManage list ostypes
    • Размер выделяемой памяти
    • Наименование главного диска
    • Возможность использовать VRDP (VirtualBox Remote Desktop Protocol)
    VBoxManage modifyvm имя_виртуальной_машины --ostype тип_ОС --memory размер_памяти_в_мегабайтах --hda имя_диска --vrdp on
  4. Подключим образ диска, с которого будем ставить Windows XP
    • Зарегестрируем DVD с образом дистрибутива системы
      VBoxManage openmedium путь_до_образа
    • Вставим наш диск в виртуальный привод
      VBoxManage modifyvm WindowsXP --dvd путь_до_образа
  5. Посмотрим на настройки нашей машины. Убеждаемся, что все нас устраивает и…
    VBoxManage showvminfo имя_машины

… Запуск… Поехали

Чтобы запустить виртуальную машину надо выполнить
VBoxManage startvm имя_машины --type vrdp
Параметр --type vrdp нужен, чтобы подключиться к машине с помощью VRDP
Все, теперь осталось подключится к нашей машине, с помощью удаленного рабочего стола. Это можно сделать с помощью стандартных утилит: для windows это mstsc, для никсовых систем rdesktop.Т.к. у нас есть только консоль, то надо воспользоваться компьютером, имеющим графический рабочий стол.
Чтобы подключится, надо указывать IP хост машины и порт для данной виртуальной машины. В моем случае, я ничего не менял и использовал порт по умолчанию (3389). Чтобы изменить порт, выполните VBoxManage --vrdpport порт. Если у Вас установлено несколько виртуальных машин, то для того, чтобы подключаться к каждой их них, необходимо в настройках указать различные порты, например, для первой машины 3389, для второй 3390 и т.п.

Вместо эпилога

Теперь у нас запущена виртуальная машина и мы к ней спокойно можем подключаться используя протокол VRDP. Я спокойно установил Window XP, находясь за своим рабочим компьютером.

P.S. Windows XP была нужна только по одной причине. В проекте нужно было использовать MS SQL Server.

Иногда возникает необходимость запустить виртуальную машину на хосте без иксов. Я расскажу о том как это сделать, имея доступ к хостовой системе только по ssh + rdp (Remote Desktop Protocol). процесс я буду описывать для OC Ubuntu 9.10 в качестве хоста.

Начнем с установки VirtualBox.

Предварительно нужно установить пакет dkms (Dynamic Kernel Module Support Framework):

Sudo apt-get install dkms

На сайте предлагается 2 варианта: прописать источник пакетов (deb download.virtualbox.org/virtualbox/debian karmic non-free) в /etc/apt/sources.list либо скачать и установить deb-пакет. Когда я прописал источник и сделал sudo apt-get install virtualbox-3.1 у меня потянулась куча пакетов из зависимостей (в том числе и каких-то для GUI интерфейса). Поэтому лучше скачать deb-пакет. Качаем, устанавливаем:

Sudo dpkg -i virtualbox-3.1_3.1.0-55467_Ubuntu_karmic_i386.deb

Возможно тут также потребуются зависимости (какие-то библиотеки для парсинга xml, в котором хранятся конфиги, но их значительно меньше чем в первом случае). Если установка не завершилась из-за зависимостей, можно просто сделать

Sudo apt-get -f install

При этом установятся зависимости и VirtualBox

Ок. VirtualBox поставили. Начнем создавать guest-машины.

Создаем саму машину:

VBoxManage createvm --name ubuntu --ostype Ubuntu --register
(name - имя машины, ostype - тип системы. полный список всех типов можно узнать командой VBoxManage list ostypes)

Настраиваем

VBoxManage modifyvm ubuntu --memory 512 --floppy disabled --audio none --nic1 bridged --bridgeadapter1 eth0 --vram 4 --accelerate3d off --boot1 disk --acpi on --cableconnected1 on --usb off --vrdp on --vrdpport 3390

Тут с большего все понятно. в качестве типа сети можно указать также NAT (--nic1 nat). также включаем rdp

Создаем hdd диск для виртуальной машины:

VBoxManage createhd --filename /home/user/vbox/ubuntu.vdi --size 20000 --register

Добавляем контроллер IDE в нашу машину

VBoxManage storagectl ubuntu --name "IDE Controller" --add ide

Цепляем на IDE0 созданный ранее hdd

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 0 --device 0 --type hdd --medium /home/user/vbox/ubuntu.vdi

На IDE1 цепляем установочный образ

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium /home/user/vbox/iso/ubuntu-9.10-alternate-i386.iso

Говорим машине грузиться с диска

VBoxManage modifyvm ubuntu --boot1 dvd

Запускаем машину

Для того чтобы поставить базовую систему воспользуемся rdp-клиентом (у меня KDE, в стандартную поставку входит KRDC). коннектимся на хостовую машину на порт, который указали в настройках (--vrdpport 3390), ставим систему, делаем sudo apt-get install openssh-server . теперь на виртуальную машину можно попасть по ssh

Останавливаем виртуальную машину

VBoxManage controlvm ubuntu acpipowerbutton
через acpi

Или более жестко

VBoxManage controlvm ubuntu poweroff

Говорим грузится с hdd

VBoxManage modifyvm ubuntu --boot1 disk

Можно также отцепить установочный диск

VBoxManage storageattach ubuntu --storagectl "IDE Controller" --port 1 --device 0 --medium none

И снова запускаем

Nohup VBoxHeadless --startvm ubuntu &

Еще полезные команды:

VBoxManage list runningvms
просмотр всех запущенных машин

VBoxManage showvminfo ubuntu
просмотр информации о виртуальной машине

Таким образом на одной машине с минимально установленной системой можно поднимать несколько виртуальных для различных целей и экспериментов