2.9.15.1.3 Автостарт виртуальной машины в VirtualBox при запуске системы
Скачать документ
Окружение
- Версия РЕД ОС: 7.3
- Конфигурация: Рабочая станция
- Версия ПО: VirtualBox 6.1.28
Настройка сервиса автозапуска виртуальной машины
Запустите терминал и выполните команду с привилегиями пользователя root:
echo -e "VBOXAUTOSTART_DB=/etc/vbox\nVBOXAUTOSTART_CONFIG=/etc/vbox/autostartvm.cfg" | tee /etc/default/virtualbox
VBOXAUTOSTART_DB — определяет абсолютный путь к каталогу базы данных автозапуска, обычно это / etc / vbox.
VBOXAUTOSTART_CONFIG — определяет путь к конфигурации автозапуска виртуальной машины. Настройка конфигурации автостарта, создайте файл.
nano /etc/vbox/autostartvm.cfg
Содержимое файла (смените user — на вашего пользователя):
default_policy = deny
user = {allow = true
startup_delay = 10
}
- default_policy — определяет, разрешать или запрещать автоматический запуск виртуальной машины по умолчанию. В примере выше мы отказали кому-либо в автоматическом запуске виртуальной машины и явно разрешили одному пользователю user.
- username (user) — с помощью политики запрета по умолчанию вы можете определить конкретных пользователей, которым разрешено автоматически запускать виртуальную машину (allow = trues). Вы также можете определить, как долго задерживать запуск виртуальной машины. 10 секунд используется в этой демонстрации.
Определение владельца директории базы данных автозапуска
Для определения владельца директории базы данных автозапуска выполните следующие команды:
usermod -aG vboxusers user chgrp vboxusers /etc/vbox
Назначьте группе разрешения на запись в каталоге базы данных автозапуска:
chmod -R 777 /etc/vbox/
Как user, вы можете включить автозапуск для отдельных машин. Для этого необходимо сначала определить путь к каталогу базы данных.
VBoxManage setproperty autostartdbpath /etc/vbox/
Добавление виртуальной машины в автозапуск
vboxmanage modifyvm redos --autostart-enabled on
где redos — это UUID или имя вашей виртуальной машины.
Далее нужно создать скрипт для автозапуска машины:
nano /etc/default/start
#!/bin/bash
VBoxAutostart --start -c /etc/vbox/autostartvm.cfg
Сделайте созданный файл исполняемым:
chmod +x /etc/default/start
Проверьте, что файл выполняется успешно:
/etc/default/start
Пример вывода результата команды:
Oracle VM VirtualBox Autostart 6.1.16_REDSOFT (C) 2021 Oracle Corporation All rights reserved. 00:00:00.000404 main VirtualBox Autostart 6.1.16_REDSOFT r140961 linux.amd64 (Apr 12 2021 17:37:04) release log 00:00:00.000406 main Log opened 2021-05-24T06:54:30.722810000Z 00:00:00.000407 main Build Type: release 00:00:00.000411 main OS Product: Linux 00:00:00.000411 main OS Release: 5.10.29-1.el7.x86_64 00:00:00.000412 main OS Version: #1 SMP Mon Apr 12 13:55:18 MSK 2021 00:00:00.000445 main DMI Product Name: System Product Name 00:00:00.000452 main DMI Product Version: System Version 00:00:00.000457 main Firmware type: UEFI 00:00:00.001190 main Secure Boot: Disabled 00:00:00.001234 main Host RAM: 7826MB (7.6GB) total, 2378MB (2.3GB) available 00:00:00.001238 main Executable: /usr/lib64/virtualbox/VBoxAutostart 00:00:00.001239 main Process ID: 9566 00:00:00.001239 main Package type: LINUX_64BITS_GENERIC (OSE) 00:00:00.002388 main IPC socket path: /tmp/.vbox-wolandius-ipc/ipcd
Виртуальная машина должна будет запуститься в virtualbox. Далее создайте сервис, который будет использоваться для автоматического запуска виртуальной машины (смените user — на вашего пользователя):
nano /etc/systemd/system/vmsautostart.service
[Unit]
Description=vms autostart
Before=graphical.target
[Service]
ExecStart=/etc/default/start
Type=oneshot
Gr oup=vboxusers
User=user
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
Предоставьте необходимые права следующей командой:
chmod 664 /etc/systemd/system/vmsautostart.service
Добавьте сервис в автозагрузку и запустите его:
systemctl daemon-reload systemctl enable vmsautostart.service systemctl start vmsautostart.service
При успешном старте сервиса проверьте virtualbox на наличие работающей машины. При перезагрузке системы машина запустится до ввода пароля пользователя. Для отключения автозапуска виртуальной машины выполните команды:
vboxmanage modifyvm redos --autostart-enabled off
systemctl disable vmsautostart.service
systemctl stop vmsautostart.service
Эта информация оказалась полезной? ДА НЕТ
Дата последнего изменения: 30.10.2024
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Есть у одних моих клиентов хитрая программа, защита которой привязана к аппаратной части пк. Мы посадили эту программу на виртуальную машину virtualbox, а виртуалбокс установили на один из виндовых серверов. Все бы ничего, но при перезагрузке физического сервера приходилось логиниться на него, запускать виртуальную машину и оставлять все это добро работать в терминальной сессии. Неудобно.
Оказалось, что можно запросто организовать автоматический запуск виртуальных машин при загрузке сервера через VirtualboxVmService. Качаем программу отсюда http://sourceforge.net/projects/vboxvmservice/ Инсталлируем, чуть подправляем конфиг, перезагружаемся — и все работает (в идеале).
Нюанс: у нас установлен Virtualbox устаревшей версии. При попытке старта созданной программой службы мы получили в логе VBoxVmService.log сообщение:
Error creating VirtualBox instance! rc = 0x80004002
Погуглил. Наткнулся на предложение обновить версию VirtualboxVmService в соответствии с версией самого виртуалбокса. Догадался, что у нас с точностью до наоборот: для старой версии виртуалбокса нужен старый VirtualboxVmService. Скачал устаревшую версию и все заработало с полпинка!
Документация на VirtualboxVmService.
На всякий случай приведу перевод документации текущей версии 4.1
##############################################################################
#
# ЧАСТЬ 1 — SETUP
#
##############################################################################
Шаг 1.
Убедитесь что Virtualbox установлен и ваши виртуальные машины могут стартовать с помощью менеджера virtualbox без каких либо проблем. Выключите виртуальные машины и закройте VirtualBox Manager.
ВАЖНО: Если вы хотите управлять вашей виртуальной машиной с помощью VRDP, Включите поддержку удаленного монитора в настройках display settings и определите соответствующий порт для каждой виртуальной машины индивидуально (т.е 3010 для Vm0, 3020 для Vm1, и т.д). Не используйте для этих целей стандартный порт 3389!
Шаг 2.
Скачайте и распакуйте последний релиз VBoxVmService в c:\vms.
Шаг 3
Откройте VBoxVmService.ini в любом текстовом редакторе и отредактируйте под ваши нужды. Этот файл содержит пример установки с двумя виртуальными машинами.
Ключ / Значение Описание
——————————————————————————
[Settings]
ServiceName=VBoxVmService Имя службы
RunAsUser=DomainName\UserName Имя пользователя под которым сервис будет стартовать. Процесс службы залогинится под этим пользователем. Если пользователь принадлежит к встроенному домену (т.е локальный) вы должны определить как .\UserName.
UserPassword=xxxxxxxx ДОЛЖЕН БЫТЬ ОПРЕДЕЛЕН! УСТАНОВИТЕ INI ФАЙЛУ ДОСТУП НА ЧТЕНИЕ ТОЛЬКО ДЛЯ ВАС И СИСТЕМЫ
VBOX_USER_HOME=C:\Users\YOUR_NAME_HERE\.VirtualBox Путь к дирректории .VirtualBox для вашего профиля. Она обычно располагается в персональной папке пользователя.
RunWebService=no Стартовать или нет VBoxWebSrv.exe, VirtualBox HTTP веб сервер автоматически. Может быть «yes» или «no». Оставьте ее в «no» если вы не знаете что это.
PauseShutdown=5000 Параметр используется для замедления выключения компьютера чтобы предотвратить крах виртуальной машины при выключении или перезагрузке. (5000=5 секунд) Заметте что Windows имеет ограниченя как долго контроллер сервиса будет ждать когда система перезагрузится. Лимит времени определен в переменной WaitToKillServiceTimeout в следующей ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control. Ваше значение PauseShutdown не должно превышать это значение в реестре.
[Vm0]
VmName=ubuntu Имя для запуска VM (Чуствительно к регистру!)
ShutdownMethod=savestate Метод выключения («savestate», или «acpipowerbutton»). Когда используется «savestate», состояние машины сохраняется и может быть возобновлено когда она старует в следующий раз. Когда используется «acpipowerbutton» , VM просто выключится. Если ваша VM долго выключается рекомендуется использовать savestate, который завершает намного быстрее.
AutoStart=yes Будет или нет VM стартовать автоматически когда VBoxVmService работает. По умолчанию установлено в «yes».
[Vm1]
VmName=winxp Как в можете видеть значения ниже почти повторяются для каждой [VmX]-секции файла
ShutdownMethod=acpipowerbutton
AutoStart=no Эта VM не будет стартовать автоматически.
##############################################################################
#
# ЧАСТЬ II — INSTALLATION
#
##############################################################################
Шаг 1. (для WINXP / SERVER2003) Запустите CMD (Командная строка) из вашего старт меню.
Шаг 1. (для VISTA / SERVER2008 / WIN7) Кликните правой кнопкой мыши по CMD (командная строка) и выберете «Запуск от имени администратора» в контекстном меню.
Step 2. Инсталируйте сервис. В терминальном окне наберите:
cd C:\vms [ENTER]
VmServiceControl.exe -i [ENTER]
Шаг 3. Перезагрузите вашу систему.
Если все сделано правильно, вы сможете подключиться к вашей VM с помощью VRDP клиента (или ssh клиента, если вы сконфигурировали ssh сервер внутри вашей VM). Если нет то обратитесь к секции TROUBLESHOOTING которая расположена ниже для отладки.
##############################################################################
#
# ЧАСТЬ III — UNINSTALL
#
##############################################################################
Шаг 1. (для WINXP / SERVER2003) Запустите CMD (Командная строка) из вашего старт меню.
Шаг 1. (для VISTA / SERVER2008 / WIN7) Кликните правой мышкой по CMD (Командная строка) и выберете «Run as Administrator» из контекстного меню.
Шаг 2.[/b] Остановите VBoxVmService сервис. Внутри терминального окна наберите:
cd C:\vms [ENTER]
VmServiceControl.exe -k [ENTER]
Замечание: вы можете также остановить сервис из консоли управления компьютером.
Шаг 3. Удалите сервис . продолжайте в терминальном окне набирать:
VmServiceControl.exe -u [ENTER]
Шаг 4. Удалите директорию с программой(В этом примере «c:\vms»).
Шаг 5. Вы удалили VBoxVmService из вашей системы.
##############################################################################
#
# ЧАСТЬ IV — TROUBLESHOOTING
#
##############################################################################
Если сервис не поднимает вашу VM как вы хотите, попробуйте следующее:
Осторожно перепроверьте настройки которые вы сделали в «VBoxVmService.ini».
Уменьшите количество ваших виртуальных машин до одной (= только [Settings] и секция [Vm0] в вашем ini файле) в вашем ini файле , для отладки
Переключитесь в командную строку, cd в VBoxVmService директорию и наберите:
VmServiceControl.exe -su 0 [ENTER]
чтобы поднять VM которую вы определили в секции [Vm0] файла «VBoxVmService.ini».
Если вы успешно подняли VM, вы увидите в диспетчере задач запущенный процесс «VBoxHeadless.exe» под определенным пользователем
Комманда:
VmServiceControl.exe -sd 0 [ENTER]
может быть использована для проверки вывода во время падения процесса[Vm0]. После этого, не должно быть запущенного «VBoxHeadless.exe» процесса. В дополнении, вы должны увидеть то что процесс «VBoxSVC.exe» завершится в скором времени после успешного завершения «VBoxHeadless.exe».
И команда:
VmServiceControl.exe -st 0 [ENTER]
может быть использована для проверки статуса целевой VM [Vm0].
Читайте лог файл!
Если вы видите «Could not find a registered machine named…», проверьте переменную среды VBOX_USER_HOME которая должна быть корректно установлена.
Если вы сделали ошибку в VBOX_USER_HOME, какбы то ни было, исправление ее в VBoxVmService.ini не достаточно. Потому что значения были записаны в переменные среды во время инсталляции. Вы должны открыть Панель управления->Система->Расширенные настройки системы->Дополнительно-Переменные среды, и пофиксить их здесь. Пожалуйста также убедитесь что VBOX_USER_HOMЕ установлена как системная переменная, а не как пользовательская.
После установки и каждый раз когда вы изменяете VBOX_USER_HOME, требеется перезагрузка системы для того чтобы VBoxVmService работал корректно.
Если проблема не устранена, опишите ее здесь на форуме, может кто и поможет.
VirtualBox – это мощное, но бесплатное программное обеспечение для виртуализации, которое позволяет запускать несколько операционных систем на одной машине. Это универсальный инструмент для тестирования, разработки или изучения новых сред ОС.
Однако одна функция, которая может значительно повысить удобство и эффективность использования VirtualBox, – это возможность настроить автоматический запуск виртуальных машин (ВМ) на хост-системе Linux.
VM Autostart
Представьте себе сервер на виртуальной машине, который должен работать круглосуточно, или приложение, требующее частого тестирования на разных операционных системах.
Интересно: Выпущен VirtualBox 7.1.6
В этих и многих других сценариях возможность автоматического запуска виртуальных машин при загрузке системы может сэкономить вам огромное количество времени и хлопот.
Кроме того, вам больше не нужно вручную запускать каждую виртуальную машину при каждом перезапуске хост-системы. С помощью нескольких простых настроек ваши виртуальные машины могут оживать автоматически и быть готовыми к использованию в любой момент.
VirtualBox: Как автозапускать виртуальные машины при загрузке Linux
Добавление пользователя в группу vboxusers
Прежде чем мы перейдем к основной задаче, нам нужно проверить несколько вещей. Самое важное – убедиться, что пользователь, с правами которого виртуальные машины VirtualBox будут автоматически запускаться при загрузке, должен быть членом группы vboxusers
.
Мы предполагаем, что это ваша учетная запись пользователя, которую вы используете для всех действий на рабочем столе Linux. Чтобы узнать, в каких группах она состоит, выполните эту команду:
groups $USER
Вы должны увидеть vboxusers в списке результатов, как на изображении выше. Если вы его не видите, не волнуйтесь! Вы можете быстро добавить своего пользователя в эту группу с помощью следующей команды:
sudo usermod -a -G vboxusers $USER
Перезагрузите компьютер или перезайдите в свою учетную запись, чтобы изменения вступили в силу.
Создание необходимых служб Systemd
Для достижения нашей цели, а именно, чтобы виртуальные машины VirtualBox запускались самостоятельно после перезагрузки системы, мы будем использовать некоторые функции, предоставляемые systemd. Как я объясню, сделать это довольно просто.
Необходимо создать файл name@example.com в каталоге /etc/systemd/system/
. Затем скопируйте и вставьте в него следующее содержимое.
sudo nano /etc/systemd/system/name@example.com
[Unit] Description=VBox Virtual Machine %i Service Requires=systemd-modules-load.service After=systemd-modules-load.service [Service] User=linuxiac Group=vboxusers ExecStart=/usr/bin/VBoxManage startvm %i --type headless ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton RemainAfterExit=yes [Install] WantedBy=multi-user.target
Не забудьте в части User=… заменить пользователя на того, которого вы используете.
Но теперь давайте разберем, что мы только что сделали, особенно для тех, кто, возможно, не очень хорошо знаком с systemd. Что означает символ @ в имени файла?
В systemd @ обозначает имя экземпляра файла шаблонов. Шаблонные файлы модулей позволяют создавать службы, которые можно запускать с разными экземплярами, каждый из которых имеет отдельную конфигурацию или окружение.
Это особенно полезно, когда вы хотите запустить несколько экземпляров одной и той же службы, каждый из которых настроен немного по-разному, без необходимости создавать отдельный файл модулей для каждого экземпляра. Это как раз наш случай.
Теперь давайте перечислим доступные виртуальные машины VirtualBox:
VBoxManage list vms
Как видно из изображения выше, у нас есть два варианта: debian и ubuntu. Мы упомянули эти имена, потому что нам нужно будет выбрать одно из них для следующей службы systemd, которую мы создаем. Мы решили выбрать ubuntu.
Чтобы настроить его автоматический запуск, просто выполните приведенную ниже команду. После символа @ добавьте имя, которое вы выбрали из списка виртуальных машин VirtualBox. Для нас это имя – ubuntu.
sudo systemctl enable vboxvmservice@ubuntu
Как видите, наш новый сервис systemd, vboxvmservice@ubuntu, был автоматически привязан к name@example.com. Это означает, что все, что следует за символом @, в данном случае ubuntu, будет использовано в службе и заменено на место переменной %i.
И наконец, перезагрузите конфигурационные файлы systemd:
sudo systemctl daemon-reload
Тестирование автозапуска виртуальной машины VirtualBox
Итак, настал ответственный момент. Перезагрузите свою систему Linux. Когда вы снова войдете в систему, вы обнаружите, что виртуальная машина VirtualBox запущена. Поздравляем с хорошо выполненной работой!
Дополнительно вы можете проверить состояние службы systemd, выполнив:
sudo systemctl status vboxvmservice@ubuntu
Заключение
Настройка автоматического запуска виртуальных машин VirtualBox в Linux-системе дает значительные преимущества пользователям, желающим получить эффективную и упрощенную виртуализацию.
Успешная реализация означает отсутствие необходимости вручную запускать каждую ВМ при перезагрузке хост-системы, что экономит время и сокращает количество ручных операций.
Кроме того, этот метод обеспечивает постоянную доступность основных служб, работающих на ВМ, что делает его бесценным дополнением к набору инструментов любого пользователя VirtualBox.
VirtualBox – отличная платформа виртуализации, но в ней совершенно не заложен механизм автозапуска виртуальных машин. Иногда критически необходимо автоматизировать запуск виртуальной машины. В качестве примера разберем автостарт виртуальной машины при запуске Windows. Это отлично пригодится для того, чтобы автоматически запускать виртуальные машины после аварийной перезагрузки.
Режимы запуска виртуальных машин в VBoxManage
VBoxManage – консольное приложение для управления виртуальными машинами.
По умолчанию, менеджер обычно находится в папке: C:\ProgramFiles\Oracle\VirtualBox\VBoxManage.exe
Для запуска машины необходимо отправить ему команду startvm "Имя машины" --type headless
.
Режимы запуска:
gui
— запуск виртуальной машины с окном графического интерфейса, режим по умолчанию.
headless
— запуск виртуальной машины в фоновом режиме. Графический интерфейс, при необходимости, возможно открыть.
separate
— тоже самое, что и headless, но графический интерфейс запускается в отдельном процессе. Это экспериментальная функция, в этом режиме не работает 3D ускорение.
Настройка автозапуска виртуальных машин
Запускаем Планировщик заданий, для Windows 10 проще всего запустить через комбинацию «Win+R», затем taskschd.msc
.
Создаем задачу для пользователя. Выбираем пункт «Выполнять только для пользователей, вошедших в систему» и — Настроить для Windows 10.
Далее настраиваем триггер. Лучше включить отложенный запуск, чтобы вход в систему полностью завершился.
Затем настраиваем действие «Запуск программы». В аргументах к запуску указываем команду с именем виртуальной машины. startvm "Name VM" --type headless
.
На этом настройка задачи завершена.
Настройка автовхода в Windows 10
Скачиваем с сайта Microsoft программу Autologon.
Вводим свой пароль и жмем «Enable». В отличии от включения автовхода через ручную правку реестра, эта утилита сохраняет пароль пользователя в зашифрованном виде.
Настройка автоматической блокировки Windows 10
Чтобы не оставлять компьютер разблокированным, настроим автоматическую блокировку сеанса.
Для этого опять открываем планировщик заданий Windows и добавляем действие в задание по запуску виртуальной машины. rundll32.exe user32.dll,LockWorkStation
.
Это действие должно находится после действия по запуску машины.
Автозапуск гостевой виртуальной машины VirtualBox после загрузки хостовой машины на базе Windows реализуется следующим образом.
- Узнаем uid гостевой машины, в этом нам поможет файл VBoxManage.exe , который запускаем со следующими атрибутами :
VBoxManage list vms
В командной строке это выглядит следующим образом:
Собственно, данной командой мы вывели список гостевых операционных систем, созданных в VirtualBox’е. В данном случае их две. Рамкой обозначена та машина, для которой необходимо сделать автостарт:
2. Создаем ярлык для автостарта.
Для этого создаем ярлык для VirtualBox.exe и добавляем —startvm с указанием uid гостевой системы. Полностью команда в строке «Объект» будет выглядеть следующим образом:
«C:\Program Files\Oracle\VirtualBox\VirtualBox.exe» —comment «asterisk» —startvm «7c864814-257f-464f-a2d2-cef676a82b73»
3. Добавляем созданный ярлык в автозапуск и радуемся автоматической загрузке гостевых операционных систем VirtualBox!
Вы можете заказать данную услугу, а так же весь спектр услуг по IT-сопровождению вашей компании по телефону: +375 44 7688419 ИП Архипович Виталий Владимирович.