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.service
vbox 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
:
start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
start-stop-daemon --chuid $usr --start --exec $bin -- $@