Oracle vm virtualbox команды

Обновлено: 07.07.2024

Если хоть раз попробуешь установить Linux под VirtualBox’ом, может сложиться впечатление, что это очень простой инструмент. Интерфейс виртуальной машины не содержит ничего лишнего, а работа с приложением предельно понятна и прозрачна. На самом же деле под этой простотой скрывается масса дополнительных возможностей, которая нужна далеко не всем. Но эта история не про нас.

Работая с VirtualBox’ом каждый день, открываешь для себя все новые и новые фишки. Например, недавно, когда мне понадобилось отснифать весь трафик виртуальной машины, оказалось, что необязательно использовать сниффер: для этого есть встроенная опция в самой программе. А встроенный API, как оказалось, за последние полтора года сильно шагнул вперед, и я буквально за часик разобрался и сварганил скрипт, который автоматически выполнял нужные мне действия внутри гостевой системы. Сегодня мы решили аккумулировать свой опыт и составить несколько полезных и подчас неочевидных приемов работы с VirtualBox, к которым нам нередко приходится прибегать.

Трик 1. Управляем виртуальными машинами через RDP

Включить доступ по RDP и назначить порт можно в настройках каждой виртуальной машины на вкладке «Удаленный дисплей». Для виртуалки с виндой можно оставить порт по умолчанию 3389 (имей в виду, что он может быть занят непосредственно серверо м RDP хостовой машины), а для машины с никсами — 3390 и т.д. Если планируется несколько одновременных подключений, необходимо активировать соответствующую опцию. Помимо этого здесь настраиваются параметры авторизации.

Трик 2. Устанавливаем веб-морду

1. Для работы phpVirtualBox необходим запущенный на хостовой машине демон vboxwebsrv (он распространяется вместе с VirtualBox). На никсовых машинах он, как правило, располагается в папке /usr/bin. Под виндой он находится в папке с VirtualBox, то есть, скорее всего, в C:\Program Files\Oracle\VirtualBox. Важный момент: программа должна быть запущена под тем же пользователем, что и сам VirtualBox. Лучше всего отключить весь вывод программы, в противном случае будет сильно страдать производительность.

Трик 3. Управляем ВМ через консоль!

Но удаленный доступ — это не все, что нужно для эффективного использования виртуальных машин. Еще одна важная часть — возможность автоматизации. К счастью, в VirtualBox никто не обязывает тебя использовать GUI-интерфейс. Любые действия можно выполнить через консольную утилиту администрирования VBoxManage.exe и использовать ее в любых своих сценариях. Можешь попробовать ввести команду «VBoxManage list vms» — получишь в консоли список всех существующих виртуальных машин, их имена и идентификаторы UUID:

Oracle VM VirtualBox Command Line Management Interface Version 3.2.10 ( C ) 2005 - 2010 Oracle Corporation All rights reserved .

Хочешь запустить одну из них прямо из консоли? Ничего сложного: отдаем соответствующую команду, указав имя нужной виртуалки — «VBoxManage.exe startvm xp». Верный способ получить справку о том, какие команды доступны, и как их использовать — запустить приложение без параметров. Разработчики гарантируют, что консольная версия ничем не уступает GUI-оболочке, и любые действия с виртуальными машинами можно с не меньшим успехом выполнить через VBoxManage. Выше я упоминал SDK для разработчиков, который обновляется с каждой новой версией VirtualBox и выкладывается на официальном сайте.

Программа предоставляет мощнейший API для управления виртуальными машинами. Система встроенных вызовов такова, что использовать ее можно из самых разных языков программирования: существуют привязки (то есть специальные модули) для Java, Python и других языков. В качестве хорошего примера для старта можно взять из SDK vboxshell.py, в котором через API реализовано несколько полезных опций для управления виртуалками. В том числе запуск программы внутри гостевой ОС, создание скриншота с дисплея виртуальной машины, подключение ISO-образа в качестве CD/DVD-диска, проброс портов из хостовой машины в гостевую ОС и т.д. В прошлом году у нас был материал «Прокачиваем виртуальную машину», где мы уже рассматривали API VirtualBox’а. Тогда из-за отсутствия вызовов для управления поведением гостевой системы (например, запуска приложений) нам пришлось использовать API VMware с более продвинутыми возможностями. Сейчас же API VirtualBox сделала два шага вперед, и мы вполне могли обойтись без использования платной VMware.

Трик 4. Снифаем весь трафик виртуальной машины

Недаром во время установки VirtualBox под винду выводятся предупреждения, что все сетевые подключения будут на небольшое количество времени отключены. Программа устанавливает в систему дополнительные сетевые драйвера и виртуальные сетевые адаптеры. Их можно найти через диспетчер устройств: «VirtualBox Host-Only Ethernet Adapter» — то, о чем я говорю. Весь трафик гостевой системы, конечно же, проходит через эти вспомогательные элементы. И вот за что разработчикам хочется в очередной раз сказать «Спасибо», так это за возможность записать весь трафик напрямую в pcap-файл. Да, для перехвата пакетов можно было воспользоваться и обычным сниффером (причем как под гостевой, так и под хостовой системой), но используя эту встроенную возможность VirtualBox, ты получаешь в распоряжение лог абсолютно всех пакетов, который отправила или получила гостевая ОС. Для включения записи сетевого трафика достаточно двух команд:

VirtualBox - одна из самых популярных систем виртуализации с открытым исходным кодом для Windows и Linux. Из-за бесплатного распространения программа завоевала огромную популярность, а разработчики добавили множество полезных возможностей. Обычные пользователи и я в том числе, привыкли пользоваться VirtualBox в графическом интерфейсе.

Это просто и удобно. Однако, если вы установите VirtualBox на сервер, то там не будет графического интерфейса. Но вы можете сделать всё то же самое и даже больше с помощью команд консоли VirtualBox. Этих команд очень много. В этой статье мы рассмотрим самые полезные команды консоли VirtualBox. К концу статьи у вас будет полностью настроенная и рабочая виртуальная машина.

Основные команды VirtualBox

Управление виртуальными машинами в терминале осуществляется с помощью команды VBoxManage. Она имеет довольно простой синтаксис:

$ VBoxManage общие_опции команда опции_команды

Я не буду здесь рассматривать все опции и команды VirtualBox, рассмотрим их в процессе работы. По умолчанию все виртуальные машины находятся в директории .config/VirtualBox/Machines. Однако вы можете изменить этот путь с помощью команды setproperty. Например, /home/virtualbox/:

VBoxManage setproperty machinefolder /home/virtualbox/

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

Первым делом надо создать новую виртуальную машину, с которой мы будем работать. Каждая виртуальная машина, это не что иное, как XML файл с настройками. Создание виртуальной машины VirtualBox выполняется с помощью команды VBoxManage createvm. Вот её основные опции:

  • --name - имя машины;
  • --ostype - вид операционной системы;
  • --register - регистрирует виртуальную машину, иначе будет просто создан XML файл с настройками.

Список доступных видов операционных систем можно посмотреть командой:

VBoxManage list ostypes


Давайте создадим виртуальную машину для Ubuntu и зарегистрируем её в системе:

VBoxManage createvm --name "Ubuntu1804" --ostype "Ubuntu_64" --default --register


Виртуальная машина успешно создана и добавлена.

2. Добавление существующей машины

Если вы перенесли виртуальную машину с другой системы, то можете захотеть добавить её. Это аналог пункта открыть в меню графического интерфейса. Используйте команду VBoxManage registervm, которой в качестве аргумента надо передать путь к файлу виртуальной машины:

VBoxManage registervm /home/sergiy/VirtualBox VMs/Ubuntu1804/Ubuntu1804.vbox

3. Список виртуальных машин

Чтобы убедится, что всё работает вы можете захотеть посмотреть список виртуальных машин. Это можно сделать командой:

VBoxManage list vms


Или же можно посмотреть список запущенных виртуальных машин:

VBoxManage list runningvms

Чтобы увидеть более подробную информацию об виртуальных машинах используйте опцию --long:

VBoxManage list vms --long


4. Настройка хранилища машины

По умолчанию создается только конфигурация виртуальной машины. У неё нет никакого хранилища, на котором будет размещена операционная система. Сейчас мы его добавим. Сначала надо создать жесткий диск в папке рядом с файлом виртуальной машины:

VBoxManage createhd --filename "/home/sergiy/VirtualBox VMs/Ubuntu1804/Ubuntu1804.vdi" --size 10000 --format VDI


Здесь надо передать путь к файлу будущего диска и его размер в мегабайтах. Я создаю диск на 10 гигабайт. Этого должно хватить для запуска тестовой системы. Затем, с помощью команд storagectl и storageattach добавьте контролер SATA и подключите к нему этот диск:

