Модуль systemd не будет запускать виртуальные машины VirtualBox после перезагрузки, даже если он работает - PullRequest
0 голосов
/ 15 июня 2019

Я создал сценарий 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 после перезагрузки?

...