Вся работа будет производиться в командной строке (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
ВНИМАНИЕ! В секции
Service
,username
меняем на логин нашего пользователя!
сохраняем конфигурационный файл.
Чтобы дальше продолжать, нам сначала надо увидеть какие виртуальные машины зарегистрированы в системе. Выполняем команду:
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
говорит о том, что виртуальная машина запущена и работает.
Всё!
Вы должны авторизоваться, чтобы оставлять комментарии.
Комментарии ()