Debian 8 - Execute scripts após o boot

1

Eu tentei executar alguns scripts após o boot via /etc/rc.local .

/etc/rc.local

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
/home/startup.sh

exit 0

/home/startup.sh

mount -t vboxsf test /home/test

Aqui está o resultado na inicialização

Aqui está a saída de systemctl status rc-local.service

rc-local.service - /etc/rc.local Compatibility
   Loaded: loaded (/lib/systemd/system/rc-local.service; static)
   Active: failed (Result: exit-code) since Sun 2016-02-07 22:48:23 ICT; 18min ago
  Process: 432 ExecStart=/etc/rc.local start (code=exited, status=1/FAILURE)

Feb 07 22:48:23 debian rc.local[432]: /sbin/mount.vboxsf: mounting failed with the error: No such device
Feb 07 22:48:23 debian systemd[1]: rc-local.service: control process exited, code=exited status=1
Feb 07 22:48:23 debian systemd[1]: Failed to start /etc/rc.local Compatibility.
Feb 07 22:48:23 debian systemd[1]: Unit rc-local.service entered failed state.

Eu tentei executar manualmente sudo bash /home/startup.sh e funciona bem. Eu também apliquei este método em Ubuntu 14.04 e nenhum erro ocorreu.

Qual é a razão por trás deste fracasso? Como posso consertar isso?

    
por Lewis 07.02.2016 / 04:49

2 respostas

3

Seu problema parece ser que seu rc-local.service é iniciado antes de vboxadd-service.service , mas deve ser executado após ele. Agora, rc.local é uma coisa SysV (onde é executado no final do processo de inicialização), a compatibilidade fornecida pelo systemd não é perfeita (como você pode ver na captura de tela). Você provavelmente ficaria melhor com uma unidade home-test.mount personalizada como esta:

[Unit]
Requires=vboxadd-service.service
After=vboxadd-service.service

[Mount]
What=test
Where=/home/test
Type=vboxsf

[Install]
WantedBy = multi-user.target

Em seguida, systemctl enable home-test.mount , remova a chamada /home/startup.sh de /etc/rc.local e teste a nova configuração com uma reinicialização.

Atenção: Eu tenho zero experiência com o VirtualBox e muito pouco com unidades de montagem. Mas você entendeu a ideia.

    
por 07.02.2016 / 19:51
-1

Você precisa colocar seu arquivo em:

/etc/init.d/

E então você precisa alterá-lo para um arquivo executável por:

chmod +x /etc/init.d/myscript

se isso não funcionar, você precisa criar um symlink para:

/etc/rc.d/

ln -s /etc/init.d/myscript /etc/rc.d/

Por favor, note que no Debian mais recente, isso não funcionará, pois seu script deve ser compatível com LSB (forneça, pelo menos, as seguintes ações: iniciar, parar, reiniciar, force-reload e status): link

    
por 07.02.2016 / 04:56