VBoxManage storagectl "Ubuntu1804" --name "SATA Controller" --add sata --controller IntelAhci

VBoxManage storageattach "Ubuntu1804" --storagectl "SATA Controller" --port 0 --device 0 --type hdd --medium "/home/sergiy/VirtualBox VMs/Ubuntu1804/Ubuntu1804.vdi"


В параметре --medium надо передать путь к файлу диска, который вы собираетесь подключить. Если вы хотите чтобы машина загрузилась из ISO образа, то вам ещё понадобится IDE контроллер:

VBoxManage storagectl "Ubuntu1804" --name "IDE Controller" --add ide --controller PIIX4

Затем можно подключить к нему свой образ:

VBoxManage storageattach "Ubuntu1804" --storagectl "IDE Controller" --port 1 --device 0 --type dvddrive --medium


5. Удаленный доступ

Так как виртуальная машина на сервере, то доступа к графическому интерфейсу нет, но нам надо получить доступ к самой машине. Для этого мы можем воспользоваться протоколом RDP. Чтобы включить удаленный доступ используйте команду:

VBoxManage modifyvm "Ubuntu1804" --vrde on

Ещё можно изменить порт RDP, на тот, который вы хотите, например, 33891:

VBoxManage modifyvm "Ubuntu1804" --vrdeport 33891

Уже сейчас мы можем получить доступ к этой машине, но давайте ещё настроим авторизацию по паролю, чтобы никто посторонний не мог получить к ней доступ если сервер доступен из интернета. Сначала установим тип авторизации external:

VBoxManage modifyvm Ubuntu1804 --vrdeauthtype external

Укажем, что надо использовать модуль авторизации VBoxAuthSimple:

VBoxManage setproperty vrdeauthlibrary VBoxAuthSimple


Осталось выбрать имя пользователя и пароль. Давайте это будет losst_user и losst_password. Создадим хэш для нашего пароля:

VBoxManage internalcommands passwordhash losst_password

Осталось связать этот хэш с именем пользователя losst_user для нашей машины:

VBoxManage setextradata "Ubuntu1804" "VBoxAuthSimple/users/losst_user" 4a26e3cde3647806539e746d4b7fa27401af9198ac0da1a5122e8851648566d2


Настройка rdp virtualbox завершена и теперь машина будет доступна по сети. К ней можно будет подключится с помощью утилиты Reminna. Осталось только запустить её.

6. Установка VirtualBox Extpack

Если вы хотите использовать удаленный доступ VirtualBox, вам нужно установить набор расширений VirtualBox для вашей версии программы. Сначала посмотрите не установлены ли у вас эти расширения:

VBoxManage list extpacks

Система сообщает, что у меня установлен один набор расширений. Нас будет интересовать строчка VRDE Module. Её значение должно быть RDP, не VNC и не что либо другое.

Чтобы установить набор расширений сначала посмотрите вашу версию VirtualBox:

Для моей версии 5.2 наборы расширений можно найти на этой странице. Вы без труда найдете нужный extpack с помощью поиска. Затем загрузите его на сервер и установите командой:

VBoxManage extpack install

После установки он появится в списке.

7. Настройка оборудования

Как я уже говорил, по умолчанию машине выдаются самые минимальные ресурсы, с таким количеством ресурсов смогут работать мало современных систем. Поэтому давайте дадим виртуальной машине больше оперативной памяти:

VBoxManage modifyvm "Ubuntu1804" --memory 2048

Чтобы увеличить объем видеопамяти в virtualbox выполните:

VBoxManage modifyvm "Ubuntu1804" --vram 128

Количество памяти надо указывать в мегабайтах. Чтобы изменения работали, машина должна быть выключена. Далее дадим машине два ядра процессора:

VBoxManage modifyvm "Ubuntu1804" --cpus 2

Вот, с такими параметрами уже можно работать.

8. Управление состоянием машины

Чтобы запустить виртуальную машину используйте команду startvm. Так как мы запускаем её без графики, то следует использовать опцию --type headless:

VBoxManage startvm "Ubuntu1804" --type headless


После того, как машина была запущена, вы можете открыть её с помощью reminna:

Далее, для управления запущенной машиной используется команда controlvm. Она позволяет поставить машину на паузу или остановить её. Чтобы поставить машину на паузу используйте команду pause:

