Главная >> Инструкции >> Автозапуск виртуальной машины VirtualBox

Автозапуск виртуальной машины 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 обычно работает.

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

systemctl daemon-reload

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

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

VBoxManage list vms

Теперь давайте запустим машину Ubutnu1804 с UUID ed0ce7dd-0ddb-46bf-913c-876671c4d1f1 с помощью systemd:

sudo systemctl start vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1

Если во время запуска произошла ошибка, вы можете посмотреть её выполнив:

journalctl -xe

В данном случае машина уже была запущена. Я остановил её и запустил ещё раз с уже помощью systemd. Смотрим статус виртуальной машины:

sudo systemctl status vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1

Если всё хорошо, то всё, что нам осталось, это добавить этот сервис в автозагрузку:

sudo systemctl enable vbox@ed0ce7dd-0ddb-46bf-913c-876671c4d1f1

Выводы

В этой статье мы разобрались как делается автозагрузка виртуальной машины virtualbox. Как видите, всё очень просто и удобно. Теперь ваши виртуальные машины будут всегда запущены.

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

12 комментариев к “Автозапуск виртуальной машины VirtualBox”

  1. добрый день сделал все как у вас, но при перезагрузки не запускается что может быть не подскажите?

    Ответить
  2. Спасибо за статью, очень пригодилось. Ещё нашёл в интернетах, что в ExecStop можно вместо acpipowerbutton указать savestate
    В таком случае вместо выключения виртуальной машины, будет выполнено сохранение текущего состояния.

    Ответить
  3. Все уже придумано ораклом, перевод выдержки из официального мануала:
    9.21. Запуск виртуальных машин во время загрузки системы

    Вы можете запускать виртуальные машины автоматически во время загрузки системы на платформах Linux, Oracle Solaris и Mac OS X для всех пользователей.
    9.21.1. Linux: запуск службы автозапуска с помощью init

    В Linux служба автозапуска активируется установкой двух переменных в /etc/default/virtualbox. Первый - это VBOXAUTOSTART_DB, который содержит абсолютный путь к каталогу автозапуска базы данных. Каталог должен иметь доступ на запись для каждого пользователя, который должен иметь возможность автоматически запускать виртуальные машины. Кроме того, в каталоге должен быть установлен липкий бит. Вторая переменная - это VBOXAUTOSTART_CONFIG, которая указывает службе на файл конфигурации автозапуска, который используется во время загрузки, чтобы определить, разрешить ли отдельным пользователям запускать виртуальную машину автоматически и настроить задержки запуска. Файл конфигурации может быть помещен в / etc / vbox и содержит несколько опций. Один из них - default_policy, который определяет, разрешает или запрещает служба автозапуска запуск виртуальной машины для пользователей, которых нет в списке исключений. Список исключений начинается с exception_list и содержит список с именами пользователей, разделенных запятыми. Кроме того, для каждого пользователя может быть настроена отдельная задержка запуска, чтобы избежать перегрузки хоста. Ниже приведен пример конфигурации:

    # Политика по умолчанию - запретить запуск виртуальной машины, другой вариант - «разрешить».
    default_policy = deny

    # Бобу разрешено запускать виртуальные машины, но запуск
    # будет отложен на 10 секунд
    bob = {
    allow = true
    startup_delay = 10
    }

    # Алисе не разрешено запускать виртуальные машины, полезно для исключения определенных пользователей
    # если политика по умолчанию разрешена.
    alice = {
    allow = false
    }

    Любой пользователь, который хочет включить автозапуск для отдельных компьютеров, должен указать путь к каталогу базы данных автозапуска с помощью следующей команды:

    VBoxManage setproperty autostartdbpath каталог_автозапуска

    8.8.9. Автозапуск виртуальных машин во время загрузки хост-системы

    Эти параметры настраивают функцию автозапуска виртуальной машины, которая автоматически запускает виртуальную машину при загрузке хост-системы. Обратите внимание, что есть предварительные условия, которые необходимо выполнить перед использованием этой функции. См. Раздел 9.21, «Запуск виртуальных машин во время загрузки системы».

    --autostart-enabled on | off: включает и отключает автозапуск виртуальной машины при загрузке хост-системы с использованием указанного имени пользователя.

    --autostart-delay : указывает задержку в секундах после загрузки хост-системы перед автозапуском виртуальной машины.

    Ответить
  4. при опросе статуса
    вьідает такое

    вер 07 18:45:46 serv1vvc systemd[1]: Started vbox@VM_1.service.
    вер 07 18:46:54 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:1: Assig>
    вер 07 18:46:54 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:2: Assig>
    вер 07 18:46:54 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:3: Assig>
    вер 07 18:47:14 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:1: Assig>
    вер 07 18:47:14 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:2: Assig>
    вер 07 18:47:14 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:3: Assig>
    вер 07 19:11:59 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:1: Assig>
    вер 07 19:11:59 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:2: Assig>
    вер 07 19:11:59 serv1vvc systemd[1]: /etc/systemd/system/vbox@.service:3: Assig>
    lines 1-17/17 (END)

    Ответить

Оставьте комментарий