Запускаем виртуальную машину VirtualBox как службу Windows
VirtualBox — это популярный бесплатный гипервизор, производства компании Oracle. Не смотря на то, что сам программный продукт весьма и весьма богат на всевозможные настройки, некоторых важных вещей он сделать не в состоянии. К примеру — запуск виртуальной машины в фоне, как службу Windows. К счастью, для этой цели есть отдельная программа, и в этой статье мы разберем как ей пользоваться.
Использование программы VBoxVmService
Для запуска виртуальных машин под VirtualBox как службы очень удобно использовать программу под названием VBoxVmService, которую скачать можно здесь. После завершения скачивания, устанавливаем программу, в процессе установки по сути ничего, кроме нажатия кнопки «Далее» делать не нужно.
После установки переходим в папку с установленной программой (по умолчанию — C:\vms), открываем там файл VBoxVmService.ini, и начинаем его переделывать под свои нужды. Ниже описаны обязательные для редактирования настройки:
[Settings]
VBOX_USER_HOME — тут нужно указать путь к папке с виртуальными машинами.
[Vm0]
VmName — указываем имя виртуальной машины;
ShutdownMethod=savestate — метод завершения работы виртуалной машины, которых может быть два — «savestate» или «acpipowerbutton«. Первый при выключении сохраняет состояние виртуальной машины, и при включении как бы продолжит её работу, второй является как бы полноценным выключением компьютера;
AutoStart — запускать виртуальную машину автоматом, при включении компьютера? Возможные варианты — yes и no, в переводе думаю не нуждаются.
Допустим, если целью стоит запуск виртуальной машины с названием Linux-Debian, то файл настроек будет выглядеть следующим образом:
После окончания редактирования сохраняем файл, запускаем исполняемый файл VBoxVmService.exe с параметром -i , и перезагружаем компьютер.
После этих действий указанная виртуальная машина должна запуститься автоматически.
Автозапуск виртуальной машины VirtualBox
Если вы запускаете виртуальные машины VirtualBox на сервере, то скорее всего, захотите, чтобы они оставались запущенными даже после неожиданной перезагрузки сервера.
В этой небольшой статье мы рассмотрим как настроить автозапуск виртуальной машины VirtualBox с помощью системы инициализации systemd, которая сейчас используется повсеместно.
Автозапуск виртуальной машины в VirtualBox
Давайте создадим файл юнита, который будет управлять автозагрузкой. Для этого выполните такую команду:
sudo systemctl edit vbox@.service —full —force
В открывшемся редакторе вставьте такой текст:
Description=Virtual Box Guest %I
After=network.target vboxdrv.service
Before=runlevel2.target shutdown.target
[Service]
User=root
Group=root
Type=forking
Restart=no
TimeoutSec=5min
IgnoreSIGPIPE=no
KillMode=process
GuessMainPID=no
RemainAfterExit=yes
ExecStart=/usr/bin/VBoxManage startvm %i —type headless
ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton
[Install]
WantedBy=multi-user.target
С помощью этого юнита мы и будем делать автозапуск virtualbox linux. В этом примере я запускаю виртуальную машину от имени пользователя root, но вам нужно запускать её от того пользователя, к которому добавлены виртуальные машины и от имени которого VirtualBox обычно работает.
Сохраните изменения в файле и выполните следующую команду, чтобы система инициализации перечитала конфигурационные файлы с диска:
В нашем юнит файле мы предусмотрели возможность использования параметра, в котором передается имя или UUID идентификатор виртуальной машины. Если в имени машины есть пробел, то лучше использовать UUID, а иначе можно и имя.
Смотрим список виртуальных машин:
VBoxManage list vms
Теперь давайте запустим машину Ubutnu1804 с UUID ed0ce7dd-0ddb-46bf-913c-876671c4d1f1 с помощью systemd:
sudo systemctl start vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1
Если во время запуска произошла ошибка, вы можете посмотреть её выполнив:
В данном случае машина уже была запущена. Я остановил её и запустил ещё раз с уже помощью systemd. Смотрим статус виртуальной машины:
sudo systemctl status vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1
Если всё хорошо, то всё, что нам осталось, это добавить этот сервис в автозагрузку:
sudo systemctl enable vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1
Выводы
В этой статье мы разобрались как делается автозагрузка виртуальной машины virtualbox. Как видите, всё очень просто и удобно. Теперь ваши виртуальные машины будут всегда запущены.
Запуск VirtualBox в скрытом режиме
Как запустить виртуальную машину VirtualBox так, что бы пользователь этого не увидел?
Например, виртуальная машина XPprint занимается печатью на старом принтере (да, только под Windows XP).
Есть несколько вариантов.
Используем отдельную утилиту VboxHeadlessTray
Она позволяет обеспечить запуск виртуальной машины в скрытом режиме, иконка появляется в системном трее.
Скачиваем утилиту для соответствующей версии VirtualBox
Запускаем, видим нашу работающую машину
Если список VboxHeadlessTray пустой, то:
- или машина не запущена в VirtualBox (или вообще ее там нет)
- или версия VboxHeadlessTray не совпадает с версией VirtualBox
Далее – ОК и наша машина появляется в системном трее. Теперь осталось ее спрятать с панели задач и экрана.
“Go Headless” – вольный перевод “убрать голову”. Переход в режим без GUI (и обратно) происходит через перезапуск машины.
Готово – машина тихо работает и сидит в трее.
В скрытом варианте меню почти такое же
только теперь один пункт Open VirtualBox GUI -> открыть графический интерфейс VirtualBox.
GUI – это у нас англ. graphical user interface – на языке программистов это просто ГУЙ 🙂
P.S. И да. У нас же тихий запуск ? Не забудьте выключить звук в гостевой ОС :).
Иначе в процессе загрузки реального ПК услышите две мелодии вместо одной (обидно, да?):
- старт основной ОС Windows 7
- с паузой старт гостевой ОС Windows XP
Но к сожалению не всё хорошо…. Утилита при каждом завершении работы (или выходе из системы) создает в папке Snapshots файл sav с данными системы (оперативной памяти виртуальной машины) перед выходом
На примере Windows XP – это на уровне 100 Мб = за 10 завершений работы системы на диске образуется порядка 1 Гб ненужных файлов. И нигде это внутри не настраивается.
Читаем статью, как это исправить
Зачем вообще нужна папка Snapshots и файлы sav – читаем в статье
Пойдем вторым путем
Запускаем машину VirtualBox как службу Windows с помощью программы VBoxVmService
Из плюсов – нет привязки к конкретной версии VirtualBox. С программой VBoxVmService виртуальная машина запускается как сервис даже без логина пользователя в систему.
Видим финишное окно установки
На всё соглашаемся, читаем файл Howto.txt
Краткий вольный перевод:
- Part 1 – проверить, как работают виртуальные машины VirtualBox и все закрыть
- Part 2, Step 1 – запустить установщик (уже сделано)
- Part 2, Step 2 – внести свои параметры в файл VBoxVmService.ini
- Part 2, Step 3 – Reboot your system
Подробнее про параметры.
Переходим в папку с установленной программой (по умолчанию – C:\vms), открываем там файл VBoxVmService.ini и меняем нужные нам параметры.
Ниже описаны обязательные для редактирования настройки:
[Settings]
VBOX_USER_HOME – тут нужно указать путь к папке с виртуальными машинами.
[Vm0]
VmName – указываем имя виртуальной машины;
ShutdownMethod=savestate – метод завершения работы виртуальной машины, которых может быть два:
Первый при выключении сохраняет состояние виртуальной машины, и при включении как бы продолжит её работу, второй является как бы полноценным выключением компьютера
AutoStart – запускать виртуальную машину автоматом при включении компьютера. Возможные варианты – yes и no, в переводе думаю не нуждаются.
Допустим, если целью стоит запуск виртуальной машины с названием XPprint, то файл настроек будет выглядеть следующим образом:
После сохранения файла и перезагрузки видим в трее
XPprint запущена. В службах уже ничего корректировать не надо – служба в автоматическом режиме.
А как собственно в машину попасть? Интерфейс же не запущен.
Мы можем зайти в машину:
- или через удаленный рабочий стол RDP (необходимо заранее на нашей машине настроить сеть)
- или через доступ SSH (на машине заранее должен быть поднят сервер SSH)
Конечно, достаточно чудно бегают пакеты TCP для доступа к гостевой машине (с использованием RDP).
С хостовой машины через реальный сетевой адаптер пакет идет на роутер, он их отправляет на “нарисованный” сетевой адаптер гостевой машины (хм, а виртуальный сетевой адаптер сделан на базе реального хостовой машины – т.е. фактически и физически пакет TCP возвращается обратно по тем же самым проводам витой пары в ту же самую сетевую карту), и в конце концов пакет попадает в гостевую машину (которая “нарисована” внутри реальной хостовой машины).
Пикассо отдыхает…. Достаточно сильный уровень абстракций….
Осталось попробовать самый простой вариант
Запуск виртуальной машины VirtualBox в фоновом режиме
У кнопки “Запустить” есть несколько вариантов, в том числе и фоновый режим без интерфейса
Запускаем в фоновом режиме нужную машину, при необходимости обращаемся к ней через удаленный рабочий стол RDP (необходимо заранее на нашей машине настроить сеть).
А где здесь тихий режим запуска? Это же надо открыть менеджер VirtualBox и руками запустить машину? Можно – но не нужно.
VirtualBox умеет работать в режиме командной строки.
Вот список основных команд:
- Для того, чтобы посмотреть список существующих виртуальных машин, нужно выполнить
список будет примерно таким
- Запустить какую-либо машину
- Запустить без графического окна, в фоне, только для удаленного подключения, нужно указать опцию type как headless
- Выключение виртуальной машины
- Сохранение состояния и выключение
машина сохранит состояние и выключится.
Для тихого запуска нам нужно всего лишь сделать батник (файл с расширением bat) и положить его в автозагрузку Windows. При старте системы будет стартовать и виртуальная машина в фоне без пользовательского интерфейса.
Вот пример такого bat-файла
Да – просто Блокнот и команды, знакомые с детства.
Выходим из системы и снова заходим под любым пользователем.
Машина прекрасно стартует.
Да – и не забудем – у нас все-таки скрытый режим, не будем беспокоить пользователя лишними черными окнами, bat-файл будет выглядеть вот так
@echo off – отключить режим вывода команд на экран (кто там DOS помнит?). Символ @ перед командой echo используется для того, чтобы на экран не выводился и текст самой команды.
Еще почитать:
VirtualBox
Автоматический перехват порта USB VirtualBox
Запуск VirtualBox для нескольких пользователей
Как сохранить состояние виртуальной машины VirtualBox
Настройка сети VirtualBox
Общая папка VirtualBox для основной и гостевой ОС
Установка VirtualBox и создание машины
Вы можете сохранить ссылку на эту страницу себе на компьютер в виде htm файла