VBoxManage controlvm "Ubuntu1804" pause

Для вывода машины из состояния паузы:

VBoxManage controlvm "Ubuntu1804" resume

Для полного выключения машины:

VBoxManage controlvm "Ubuntu1804" poweroff

Если вы не хотите выключать машину, можно сохранить её состояние:

VBoxManage controlvm "Ubuntu1804" savestate

Или можно послать сигнал нажатия на кнопку выключения:

VBoxManage controlvm "Ubuntu1804" acpipowerbutton

Если работа вашей машины била прервана из-за перезагрузки компьютера или выключения света может произойти ситуация, что она останется заблокированной и вы не сможете её запустить. Для решения этой проблемы используйте команду:

VBoxManage startvm "Ubuntu1804" --type emergencystop

Наша статья подходит к завершению, но это далеко не все команды консоли VirtualBox.

9. Просмотр информации о машине

Посмотреть информацию о текущем состоянии машины, а также об её оборудовании можно с помощью команды showvminfo:

VBoxManage showvminfo "Ubuntu1804"

Если вас интересует только состояние машины, можно отфильтровать вывод virtualbox cli утилитой grep:

VBoxManage showvminfo "Ubuntu1804" | grep State

Выводы

В этой статье мы рассмотрели полезные команды VirtualBox CLI, которые позволят вам полноценно управлять виртуальными машинами на сервере. Я не стал подробно рассказывать про настройку размера дисков, вы можете обо всём этом почитать в статье как увеличить размер диска VirtualBox. Конечно, осталось много других интересных команд, которые не поместились в эту статью, таких как настройка автоматической установки системы, настройка сети, изменение оборудование на лету и много другое.

Нет похожих записей


Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.

Управление VirtualBox из консоли с помощью vboxmanage

Давайте же посмотрим, как все, что вы когда-либо можете захотеть от виртуалок, делается с помощью vboxmanage.

Просмотреть настройки VirtualBox:

Изменение настроек, например, пути до каталога, гда хранятся виртуалки:

vboxmanage setproperty machinefolder / home / eax / virtualbox

Список поддерживаемых типов виртуалок:

vboxmanage list ostypes
vboxmanage list ostypes | egrep ^ID

Создаем новую виртуалку:

vboxmanage createvm --name ubuntu1604 --ostype Ubuntu_64 --register vboxmanage modifyvm ubuntu1604 --cpus 1 --memory 512 --audio none \
--usb off --acpi on --boot1 dvd --nic1 nat

Создаем жесткий диск размером 10 Гб (место по дэфолту не преаллоцируется):

vboxmanage createhd \
--filename / home / eax / virtualbox / ubuntu1604 / ubuntu1604.vdi \
--size 10000

Цепляем созданный жесткий диск к виртуалке:

vboxmanage storagectl ubuntu1604 --name ide-controller --add ide
vboxmanage storageattach ubuntu1604 --storagectl ide-controller \
--port 0 --device 0 --type hdd \
--medium / home / eax / virtualbox / ubuntu1604 / ubuntu1604.vdi

Цепляем к ВМ ISO-образ, с которого будет происходить установка системы:

vboxmanage storageattach ubuntu1604 --storagectl ide-controller \
--port 0 --device 1 --type dvddrive \
--medium / home / eax / data / iso / ubuntu-16.04.1-server-amd64.iso

Включаем доступ к ВМ по VNC:

vboxmanage modifyvm ubuntu1604 --vrde on
vboxmanage modifyvm ubuntu1604 --vrdeaddress 127.0.0.1
vboxmanage modifyvm ubuntu1604 --vrdeport 3001
vboxmanage modifyvm ubuntu1604 --vrdeproperty VNCPassword = "secret"

Я лично для подключения использую TigerVNC (форк TightVNC):

Чтобы каждый раз не вводить пароль, можно сказать:

vncviewer localhost: 3001 PasswordFile = / home / eax / temp / vnc.password

Посмотреть свойства виртуальной машины (узнать номер порта VNC):

Для некоторых систем установочный диск отключается от ВМ автоматически по окончанию установки. Если этого не произошло, говорим:

vboxmanage storageattach archlinux1 --storagectl ide-controller \
--port 0 --device 1 --type dvddrive --medium emptydrive

Pause, Resume, Poweroff:

