Oracle VirtualBox: как запустить виртуальную машину с графическим интерфейсом (не в безголовом режиме) при загрузке хоста и выключить виртуальную машину при выключении хоста?

Вопрос или проблема

На моей дистрибуции lubuntu 24.04 установлен гипервизор Oracle VirtualBox 7.1.6, и я импортировал виртуальную машину (названную my-virtual-machine ниже в этом вопросе).

Запуск и выключение виртуальной машины через командную строку

Я нашел, как запускать и выключать виртуальную машину через командную строку:

  1. Для запуска виртуальной машины:
/usr/bin/VBoxManage startvm 'my-virtual-machine' --type gui
  1. Для выключения виртуальной машины:
/usr/bin/VBoxManage controlvm 'my-virtual-machine' acpipowerbutton

Описание моих потребностей

У меня есть следующие потребности:

  1. запускать my-virtual-machine (гостевую ОС) автоматически при загрузке хоста (то есть lubuntu 24.04)
  2. выключать my-virtual-machine при завершении работы хоста
  3. виртуальная машина должна запускаться с GUI, а не в headless режиме

По этому посту, который очень старый и ссылается на VirtualBox 4.2, но кажется, что он все еще актуален для VirtualBox 7.1, я могу решить первую и, возможно, вторую задачу.

Проблема заключается в третьем запросе, так как метод, описанный в статье, позволяет запустить виртуальную машину при загрузке системы хоста, но в headless режиме, а не с GUI.
Когда виртуальная машина корректно запущена, я могу увидеть следующие два процесса с помощью команды ps aux:

> ps aux | grep VBox
[...] /usr/lib/virtualbox/VBoxHeadless --comment my-virtual-machine --startvm 546632bd-b8bd-4f2d-b2a1-8657b968378a --vrde config
[...] /usr/lib/virtualbox/VBoxSVC --auto-shutdown --inherit-startup-pipe 7

Вопрос

Как запустить VM Oracle VirtualBox с GUI (а не в headless режиме) при загрузке хост-системы и выключить VM при завершении работы хоста?

Я нашел полезное обходное решение: прежде всего, запуск виртуальной машины в headless режиме должен остаться точно таким, каким описан в вопросе.
Фактически, обычно не требуется запускать GUI виртуальной машины, а только в некоторых редких случаях.

Ручной запуск GUI Oracle VirtualBox

После завершения процесса загрузки хоста, и когда необходимо запустить GUI виртуальной машины, я могу запустить GUI Oracle VirtualBox двойным щелчком по иконке VirtualBox или с помощью команды VirtualBox, выполненной в терминале.
В моем случае открывается изображение, показанное ниже: Oracle VirtualBox GUI with VM running

Изображение подчеркивает, что:

  1. виртуальная машина работает
  2. кнопка в правом верхнем углу меняется с Start на Show.

Отображение GUI VM с помощью кнопки Show

Нажав на кнопку Show (которая выделена на предыдущем изображении), можно запустить GUI виртуальной машины.
Это именно то, что мне нужно, потому что headless-запуск виртуальной машины достаточен в большинстве случаев загрузки системы, и только иногда необходимо открыть GUI виртуальной машины.

.

Ответ или решение

Теория

Oracle VirtualBox – это мощный и популярный инструмент для создания и управления виртуальными машинами. В вашем случае задача состоит в том, чтобы автоматизировать запуск виртуальной машины (ВМ) с графическим интерфейсом (GUI) при старте хостовой системы и корректно завершать её работу при выключении хоста. Линукс-система lubuntu 24.04 позволяет это сделать, используя возможности скриптинга и управление системными службами.

Автоматическое управление ВМ включает в себя два аспекта:

  1. Запуск ВМ с GUI при старте системы: VBoxManage – это утилита командной строки для управления виртуальными машинами в VirtualBox. Она позволяет запускать ВМ как в безголовом режиме (headless), так и с графическим интерфейсом (GUI), используя параметр --type gui.

  2. Завершение работы ВМ при выключении системы: Это можно реализовать, посылая команду acpipowerbutton, которая инициирует корректное завершение работы гостевой ОС. В современных ОС команда поступает как сигнал завершения работы, что эквивалентно нажатию кнопки питания на реальной машине.

Пример

Для автоматизации процессов запуска и остановки виртуальной машины, вам потребуется создать системные службы (systemd unit) для управления ВМ при старте и завершении работы хоста. Вот примеры таких сценариев:

  1. Создание юнита для запуска ВМ при старте системы:

    Создайте файл юнита в директории /etc/systemd/system/ с именем vm-start.service:

    [Unit]
    Description=Запуск виртуальной машины my-virtual-machine
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/usr/bin/VBoxManage startvm 'my-virtual-machine' --type gui
    
    [Install]
    WantedBy=default.target

    После сохранения файла, выполните команду для проверки и установки на автозапуск:

    sudo systemctl enable vm-start.service
  2. Создание юнита для завершения работы ВМ при остановке системы:

    Создайте дополнительный файл юнита, например, vm-stop.service:

    [Unit]
    Description=Завершение работы виртуальной машины my-virtual-machine
    Before=shutdown.target
    
    [Service]
    Type=oneshot
    ExecStart=/usr/bin/VBoxManage controlvm 'my-virtual-machine' acpipowerbutton
    RemainAfterExit=yes
    
    [Install]
    WantedBy=shutdown.target

    Установите этот юнит аналогично предыдущему:

    sudo systemctl enable vm-stop.service

Применение

Эти юниты позволят автоматизировать запуск и остановку вашей виртуальной машины. При следующем перезапуске хостовой системы, vm-start.service запустит ВМ c GUI, а vm-stop.service гарантирует, что ВМ будет корректно завершена перед выключением хоста.

Тестирование: Перед внедрением в рабочую среду настоятельно рекомендуется протестировать сценарии работы ВМ. Убедитесь, что все команды выполняются корректно и система адекватно отвечает на сигналы старта и остановки.

Оптимизация: Возможно, вы захотите дополнительно настроить параметры самого VirtualBox, такие как увеличение выданных системных ресурсов для ВМ или настройка сети, чтобы убедиться в стабильной работе гостевой системы.

Эти меры позволят сэкономить время и обеспечить более автоматизированный процесс работы вашей среды виртуализации. Подобный подход также уменьшит вероятность ошибок, связанных с ручным управлением виртуальными машинами, что особенно актуально в случае использования ВМ в бизнес-среде.

Оцените материал
Добавить комментарий

Капча загружается...