Substituí meu sistema 14.04 por uma nova instalação do 15.10. Com o 14.04, usei o script de inicialização vboxautostart para iniciar um convidado vbox no momento da inicialização e interrompê-lo durante o desligamento do sistema. Isso costumava funcionar muito bem.
Agora estou tentando conseguir uma configuração semelhante com o Ubuntu 15.10. A principal diferença é que preciso usar o systemd, com o qual ainda não estou muito familiarizado. Consegui fazer a configuração específica do vbox, então posso ligar
/usr/lib/virtualbox/vboxautostart-service.sh start/stop
do shell e funciona perfeitamente. Também posso usar systemctl start vboxautostart-service.service
para iniciar o convidado vbox. Ele é iniciado automaticamente na inicialização do sistema depois que eu habilito o serviço. No entanto, se eu tentar interromper o serviço com
systemctl stop vboxautostart-service.service
não faz nada, então o convidado ainda estará em execução depois.
O status do systemctl mostra o seguinte:
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.
O comando ExecStop no serviço parece correto, porém, por algum motivo, não está funcionando quando chamado do systemd. Alguma ideia do que posso fazer aqui?
Responder1
Parece que estou tendo o mesmo problema no debian jessie com systemd e virtualbox 5.0.10 empacotados da Oracle.
Depois de muita depuração, parece haver algo relacionado à maneira como o start-stop-daemon é chamado na função stop() em /usr/lib/virtualbox/vboxautostart-service.sh (por volta da linha 236) que não aciona para a função start() da mesma maneira
O que eu descobri foi um hack horrível, mas realmente gostaria que alguém mais amigável ao sistema investigasse esse problema.
Substituí em /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
com :
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
Responder2
Parece que estou tendo o mesmo problema no Ubuntu 16.06 xenial com systemd e VirtualBox 5.1.x empacotado da Oracle.
Encontrei uma solução aqui: https://www.virtualbox.org/ticket/14955
Mudança em /usr/lib/virtualbox/vboxautostart-service.sh
:
start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
start-stop-daemon --chuid $usr --start --exec $bin -- $@