インストール。インストール後スクリプトの実行が失敗したとメッセージ出るが、無視。
opkg install openntpd
一旦エラーを出させた後、${IPKG_INSTROOT}/usr/lib/opkg/info/openntpd.postinstの一行目を
#!/bin/sh ↓ #!/opt/bin/sh
に変更して、再度okpg install openntpdを入力。これにより${IPKG_INSTROOT}/usr/sbin/ntpd (=busyboxへのリンク)が削除される。(これやらないと以後のopkgコマンド実行時に失敗したスクリプトの再実行を行いエラー→何もインストールできなくなる)
/etc/passwdにユーザーnetworkを追加network::1001:1001:Network daemon,,,:/tmp/root:/sbin/reboot設定ファイル/etc/ntpd.confの作成。
listen on 192.168.1.1 servers ntp.jst.mfeed.ad.jp servers ntp.ring.gr.jpdriftファイルが書き込まれるフォルダを作成。
mkdir /var/db確認のためデーモン化せずに起動。
/opt/sbin/ntpd -sd以下のメッセージが出て終了してしまう場合、ntpd.confのサーバーアドレスを変える。理由は調べてませんが、IP v6をサポートするサーバーだとダメかもしれない(正しいなら将来不安だな)
fatal: client_query socket: Address family not supported by protocol問題無さそうなら、Ctrl+Cで終了。デーモンとして起動。
/opt/sbin/ntpd -s
[2013/2/17 追記] openntpdインストール時のエラー対策を追加。
[2013/2/17 追記] /etc/passwdが/tmp/etc/passwdへのリンクになっていて再起動でnetworkユーザーが消えてしまうので、起動スクリプトで対策(/opt/ect/init.dに入れる)。
[2013/3/2 追記] 起動スクリプト改良。電源On時に時計が1970/1/1になると修正量が大きすぎてopenntpdがエラーを出すので対策。
#!/opt/bin/sh ret=1 until [ $ret -eq 0 ] do /usr/sbin/ntpclient ntp.ring.gr.jp || /usr/sbin/ntpclient ntp.jst.mfeed.ad.jp ret=$? done sed -e '/^network:/d' /tmp/etc/passwd > /tmp/etc/passwd.new echo 'network::1001:1001:Network daemon,,,:/tmp/root:/sbin/reboot' >> /tmp/etc/passwd.new ln -sf /tmp/etc/passwd.new /etc/passwd /opt/sbin/ntpd -s
Comments