Я создал сценарий systemd
, который должен запускать три виртуальные машины VirtualBox после перезагрузки:
$ systemctl status virtualbox
● virtualbox.service - Keep VirtualBox VMs up-and-running
Loaded: loaded (/etc/systemd/system/virtualbox.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Fri 2019-06-14 14:08:42 PDT; 14min ago
Process: 4219 ExecStart=/home/qa/start_vms.sh (code=exited, status=0/SUCCESS)
Main PID: 4219 (code=exited, status=0/SUCCESS)
Jun 14 14:08:41 lab-rbarak.local pulseaudio[4929]: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jun 14 14:08:41 lab-rbarak.local pulseaudio[4929]: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jun 14 14:08:41 lab-rbarak.local start_vms.sh[4219]: Waiting for VM "QAT-116-sonarsql-test-virtualbox" to power on...
Jun 14 14:08:41 lab-rbarak.local start_vms.sh[4219]: VM "QAT-116-sonarsql-test-virtualbox" has been successfully started.
Jun 14 14:08:41 lab-rbarak.local start_vms.sh[4219]: VBoxManage: error: Machine 'QAT-116-oracle12' is not currently running
Jun 14 14:08:41 lab-rbarak.local start_vms.sh[4219]: Waiting for VM "QAT-116-oracle12" to power on...
Jun 14 14:08:41 lab-rbarak.local start_vms.sh[4219]: VM "QAT-116-oracle12" has been successfully started.
Jun 14 14:08:41 lab-rbarak.local start_vms.sh[4219]: VBoxManage: error: Machine 'QAT-116-finder-tests_oori' is not currently running
Jun 14 14:08:42 lab-rbarak.local start_vms.sh[4219]: Waiting for VM "QAT-116-finder-tests_oori" to power on...
Jun 14 14:08:42 lab-rbarak.local start_vms.sh[4219]: VM "QAT-116-finder-tests_oori" has been successfully started.
$ systemctl is-enabled virtualbox.service
enabled
Однако после перезагрузки, даже если virtualbox.service
работает, виртуальные машины не работают.'t:
$ sudo reboot
Connection to lab.local closed by remote host.
Connection to lab.local closed.
...
qa@lab.local's password:
Last login: Fri Jun 14 14:08:54 2019 from 192.168.1.168
$ systemctl status virtualbox
● virtualbox.service - Keep VirtualBox VMs up-and-running
Loaded: loaded (/etc/systemd/system/virtualbox.service; enabled; vendor preset: disabled)
Active: inactive (dead) since Fri 2019-06-14 14:25:33 PDT; 16s ago
Process: 4219 ExecStart=/home/qa/start_vms.sh (code=exited, status=0/SUCCESS)
Main PID: 4219 (code=exited, status=0/SUCCESS)
Jun 14 14:25:32 lab-rbarak.local pulseaudio[4929]: [pulseaudio] server-lookup.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jun 14 14:25:32 lab-rbarak.local pulseaudio[4929]: [pulseaudio] main.c: Unable to contact D-Bus: org.freedesktop.DBus.Error.NotSupported: Unable to autolaunch a dbus-daemon without a $DISPLAY for X11
Jun 14 14:25:32 lab-rbarak.local start_vms.sh[4219]: Waiting for VM "QAT-116-sonarsql-test-virtualbox" to power on...
Jun 14 14:25:32 lab-rbarak.local start_vms.sh[4219]: VM "QAT-116-sonarsql-test-virtualbox" has been successfully started.
Jun 14 14:25:32 lab-rbarak.local start_vms.sh[4219]: VBoxManage: error: Machine 'QAT-116-oracle12' is not currently running
Jun 14 14:25:32 lab-rbarak.local start_vms.sh[4219]: Waiting for VM "QAT-116-oracle12" to power on...
Jun 14 14:25:32 lab-rbarak.local start_vms.sh[4219]: VM "QAT-116-oracle12" has been successfully started.
Jun 14 14:25:32 lab-rbarak.local start_vms.sh[4219]: VBoxManage: error: Machine 'QAT-116-finder-tests_oori' is not currently running
Jun 14 14:25:33 lab-rbarak.local start_vms.sh[4219]: Waiting for VM "QAT-116-finder-tests_oori" to power on...
Jun 14 14:25:33 lab-rbarak.local start_vms.sh[4219]: VM "QAT-116-finder-tests_oori" has been successfully started.
$ vboxmanage list runningvms
$
Подробности
$ cat /etc/systemd/system/virtualbox.service
[Unit]
Description=Keep VirtualBox VMs up-and-running
After=network.target vboxdrv.service
[Service]
ExecStart=/home/qa/start_vms.sh
User=qa
[Install]
WantedBy=multi-user.target
$ cat /home/qa/start_vms.sh
#!/bin/sh -
/usr/bin/VBoxManage controlvm "QAT-116-sonarsql-test-virtualbox" poweroff ; /usr/bin/VBoxManage startvm QAT-116-sonarsql-test-virtualbox --type headless
/usr/bin/VBoxManage controlvm "QAT-116-oracle12" poweroff ; /usr/bin/VBoxManage startvm QAT-116-oracle12 --type headless
/usr/bin/VBoxManage controlvm "QAT-116-finder-tests_oori" poweroff ; /usr/bin/VBoxManage startvm QAT-116-finder-tests_oori --type headless
Обратите внимание, что если я вручную запускаю сценарий, который запускает служба, виртуальные машины начинают работать:
$ /home/qa/start_vms.sh
VBoxManage: error: Machine 'QAT-116-sonarsql-test-virtualbox' is not currently running
Waiting for VM "QAT-116-sonarsql-test-virtualbox" to power on...
VM "QAT-116-sonarsql-test-virtualbox" has been successfully started.
VBoxManage: error: Machine 'QAT-116-oracle12' is not currently running
Waiting for VM "QAT-116-oracle12" to power on...
VM "QAT-116-oracle12" has been successfully started.
VBoxManage: error: Machine 'QAT-116-finder-tests_oori' is not currently running
Waiting for VM "QAT-116-finder-tests_oori" to power on...
VM "QAT-116-finder-tests_oori" has been successfully started.
$ vboxmanage list runningvms
"QAT-116-sonarsql-test-virtualbox" {a0d929e0-8556-4d22-ab99-5deff7d25462}
"QAT-116-oracle12" {b5d58758-8925-4780-9037-604b6f9a4185}
"QAT-116-finder-tests_oori" {4c1d84f9-fd3e-4398-a46e-ec592411c66c}
$
Как я могу заставить системный модуль virtualbox.service запускать виртуальные машины VirtualBox после перезагрузки?