Eu quero rodar um renderizador UPNP como um serviço em um Raspberry Pi usando o Raspian, uma distro baseada no Debian.
Na verdade, tudo corre bem, mas uma coisa: não consigo iniciar o serviço na hora da inicialização na hora certa. Para mim, parece que começa cedo demais antes que a conexão wifi tenha sido estabelecida. Como resultado, o renderizador não pode ser visto na rede. Se eu parar o serviço manualmente e reiniciá-lo, tudo funcionará bem.
Como root, executo o seguinte comando para criar o serviço:
update-rc.d gmediarender defaults
mas links são criados como S02gmediarender
e o gerenciador de wifi é S03wicd
então, depois de cancelar o registro do gmediarender, tentei:
update-rc.d gmediarender defaults 99
mas o resultado é o mesmo.
Originalmente, meu roteiro era:
#!/bin/sh
### BEGIN INIT INFO
# Provides: gmediarender
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start GMediaRender at boot time
# Description: Start GMediaRender at boot time.
### END INIT INFO
USER=root
HOME=/root
export USER HOME
case "$1" in
start)
echo "Starting GMediaRender"
start-stop-daemon -x /usr/local/bin/gmediarender -c pi:audio -S -- -f "Raspberry" -d
;;
stop)
echo "Stopping GMediaRender"
start-stop-daemon -x /usr/local/bin/gmediarender -K
;;
*)
echo "Usage: /etc/init.d/gmediarender {start|stop}"
exit 1
;;
esac
exit 0
Eu tentei remover a parte do cabeçalho, mas não ajudou.
Obrigado pela vossa ajuda: -)
Após adicionar a dependência $ network, eu emiti o comando update-rc.d com (e depois sem) a opção -n:
pi@raspberrypi ~ $ sudo update-rc.d -n gmediarender defaults 99
update-rc.d: using dependency based boot sequencing
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc0.d/K01gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc1.d/K01gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc2.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc3.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc4.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc5.d/S02gmediarender
insserv: enable service ../init.d/gmediarender -> /etc/init.d/../rc6.d/K01gmediarender
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
pi@raspberrypi ~ $
Aqui está meu disretor rc2.d: Será que o gerenciador de rede e o wicd não são redundantes e podem interferir e causar problemas?
pi@raspberrypi /etc/rc2.d $ ll
total 4
lrwxrwxrwx 1 root root 17 oct. 28 23:43 K01lightdm -> ../init.d/lightdm
lrwxrwxrwx 1 root root 20 mars 16 19:20 K06nfs-common -> ../init.d/nfs-common
lrwxrwxrwx 1 root root 17 mars 16 19:20 K06rpcbind -> ../init.d/rpcbind
-rw-r--r-- 1 root root 677 févr. 8 01:26 README
lrwxrwxrwx 1 root root 18 oct. 28 22:56 S01bootlogs -> ../init.d/bootlogs
lrwxrwxrwx 1 root root 17 oct. 28 23:27 S01ifplugd -> ../init.d/ifplugd
lrwxrwxrwx 1 root root 14 oct. 28 22:56 S01motd -> ../init.d/motd
lrwxrwxrwx 1 root root 17 oct. 28 23:27 S01rsyslog -> ../init.d/rsyslog
lrwxrwxrwx 1 root root 14 mars 16 17:50 S01sudo -> ../init.d/sudo
lrwxrwxrwx 1 root root 22 oct. 28 23:27 S01triggerhappy -> ../init.d/triggerhappy
lrwxrwxrwx 1 root root 14 oct. 28 23:27 S02cron -> ../init.d/cron
lrwxrwxrwx 1 root root 14 oct. 28 23:27 S02dbus -> ../init.d/dbus
lrwxrwxrwx 1 root root 24 oct. 28 23:28 S02dphys-swapfile -> ../init.d/dphys-swapfile
lrwxrwxrwx 1 root root 22 mars 30 21:38 S02gmediarender -> ../init.d/gmediarender
lrwxrwxrwx 1 root root 13 oct. 28 23:27 S02ntp -> ../init.d/ntp
lrwxrwxrwx 1 root root 15 mars 16 18:00 S02rsync -> ../init.d/rsync
lrwxrwxrwx 1 root root 13 oct. 28 23:59 S02ssh -> ../init.d/ssh
lrwxrwxrwx 1 root root 22 mars 16 21:25 S03avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root 19 mars 16 18:47 S03bluetooth -> ../init.d/bluetooth
lrwxrwxrwx 1 root root 25 mars 16 18:48 S03network-manager -> ../init.d/network-manager
lrwxrwxrwx 1 root root 14 mars 23 15:09 S03wicd -> ../init.d/wicd
lrwxrwxrwx 1 root root 20 mars 16 19:20 S04pulseaudio -> ../init.d/pulseaudio
lrwxrwxrwx 1 root root 18 mars 16 19:20 S05rc.local -> ../init.d/rc.local
lrwxrwxrwx 1 root root 19 mars 16 19:20 S05rmnologin -> ../init.d/rmnologin
pi@raspberrypi /etc/rc2.d $
Uma nova tentativa:
Eu tentei renomear /etc/rc2.d/S02gmediarender
as /etc/rc2.d/S06gmediarender
Mesmo problema: após a reinicialização, o serviço não é visível na rede.
Finalmente:
Fui em outra direção: simplificar o problema, pois suspeitava que wicd e network-manager provavelmente estavam interferindo um no outro. Então eu me livrei dos dois e configurei /etc/network/interfaces
para que o RPI simplesmente se conectasse ao meu ponto de acesso wifi. O efeito KISS: Mantenha-o simples, estúpido ;-)
Sem a sobrecarga dos gerenciadores de Wi-Fi e após a reinicialização, o GMediaRenderer agora está disponível na minha rede.