Oracle vm virtualbox команды
Если хоть раз попробуешь установить 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 ostypesvboxmanage 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 idevboxmanage 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 onvboxmanage 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 pausevboxmanage 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 vmsvboxmanage 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 UbuntuNatvboxmanage 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. Здесь же мы рассмотрим несколько примеров, которые могут быть вам полезны.
Читайте также: