Reemplacé mi sistema 14.04 por una instalación nueva de 15.10. Con 14.04 utilicé el script de inicio vboxautostart para iniciar un invitado vbox en el momento del arranque y detenerlo durante el apagado del sistema. Esto solía funcionar muy bien.
Ahora estoy intentando lograr una configuración similar con Ubuntu 15.10. La principal diferencia es que tengo que usar systemd, con el que aún no estoy muy familiarizado. Pude realizar la configuración específica de vbox, por lo que puedo llamar
/usr/lib/virtualbox/vboxautostart-service.sh start/stop
desde el shell y funciona perfectamente. También puedo usarlo systemctl start vboxautostart-service.service
para iniciar el invitado vbox. Incluso se inicia automáticamente al iniciar el sistema después de habilitar el servicio. Sin embargo, si intento detener el servicio con
systemctl stop vboxautostart-service.service
no hace nada, por lo que el invitado sigue ejecutándose después.
El estado de systemctl muestra lo siguiente:
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.
El comando ExecStop en el servicio parece bastante correcto, sin embargo, por alguna razón no funciona cuando se llama desde systemd. ¿Alguna idea de lo que puedo hacer aquí?
Respuesta1
Parece que tengo el mismo problema en Debian Jessie con systemd y virtualbox 5.0.10 empaquetados desde Oracle.
Después de mucha depuración, parece haber algo relacionado con la forma en que se llama al demonio start-stop en la función stop() en /usr/lib/virtualbox/vboxautostart-service.sh (alrededor de la línea 236) que no activa la función start() de la misma manera
Lo que se me ocurrió es un truco horrible, pero realmente me gustaría que alguien más amigable con Systemd profundizara en este problema.
Reemplacé en /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
con :
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
Respuesta2
Parece que tengo el mismo problema en ubuntu 16.06 xenial con systemd y VirtualBox 5.1.x empaquetados desde Oracle.
Encontré una solución aquí: https://www.virtualbox.org/ticket/14955
Cambiar en /usr/lib/virtualbox/vboxautostart-service.sh
:
start-stop-daemon --background --chuid $usr --start --exec $bin -- $@
start-stop-daemon --chuid $usr --start --exec $bin -- $@