Заметки о решаемых задачах АйТишников

Сделал - запиши. Нашёл - сохрани :)

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

Автостарт виртуальной машины virtualbox в Linux

Автостарт виртуальной машины virtualbox в Linux

 

 

 

Как сделать так, чтобы виртуальная машина (машины) запускались при загрузке linux

Вся работа будет производиться в командной строке (CLI).

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

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

Сначала проверим, что наш пользователь входит в группу vboxusers. В терминале выполняем команду:

groups

Результат работы команды может быть такого вида

$ groups
gt2 adm dialout cdrom floppy sudo audio dip video plugdev netdev wireshark bluetooth scanner kaboxer vboxusers

Если пользователь не входит в группу, то добавим его:

sudo usermod -a -G vboxusers $USER

где $USER это глобальная переменная в которой записан пользователь под которым мы авторизованы в linux (в нашем случае это мы сами).

Создаём конфигурационный файл юнита systemd:

sudo nano /etc/systemd/system/autostart_vm@.service

вставляем следующее содержимое:

[Unit]
Description= Guest VM %I
After=network.target vboxdrv.service
Before=runlevel2.target shutdown.target

[Service]
User=username
Group=vboxusers
Type=forking
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

ВНИМАНИЕ! В секции Serviceusername меняем на логин нашего пользователя!

сохраняем конфигурационный файл.

Чтобы дальше продолжать, нам сначала надо увидеть какие виртуальные машины зарегистрированы в системе. Выполняем команду:

VBoxManage list vms

пример вывода команды:

$ VBoxManage list vms
"WinSrv2019" {b03095c4-9ed1-4648-8a4a-cc7de4f0a139}

Включаем запуск виртуальной машины WinSrv2019 при загрузке linux (создам символьную ссылку).

sudo systemctl enable autostart_vm@WinSrv2019

Пример результата работы команды:

$ sudo systemctl enable autostart_vm@WinSrv2019
Created symlink /etc/systemd/system/multi-user.target.wants/autostart_vm@WinSrv2019.service → /etc/systemd/system/autostart_vm@.service.

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

обновляем конфигурацию юнитов для всех служб:

sudo systemctl daemon-reload

запускаем на исполнение файл конфигурации юнита, который мы создали ранее:

sudo systemctl start autostart_vm@WinSrv2019

проверяем состояние запущенного нами процесса:

sudo systemctl status autostart_vm@WinSrv2019

пример вывода команды status:

$ sudo systemctl status autostart_vm@WinSrv2019
● autostart_vm@WinSrv2019.service - Guest VM WinSrv2019
     Loaded: loaded (/etc/systemd/system/autostart_vm@.service; enabled; preset>
     Active: active (exited) since Wed 2025-04-24 11:39:23 EAT; 3min 10s ago
    Process: 3927 ExecStart=/usr/bin/VBoxManage startvm WinSrv2019 --type headles>
        CPU: 149ms

Active: active говорит о том, что виртуальная машина запущена и работает.

 

Всё!

 

29 апреля 2025, 23:06    Александр Linux 0    206 0

 

 

 

 



Комментарии ()

    Вы должны авторизоваться, чтобы оставлять комментарии.