Como fazer com que o /etc/rc.local funcione como esperado
Como o upstart inicia seu serviço de forma assíncrona, é muito comum que nem todos os serviços estejam prontos quando o /etc/rc.local é iniciado. Então você precisa adicionar sleep 3
(ou outro número, você precisa descobrir a si mesmo) no início do seu script.
Você precisa cuidar para que o script não seja interrompido por um programa que retorna um erro. Exemplo: posso alternar entre duas placas gráficas no meu laptop (pré-placa gráfica híbrida) e, dependendo de qual delas está ativada, devo usar um arquivo /sys/class/backlight/...
diferente para definir seu brilho.
O mais fácil é definir os dois. Mas, para garantir que o não existente não interrompa o /etc/rc.local
-script, acrescento || true
no final de cada comando.
Então, é assim que meu rc.local
-script parece agora (sem os comentários no começo):
sleep 3
echo 2 > /sys/class/backlight/sony/brightness || true
echo 2 > /sys/class/backlight/nv_backlight/brightness || true
rfkill block bluetooth
exit 0