Ubuntu 15.10 vboxautostart-service stop не работает

Ubuntu 15.10 vboxautostart-service stop не работает

Я заменил свою систему 14.04 на новую установку 15.10. С 14.04 я использовал скрипт инициализации vboxautostart для запуска гостевой системы vbox во время загрузки и ее остановки во время выключения системы. Раньше это работало очень хорошо.

Теперь я пытаюсь добиться похожей настройки с Ubuntu 15.10. Главное отличие в том, что мне нужно использовать systemd, с которым я пока не очень хорошо знаком. Мне удалось настроить vbox, поэтому я могу вызывать /usr/lib/virtualbox/vboxautostart-service.sh start/stopиз оболочки, и это работает отлично. Я также могу использовать systemctl start vboxautostart-service.serviceдля запуска гостевой системы vbox. Она даже запускается автоматически при запуске системы после включения службы. Однако, если я попытаюсь остановить службу с помощью

systemctl stop vboxautostart-service.service

он ничего не делает, поэтому гость продолжает работать после этого.
systemctl status показывает следующее:

root@linux:~# systemctl -l status vboxautostart-service.service
● vboxautostart-service.service
   Loaded: loaded (/usr/lib/virtualbox/vboxautostart-service.sh; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sa 2015-10-31 16:39:10 CET; 4min 57s ago
  Process: 5645 ExecStop=/usr/lib/virtualbox/vboxautostart-service.sh stop (code=exited, status=0/SUCCESS)
  Process: 5586 ExecStart=/usr/lib/virtualbox/vboxautostart-service.sh start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/vboxautostart-service.service
           ├─ 875 /usr/lib/virtualbox/VBoxXPCOMIPCD
           ├─ 880 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
           └─5602 /usr/lib/virtualbox/VBoxHeadless --comment server --startvm b3376916-8562-442e-a25e-cfe26fa800db --vrde config

Okt 31 16:37:52 linux systemd[1]: Starting vboxautostart-service.service...
Okt 31 16:37:52 linux vboxautostart-service.sh[5586]: Starting VirtualBox VMs configured for autostart
Okt 31 16:37:52 linux systemd[1]: Started vboxautostart-service.service.
Okt 31 16:39:10 linux systemd[1]: Stopping vboxautostart-service.service...
Okt 31 16:39:10 linux systemd[1]: Stopped vboxautostart-service.service.

Команда ExecStop в службе выглядит вполне правильно, однако по какой-то причине она не работает при вызове из systemd. Есть идеи, что я могу здесь сделать?

решение1

Похоже, у меня та же проблема на Debian Jessie с systemd и Virtualbox 5.0.10, упакованными из Oracle.

После долгой отладки, похоже, что-то связано с тем, как вызывается start-stop-daemon в функции stop() в /usr/lib/virtualbox/vboxautostart-service.sh (около строки 236), что не приводит к срабатыванию функции start() таким же образом.

То, что я придумал, — это ужасный хак, но мне бы очень хотелось, чтобы кто-то более системно-ориентированный занялся этой проблемой.

Я заменил в /usr/lib/virtualbox/vboxautostart-service.sh:

for user in `ls $VBOXAUTOSTART_DB/*.stop` 
do
    start_daemon `basename $user | sed -ne "s/\(.*\).stop/\1/p"` $binary $PARAMS > /dev/null 2>&1
done

с :

for user in `ls $VBOXAUTOSTART_DB/*.stop`
do
    su - `basename $user | sed -ne "s/\(.*\).stop/\1/p"` -c "$binary $PARAMS" > /dev/null 2>&1
done

решение2

Похоже, у меня та же проблема на Ubuntu 16.06 Xenial с systemd и VirtualBox 5.1.x, упакованным из Oracle.

Я нашел решение здесь: https://www.virtualbox.org/ticket/14955

Изменение в /usr/lib/virtualbox/vboxautostart-service.sh:

  1. start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
  2. start-stop-daemon --chuid $usr --start --exec $bin -- $@

Связанный контент