メモ:Rasbian+mini-httpdの遅延起動
非常にこまかい、ノウハウとも言えないようなtipsですが……
raspberry pi 2でセンサー情報を取得してから、それをmathematicaでグラフにして、mini-httpdを使ってWebページとして結果を見られるようにしています。
mini-httpdはRasbian OSが起動したときに自動で起動して欲しいわけですが、/etc/init.d/mini-httpdにスクリプトを配置して、/etc/rc?.d/S99mini-httpdにリンクを張る、などとしてもなぜか自動起動されず、困っていました。
試しに手動でsudo /etc/rc2.d/S99mini-httpd start などとすると起動します。ますます訳がわかりません。この状態でしばらく手詰まりとなっていたのですが、やっと回避方法を見つけることができました。ヒントは/var/log/daemon.logでした。
493 May 3 03:40:21 raspberrypi wpa_supplicant[1735]: wlan0: Trying to associate with a4:12:42:96:3d:aa (SSID='aterm-cae33a-g' freq=2417 MHz) 494 May 3 03:40:21 raspberrypi wpa_supplicant[1735]: wlan0: Association request to the driver failed 495 May 3 03:40:21 raspberrypi mini-httpd[1875]: bind 192.168.10.104 - Cannot assign requested address 496 May 3 03:40:21 raspberrypi mini-httpd[1875]: can't bind to any address 497 May 3 03:40:21 raspberrypi wpa_supplicant[1735]: wlan0: Associated with a4:12:42:96:3d:aa 498 May 3 03:40:21 raspberrypi wpa_supplicant[1735]: wlan0: WPA: Key negotiation completed with a4:12:42:96:3d:aa [PTK=TKIP GTK=TKIP] 499 May 3 03:40:21 raspberrypi wpa_supplicant[1735]: wlan0: CTRL-EVENT-CONNECTED - Connection to a4:12:42:96:3d:aa completed (auth) [id=1 id_str=]
よく見ると、無線LAN(wpa_supplicant)の起動よりもまえにmini-httpdが起動しようとしています。このため、mini-httpdはcan't bind to any addressというエラーになってしまっています。無線LANの開通自体、手探りでやりましたから何か悪影響がでているのでしょうか……
ネットワークはrcS.dで起動している(はず)なので、なぜここで順番が前後してしまっているのか、よくわかっていないのですが、ともかくこれが原因とわかったので、mini-httpdを少し待ってから起動するように調整しました。"sleep 10"を追加という、わかりやすく、かつ泥臭い方法です。
# Functions start() { sleep 10 if [ "$START" = "1" ] then echo -n "Starting $DESC: " start-stop-daemon --start --quiet --pidfile /var/run/$NAME.pid \ --exec $DAEMON -- $DAEMON_OPTS echo "$NAME." else printf "You have to edit /etc/mini-httpd.conf and\n/etc/default/mini-httpd before running mini-httpd!\n" exit 0 fi }
スマートなやりかたではありませんが、とりあえずこれで起動するようになりました。
残念ながら、根本的な解決方法はわかっていません。
ELECOM 無線LAN子機 コンパクトモデル 11n/g/b 150Mbps USB2.0 WDC-150SU2MWH
- 出版社/メーカー: エレコム
- 発売日: 2014/05/11
- メディア: Personal Computers
- この商品を含むブログを見る