Debian 기반 배포 Raspian을 사용하여 Raspberry Pi에서 UPNP 렌더러를 서비스로 실행하고 싶습니다. 실제로 모든 것이 잘 작동하지만 한 가지 문제는 부팅 시 적절한 시간에 서비스를 시작할 수 없다는 것입니다. 나에게는 Wi-Fi 연결이 설정되기 전에 너무 일찍 시작되었습니다. 따라서 렌더러는 네트워크에 표시되지 않습니다. 수동으로 서비스를 중지했다가 다시 시작하면 정상적으로 작동합니다.
루트로서 다음 명령을 실행하여 서비스를 생성합니다.
update-rc.d gmediarender defaults
그러나 링크는 S02gmediarender와 같이 생성되고 Wi-Fi 관리자는 S03wicd이므로 gmediarender 등록을 취소한 후 다음을 시도했습니다.
update-rc.d gmediarender defaults 99
그러나 결과는 같습니다.
처음에 내 스크립트는 다음과 같습니다.
#!/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
헤더 부분을 제거하려고 시도했지만 도움이 되지 않았습니다. 당신의 도움을 주셔서 감사합니다:-)
$network 종속성을 추가한 후 -n 옵션을 사용하거나 사용하지 않고 update-rc.d 명령을 실행합니다.
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 ~ $
내 rc2.d 디렉토리는 다음과 같습니다. 네트워크 관리자와 wicd가 중복되지 않고 간섭하여 문제를 일으킬 수 있는지 궁금합니다.
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 $
/etc/rc2.d/S02gmediarender
새로운 시도: 이름을 다음과 같이 변경해 보았습니다. /etc/rc2.d/S06gmediarender
동일한 문제: 재부팅 후 서비스가 네트워크에 표시되지 않습니다.
마침내:
나는 다른 방향으로 나아갔습니다. 즉, 문제를 더 간단하게 만들기 위해 wicd와 네트워크 관리자가 서로 간섭할 수 있다고 의심했기 때문입니다. 그래서 그 중 두 개를 제거하고 /etc/network/interfaces
RPI가 WiFi 액세스 포인트에만 연결되도록 구성했습니다. KISS 효과: 간단하고 어리석게 유지하십시오. ;-) Wi-Fi 관리자 오버헤드가 없으며 재부팅 후 GMediaRenderer가 이제 내 네트워크에서 작동합니다.
답변1
최신 데비안은 종속성 기반 초기화 시스템을 사용합니다. 종속성은 init 스크립트 상단의 LSB 헤더에 정의됩니다. 다음에 대한 종속성을 정의해야 합니다 $network
.
# Required-Start: $remote_fs $syslog $network
# Required-Stop: $remote_fs $syslog $network