vboxmanage controlvm archlinux1 pause
vboxmanage controlvm archlinux1 resume
vboxmanage controlvm archlinux1 poweroff

Проброс портов настраивается так (ВМ должна быть остановлена):

vboxmanage modifyvm ubuntu1604 --natpf1 "ssh-forwarding,tcp,,22001,,22"

После этого в виртуалку можно будет зайти по SSH таким образом:

Просмотр списка правил перенаправления портов:

vboxmanage modifyvm ubuntu1604 --natpf1 delete ssh-forwarding

Список всех виртуалок:

vboxmanage list vms
vboxmanage list vms --long | egrep '^(Name|State)'

Список работающих виртуалок:

Переименовать ВМ (при этом переименовывается и ее каталог):

Создать полный клон ВМ:

Создание новой сети:

vboxmanage natnetwork add --netname UbuntuNat --network 10.0.4.0 / 24 \
--enable --dhcp on --ipv6 off vboxmanage natnetwork modify --netname UbuntuNat --ipv6 on

Подключение виртуалок к NAT-сети:

vboxmanage modifyvm ubuntu1 --nic2 natnetwork --nat-network2 UbuntuNat
vboxmanage modifyvm ubuntu2 --nic2 natnetwork --nat-network2 UbuntuNat

Важно! Скорее всего, гостевая операционная система окажется не настроена для использования второго интерфейса, если вы добавили его после установки. В Ubuntu для добавления нового интерфейса нужно отредактировать файл /etc/network/interfaces, для Arch Linux см заметку Как я устанавливал Arch Linux на свой ноутбук.

Удалить виртуалку и все ассоциированные с ней файлы, в том числе и диски:

Это, разумеется, далеко не полный список возможностей vboxmanage. Например, мы не рассмотрели использование снапшотов, соединение машин при помощи последовательного порта (например, для отладки ядра операционной системы), работу с разделяемыми каталогами, и многе другое. Подробности вы найдете в официальной документации и vboxmanage --help .

Вооруженный приведенными выше знаниями, я написал скрипт на Python под названием vm, который управляет виртуальными машинами в точности так, как мне это удобно. Поэтому я считаю, что Vagrant не нужен. А вы что скажете?

Если вы часто запускаете и останавливаете виртуальные машины VirtualBox, то у вас может возникнуть желание как-то автоматизировать или упростить этот процесс. Это можно сделать с помощью консольной программы « vboxmanage », которая находится в папке « C:\Program Files\Oracle\VirtualBox ».

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

Просмотр списка виртуальных машин в командной строке

Просмотр списка виртуальных машин в командной строке

Чтобы перечислить только запущенные виртуальные машины, используйте команду « vboxmanage list runningvms »

Запуск виртуальной машины через командную строку

Чтобы запустить виртуальную машину VirtualBox через командную строку, используйте команду « vboxmanage startvm <name or UUID> ». Где, name – это название ВМ, а UUID – это уникальный идентификатор, который указывается в фигурных скобках. UUID можно узнать с помощью команды « vboxmanage list vms », которая рассматривалась выше.

Например, для запуска виртуальной машины можно использовать команду с указанием имени :

Или команду с указанием UUID :

Запуск виртуальной машины через командную строку

Запуск виртуальной машины без интерфейса

Для запуска виртуальной машины VirtualBox без интерфейса к данной команде нужно добавить параметр --type , который управляет запуском. Так использование --type headless запустит виртуальную машину без графического интерфейса (в фоновом режиме).

Например, для запуска машины « Ubuntu » без интерфейса нужно выполнить:

Запуск виртуальной машины без интерфейса

Для взаимодействия с такой машиной нужно будет использовать SSH. Более подробно об этом можно почитать в нашей статье о подключении к виртуальной машине VirtualBox через SSH.

Остановка запущенной виртуальной машины

Для того чтобы остановить виртуальную машину VirtualBox через командную строку можно использовать команду « vboxmanage controlvm <name or UUID> poweroff ».

Например, для того чтобы выключить виртуальную машину « Ubuntu » нужно выполнить следующую команду:

Остановка запущенной виртуальной машины

Как и в случае запуска, можно указать название ВМ или ее UUID .

Другие команды для управления виртуальной машиной

Список всех доступных команд можно получить в официальной документации VirtualBox. Здесь же мы рассмотрим несколько примеров, которые могут быть вам полезны.

Читайте также: