0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

NTP ST1の起動

Last updated at Posted at 2023-04-16

普通の誤家庭には4台のNTP ST1があると思いますが、起動方法をチューンしてみました。

日本では停電はめったにないのですが、4台もあると手動で立ち上げるのが面倒なので、GPS,JJYのセンテンスをmrubyでパースしてdateコマンドで時間を設定後にntpdを起動するようにしました。

watchdogでリブートした場合も同じです。

ところがこの方法だと300msとか大きなオフセットがついてntpdが起動することがあり、そうすると通常運転に戻るのにかなりな時間がかかってしまいます。

停電の場合は仕方ないとしてもwatchdogの場合は、他のST1は動いているので、それを使ってあわせたほうがオフセットが小さくなります。

スクリプトはこうしてみました。

#!/bin/sh

RS=`sysctl -n dev.mtk_wdog.0.rststat`

if [ ${RS} == 0 ]; then

DATE=`/root/gettime.rb`

date ${DATE}

else

ntpdate -b 10.0.1.18

fi

ntpd -p /var/run/ntpd.pid

万が一ntpdateで指定したST1が落ちてるといけないので安定しているST2で合わせています。

rebootで起動した場合はこのスクリプト自体を実行せずntpdを上げないようにしています。これはntpdが上がってしまうとメモリのフラグメントが大きくなってリモートでのflashの更新(reupgrade)ができなくなるためです。

reupgrade後はrebootで上がってくるので、上がったところでwatchdogコマンドを実行して抜けると、wetchdogでresetしてntpdが起動します。

8:19にwatchdogでrebootしたグラフです。想定どうりの動きです。

filename(11).png

なかなか合わないケースもありました。

filename(5).png

ntpd -xで起動するようにしてみました。

filename.png

この日は16:50:01から18:10:43まで雷害回避による停波していたのですが、なぜかその後に調整が急になっています。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?