Ubuntu 15.10 vboxautostart-service stop이 작동하지 않습니다.

Ubuntu 15.10 vboxautostart-service stop이 작동하지 않습니다.

14.04 시스템을 15.10을 새로 설치하여 교체했습니다. 14.04에서는 vboxautostart init 스크립트를 사용하여 부팅 시 vbox 게스트를 시작하고 시스템 종료 중에 중지했습니다. 이것은 매우 잘 작동했습니다.

이제 Ubuntu 15.10에서 비슷한 설정을 달성하려고 합니다. 가장 큰 차이점은 아직 익숙하지 않은 systemd를 사용해야 한다는 것입니다. vbox 관련 설정을 수행할 수 있었기 때문에 /usr/lib/virtualbox/vboxautostart-service.sh start/stop셸에서 호출할 수 있었고 완벽하게 작동했습니다. systemctl start vboxautostart-service.servicevbox guest를 시작하는데도 사용할 수 있습니다 . 서비스를 활성화한 후 시스템 시작 시 자동으로 시작되기도 합니다. 그러나 서비스를 중지하려고 하면

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

Oracle에서 패키지로 제공되는 systemd 및 virtualbox 5.0.10을 사용하는 debian jessie에서 동일한 문제가 있는 것 같습니다.

많은 디버깅 후에는 /usr/lib/virtualbox/vboxautostart-service.sh(약 236번째 줄)의 stop() 함수에서 start-stop-daemon이 호출되는 방식과 관련된 문제가 발생합니다. 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

Oracle에서 패키지된 systemd 및 VirtualBox 5.1.x가 포함된 ubuntu 16.06 xenial에서 동일한 문제가 있는 것 같습니다.

여기서 해결책을 찾았습니다. 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 -- $@

관련 정보