Armadilloフォーラム

デフォルト時刻について

mori22554

2021年10月5日 16時01分

お世話になっております。森です。
Armadillo iot g3lを使用しており、デフォルトの時刻について確認させていただきたいです。
インターネットに接続せずにArmadilloを起動して時刻を確認したところ、HWクロックとシステムクロックの日時に大きく差異があります。(1970年と2016年)
起動時にHWクロックの時刻を参照してシステムクロックに反映するのかと考えていましたが認識違ってますでしょうか?
また2016年11月4日はどこかで設定しているのでしょうか?

■確認内容
root@armadillo:~# hwclock
1970-01-01 09:00:30.082733+0900
root@armadillo:~# date
Fri Nov 4 02:17:44 JST 2016

コメント

アットマークテクノの古賀です。

森さん:
>Armadillo iot g3lを使用しており、デフォルトの時刻について確認させていただきたいです。
>インターネットに接続せずにArmadilloを起動して時刻を確認したところ、HWクロックとシステムクロックの日時に大きく差異があります。(1970年と2016年)
>起動時にHWクロックの時刻を参照してシステムクロックに反映するのかと考えていましたが認識違ってますでしょうか?
>また2016年11月4日はどこかで設定しているのでしょうか?

取り急ぎ、date が出力する日時の起点についてコメントします。
 /var/lib/systemd/timesync/clock
のタイムスタンプを ls -l で見てみて下さい。2016年11月4日に近い日時になっているかと思います。システムクロックの日時は、起動時に、このタイムスタンプを見て起点としているようです。NTP サーバから日時取得するたびに、このファイルのタイムスタンプとして日時が記録され、起動時にシステムクロックの起点日時として参照されるようです。

HW クロックについては、RTC がバッテリバックアップされていなければ日時が保存されませんので、起動時には有効日時を得られず、そのため、 HW クロックの起点日時が Linux の Epoch Time になってしまうのでしょう。その日時をシステムクロックに反映するのがリーズナブルなのかどうかは、意見の分かれるところだと思います。

アットマークテクノの古賀です。
追加でコメントします。

古賀(2021年10月5日 18時50分):
>取り急ぎ、date が出力する日時の起点についてコメントします。
> /var/lib/systemd/timesync/clock
>のタイムスタンプを ls -l で見てみて下さい。2016年11月4日に近い日時になっているかと思います。システムクロックの日時は、起動時に、このタイムスタンプを見て起点としているようです。NTP サーバから日時取得するたびに、このファイルのタイムスタンプとして日時が記録され、起動時にシステムクロックの起点日時として参照されるようです。

これについては、systemd-timesyncd の man ページにも記載されています:
 https://manpages.debian.org/testing/systemd/systemd-timesyncd.8.en.html
"FILES" 節の /var/lib/systemd/timesync/clock の説明には、

/var/lib/systemd/timesync/clock
 
          The modification time of this file indicates the timestamp of the last 
          successful synchronization (or at least the systemd build date, in case 
          synchronization was not possible).

と書かれており、このファイルが存在しない場合は、systemd のビルド日時が起点日時に使われるようです。

古賀さん
ご回答ありがとうございます。
説明が不足してましたが今アットマーク様ご提供のdebian9ベースにNTPは無効にしてクラウド日時と同期するソフトでインターネット切断して確認してます。
該当のファイルは見つからなかったので、systemdのビルド時刻が2016年なのかも知れませんね。確認いたします。

中村です。
横から失礼します。

> 該当のファイルは見つからなかったので、systemdのビルド時刻が2016年なのかも知れませんね。確認いたします。

以前自分で調査したときには(その情報を何度かフォーラムに投稿してます)、
そのファイルは /var/lib/systemd/clock でした。

私のその投稿は何年か前でしたけれど、
今これを書く(投稿する)前にArmadilloのサイトで検索してみたたとろ、
アットマークテクノ社員さんのブログできれいに整理されていました。
[Armadillo-IoT(G3/G3L)/X1:システムクロックとハードウェアクロックの動作]
https://armadillo.atmark-techno.com/blog/10900/8012
ここでも /var/lib/systemd/clock となっています。

--
なかむら

アットマークテクノの古賀です。

中村さん:
>>該当のファイルは見つからなかったので、systemdのビルド時刻が2016年なのかも知れませんね。確認いたします。
>
>以前自分で調査したときには(その情報を何度かフォーラムに投稿してます)、
>そのファイルは /var/lib/systemd/clock でした。

手元の buster (Debian 10) では、/var/lib/systemd/clock が存在していません。
stretch (Debian 9) の環境が、いま手元にないので確認できませんが、stretch から buster に変わる時に、clock ファイルのパスが変わったのかも知れませんね。

at_shinya.koga さんがお使いの Armadillo のユーザーランドが、buster より前のものであれば、そのために /var/lib/systemd/timesync/clock が存在していないのでしょう。中村さんがおっしゃるように、/var/lib/systemd/clock もご覧になってみて下さい。

>私のその投稿は何年か前でしたけれど、
>今これを書く(投稿する)前にArmadilloのサイトで検索してみたたとろ、
>アットマークテクノ社員さんのブログできれいに整理されていました。
>[Armadillo-IoT(G3/G3L)/X1:システムクロックとハードウェアクロックの動作]
>https://armadillo.atmark-techno.com/blog/10900/8012

中村さん、有難うございます。

>ここでも /var/lib/systemd/clock となっています。

ということで、このブログも、buster 用に一部アップデートする必要があるのかも知れませんね。

at_keitaro.takahashi

2021年10月8日 9時51分

高橋です。
補足ですが、systemdのビルド日が2016年11月4日であることはsystemdの該当のバージョンタグ
(今回は232-25+deb9u13なので、v232のタグ)がつけられた日付で確認できます。

以下のページを見ると、「on 4 Nov 2016」と書かれているのが確認できるかと思います。
https://github.com/systemd/systemd/tree/v232

古賀さん、中村さん、高橋さん
みな様、ご教授いただき有難うございます、解決しました。

確認したところ、/var/lib/systemd/clockは1970年になっておりました。
ls -root@armadillo:~# ls -la /var/lib/systemd/clock
-rw-r--r-- 1 systemd-timesync systemd-timesync 0 Jan 1 1970 /var/lib/systemd/clock

systemdのバージョンを確認したところrev232を使用しており、2016/11/4と一致しているためビルド時刻が使われているようです。
ブログのリンクも仕組みがわかり大変助かりました。有難うございます。