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
コメント
at_shinya.koga
アットマークテクノの古賀です。
追加でコメントします。
古賀(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 のビルド日時が起点日時に使われるようです。
mori22554
y.nakamura
中村です。
横から失礼します。
> 該当のファイルは見つからなかったので、systemdのビルド時刻が2016年なのかも知れませんね。確認いたします。
以前自分で調査したときには(その情報を何度かフォーラムに投稿してます)、
そのファイルは /var/lib/systemd/clock でした。
私のその投稿は何年か前でしたけれど、
今これを書く(投稿する)前にArmadilloのサイトで検索してみたたとろ、
アットマークテクノ社員さんのブログできれいに整理されていました。
[Armadillo-IoT(G3/G3L)/X1:システムクロックとハードウェアクロックの動作]
https://armadillo.atmark-techno.com/blog/10900/8012
ここでも /var/lib/systemd/clock となっています。
--
なかむら
at_shinya.koga
アットマークテクノの古賀です。
中村さん:
>>該当のファイルは見つからなかったので、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
高橋です。
補足ですが、systemdのビルド日が2016年11月4日であることはsystemdの該当のバージョンタグ
(今回は232-25+deb9u13なので、v232のタグ)がつけられた日付で確認できます。
以下のページを見ると、「on 4 Nov 2016」と書かれているのが確認できるかと思います。
https://github.com/systemd/systemd/tree/v232
mori22554
古賀さん、中村さん、高橋さん
みな様、ご教授いただき有難うございます、解決しました。
確認したところ、/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と一致しているためビルド時刻が使われているようです。
ブログのリンクも仕組みがわかり大変助かりました。有難うございます。
at_shinya.koga
2021年10月5日 18時50分
アットマークテクノの古賀です。
森さん:
>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 になってしまうのでしょう。その日時をシステムクロックに反映するのがリーズナブルなのかどうかは、意見の分かれるところだと思います。