Автозапуск VirtualBox

Есть пару вариантов запуска виртуальной машины:

  • ВАРИАНТ 1: При регистрации и старте графической сессии пользователя.
    • Это происходит когда вы вводите пароль и перед вами открывается рабочий стол. В этот момент стартует автозапуск ранее указанных виртуальных машин или в интерактивном режиме или в фоновом.
  • ВАРИАНТ 2: При старте операционной системы без регистрации пользователя.
    • В ходить в сессию какого либо пользователя не требуется. Авто-старт виртуальной машины происходит по принципу сервиса, который стартует сразу после сервиса сети. Виртуальному серверу ведь требуется сеть?

Первый вариант

При активации сессии пользователя, надо вводить пароль.

Вы в менеджере Авто-стартующих Приложений прописываете команду запуска вашей виртуальной машины.

Примерно так, как указано ниже. Здесь старт виртуальной машины с серверов в фоновом режиме. Доступ к виртуальной машине будет осуществляться по ssh. Если в виртуальной машине будет desktop, тогда вы сделаете это с помощью RDP или VNC.

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

Второй вариант

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

Предварительно, если этого не делали, то сделайте и перезагрузитесь, добавьте своего пользователя в группу:

sudo usermod -aG vboxusers morikoff

1. Определите имя виртуальной машины

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

VBoxManage list vms

Запомните имя вашей виртуальной машины.

2. Создайте скрипт для запуска виртуальной машины

Создайте скрипт, который будет запускать виртуальную машину. Например, создайте файл /usr/local/bin/start-vm.sh:

sudo nano /usr/local/bin/start-vm.sh

Заметка для текстового редактора nano:

  • [CTRL+O] — записать файл
  • [CTRL+X] — выйти из редактора

Добавьте в новый файл следующий код:

#!/bin/bash
export VBOX_USER_HOME=/home/morikoff/.config/VirtualBox
export USER=morikoff
export LOGNAME=morikoff
VM_NAME="717ea073-966a-4f92-ba7a-e83cc49a0d84"
sudo -u morikoff VBoxManage startvm $VM_NAME --type headless

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

Сделайте скрипт исполняемым:

sudo chmod +x /usr/local/bin/start-vm.sh

3. Создайте службу systemd

Создайте файл службы systemd, чтобы виртуальная машина запускалась при загрузке системы. Создайте файл /etc/systemd/system/vm-start.service:

sudo nano /etc/systemd/system/vm-start.service

Добавьте в него следующий код:

[Unit]
Description=Start VirtualBox VM at boot
After=network.target vboxdrv.service

[Service]
Type=forking
User=morikoff
Environment="VBOX_USER_HOME=/home/morikoff/.config/VirtualBox"
ExecStart=/usr/local/bin/start-vm.sh

[Install]
WantedBy=multi-user.target

4. Активируйте службу

Активируйте службу и запустите её:

sudo systemctl daemon-reload
sudo systemctl enable vm-start.service
sudo systemctl start vm-start.service

5. Проверьте статус службы

Проверьте, запустилась ли ваша виртуальная машина:

sudo systemctl status vm-start.service

Нажимайте q, чтобы прекратить вывод данных.

Перезагрузитесь.

sudo reboot

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

Дополнительно

Для выявления проблем работы вашего сервиса авто-запуска виртуальной машины используйте следующее инструменты.

Убедитесь, что виртуальная машина запущена, зайдя в консоль VirtualBox или используя команду:

VBoxManage list runningvms

Проверьте статус службы:

sudo systemctl status vm-start.service

Проверьте журнал ошибок для получения дополнительной информации, если служба все еще не запускается:

sudo journalctl -u vm-start.service

Нажимайте q, чтобы прекратить вывод данных.


Вот и всё. Как вам такой вариант?