Armadilloフォーラム

時刻校正について

tecs.heta

2020年7月13日 10時51分

Armadillo-IOT G3(メモリ1G、3G非搭載、WLAN非搭載、バックアップ電池なし)を使用しています。
LANケーブル接続し、外につながる環境において、本体システムを起動させると、時刻同期されますが、どのような仕組みになっているのでしょうか?
できれば、ネットワーク経由での時刻同期を行いたくないです。
以上、宜しくお願いいたします。

コメント

at_do.phanngoc

2020年7月13日 19時07分

ドです。

Armadillo IoT ゲートウェイの時刻同期はネットワークに繋がる場合NTPサーバーと同期され、
ネットワーク繋がらない場合はハードウェアクロックが読み出される
という仕組みで実施しています。

詳細については以下のリンクを参照出来ます。
https://manual.atmark-techno.com/armadillo-iot-g3/armadillo-iotg-g3_pro…

NTPを使いたくない場合は
/etc/network/if-up.d/ntpdate の削除し、
(参照:https://armadillo.atmark-techno.com/forum/armadillo/2692
systemd-timesyncd.service の停止する
$ systemctl stop systemd-timesyncd.service
$ systemctl disable systemd-timesyncd.service
というようにすると良いのですが、試したところで
システムを再起動された場合はハードウェアクロック時刻と同期されずに
"Thu Nov 3 17:17:00 UTC 2016"
となっています。
こちらでも原因を調べてみます。

y.nakamura

2020年7月15日 2時04分

中村です。

どなたからも指摘が入らないようなので・・・

> Armadillo IoT ゲートウェイの時刻同期はネットワークに繋がる場合NTPサーバーと同期され、
> ネットワーク繋がらない場合はハードウェアクロックが読み出される

この2つの順番は逆です。
というか、2行目の説明は間違いです。
カーネル起動時にハードウェアクロック(RTC)を読み出します。
ネットワークに繋がるかどうかがわかる前なので、
ネットワークに繋がるかどうかに関係なくです。
起動時のコンソールに次のように表示されます。
bmic_rtc 3-0011: setting system clock to 2020-07-14 15:49:54 UTC (1594741794)

そのあと、ネットワークがつながればNTPからセットします。

「ネットワークにつながれば・・・」は、
つながった時に1回だけの/etc/network/if-up.d/ntpdateによる同期と、
その後のsystemd-timesyncd.serviceによる更新(同期)があるのですが、
systemd-timesyncd.serviceは起動時にも1つ仕事をしていて、
サービス起動時に/var/lib/systemd/clockのタイムスタンプをチェックして、
このファイルのタイムスタンプがカーネル起動時にRTCでセットされた
現在時刻よりも新しいときには、このファイルの時刻をセットしています。
たとえばRTCがバッテリバックアップされていないときなど、
/var/lib/systemd/clockのタイムスタンプよりもRTCの方が過去になると、
このファイルのタイムスタンプセットされます。

そのあと、NTPとの同期になります。

時系列的には、次のようになるのではないかと思います。
(systemd-timesyncdサービスがネットワーク接続よりも先に起動なら)
1. RTCによる時刻設定
2. /var/lib/systemd/clockのタイムスタンプによる時刻設定
(RTCよりもタイムスタンプが新しいときだけ)
3. ifup時のntpdateによる設定
4. systemd-timesyncd.serviceによる更新
(このときに/var/lib/systemd/clockタイムスタンプも更新)

> $ systemctl stop systemd-timesyncd.service
> $ systemctl disable systemd-timesyncd.service

でtimesyncdを停止しているなら、上の2と4はないはずなのですけど、

> というようにすると良いのですが、試したところで
> システムを再起動された場合はハードウェアクロック時刻と同期されずに
> "Thu Nov 3 17:17:00 UTC 2016"
> となっています。

これは何でしょうねぇ。
上の4つ以外にもあるのかもしれません。

--
なかむら