salt_009
2023年12月1日 10時24分
Armadilloの時刻設定について調査しており、
systemd-timesyncdがシステムクロックを更新していることは
把握できております。
そこで質問なのですが、
systemd-timesyncdはシステムクロックとハードウェアクロックを
自動で同期する機能を持っているのでしょうか?
コメント
salt_009
2023年12月1日 13時55分
古賀様
返信ありがとうございます。
> ハードウェアクロックとの自動同期機能は、持たないのではないかと思います。
では、systemd-timesyncd以外で自動で同期するシステム等はございますか?
先ほど下記ログのように
ネットワークに接続しない状態で、
ハードウェアクロックを任意の日時に書き換えた後、
訳14分後に再度ハードウェアクロックの確認したところ
同期した時刻になっておりました。
root@armadillo:~# date Fri Dec 1 13:31:02 JST 2023 root@armadillo:~# hwclock --set --date "30 Nov 2022 11:11" root@armadillo:~# date Fri Dec 1 13:31:15 JST 2023 root@armadillo:~# hwclock 2022-11-30 11:11:11.496360+09:00 root@armadillo:~# date Fri Dec 1 13:45:14 JST 2023 root@armadillo:~# hwclock 2023-12-01 13:45:18.128304+09:00
at_shinya.koga
2023年12月1日 15時42分
アットマークテクノの古賀です。
salt_009さん:
>>ハードウェアクロックとの自動同期機能は、持たないのではないかと思います。
>
>では、systemd-timesyncd以外で自動で同期するシステム等はございますか?
>
>先ほど下記ログのように
>ネットワークに接続しない状態で、
>ハードウェアクロックを任意の日時に書き換えた後、
>訳14分後に再度ハードウェアクロックの確認したところ
>同期した時刻になっておりました。
手元に Armadillo-610 がないため、取り急ぎ Armadill-IoT A6 (Debian buster) で確認してみたのですが、ご提示の挙動にはなりませんでした。
ご提示のように、システム日時よりも古い日時をハードウェアクロックに設定した後、待ってみたのですが、20分ほど経過しても、ハードウェアクロックの日時はシステム日時に同期しません。
一点確認です。
お使いの Armadillo は Armadillo-610 とのことですが、その認識で合っているでしょうか?
合っている場合、Armadillo-610 開発セットをお使いでしょうか:
https://armadillo.atmark-techno.com/armadillo-610/A6100-D00Z
開発セットをお使いの場合、RTC バックアップ電池を装着していらっしゃるかどうかも教えてくださいませ。
https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
salt_009
2023年12月1日 16時27分
古賀様
> 手元に Armadillo-610 がないため、取り急ぎ Armadill-IoT A6 (Debian buster) で確認してみたのですが、ご提示の挙動にはなりませんでした。
> ご提示のように、システム日時よりも古い日時をハードウェアクロックに設定した後、待ってみたのですが、20分ほど経過しても、ハードウェアクロックの日時はシステム日時に同期しません。
ご確認ありがとうございます。
> お使いの Armadillo は Armadillo-610 とのことですが、その認識で合っているでしょうか?
ご認識の通り、610を使用しております。
> 合っている場合、Armadillo-610 開発セットをお使いでしょうか:
> https://armadillo.atmark-techno.com/armadillo-610/A6100-D00Z
開発セットにSWやLED等を拡張したものを使用しおります。
> 開発セットをお使いの場合、RTC バックアップ電池を装着していらっしゃるかどうかも教えてくださいませ。
> https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
RTCですが、開発キットに備え付けれているものではなく、
「RX-8025NB」を接続し使用しております。(元から接続されているRTCは接続されていない状態になっています。)
以前フォーラムに問い合わせていただいた内容に沿ってハードウェアクロックとして設定しております。
https://armadillo.atmark-techno.com/forum/armadillo/16322
at_shinya.koga
2023年12月1日 17時11分
アットマークテクノの古賀です。
salt_009さん(2023年12月1日 16時27分):
>>お使いの Armadillo は Armadillo-610 とのことですが、その認識で合っているでしょうか?
>
>ご認識の通り、610を使用しております。
>
>>合っている場合、Armadillo-610 開発セットをお使いでしょうか:
>> https://armadillo.atmark-techno.com/armadillo-610/A6100-D00Z
>
>開発セットにSWやLED等を拡張したものを使用しおります。
…
>RTCですが、開発キットに備え付けれているものではなく、
>「RX-8025NB」を接続し使用しております。(元から接続されているRTCは接続されていない状態になっています。)
>以前フォーラムに問い合わせていただいた内容に沿ってハードウェアクロックとして設定しております。
>https://armadillo.atmark-techno.com/forum/armadillo/16322
了解しました。開発セットの拡張ボード搭載の RTC とは違うものをお使いなのですね。
>>開発セットをお使いの場合、RTC バックアップ電池を装着していらっしゃるかどうかも教えてくださいませ。
>> https://manual.atmark-techno.com/armadillo-610/armadillo-610_product_ma…
salt_009さん(2023年12月1日 16時29分):
>記載漏れがありました申し訳ございません。
>接続したRTCの「RX-8025NB」にはバックアップ電池が接続されております。
これについても、了解しました。
試しに、ですが、poweroff して AC 電源を切った後、RTC バックアップ電池を抜いてから起動し直した場合、ご提示頂いたのと同じ手順を行うと、どうなるでしょうか?
salt_009
2023年12月1日 17時45分
古賀様
> 試しに、ですが、poweroff して AC 電源を切った後、RTC バックアップ電池を抜いてから起動し直した場合、ご提示頂いたのと同じ手順を行うと、どうなるでしょうか?
実施してみました。ログを記載いたします。
// v-起動直後から permitted by applicable law. root@armadillo:~# hwclock hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument root@armadillo:~# date Fri Dec 1 17:25:28 JST 2023 root@armadillo:~# hwclock --set --date "30 Nov 2022 11:11" root@armadillo:~# hwclock 2022-11-30 11:11:05.515999+09:00 root@armadillo:~# date Fri Dec 1 17:25:57 JST 2023 root@armadillo:~# date Fri Dec 1 17:39:15 JST 2023 root@armadillo:~# hwclock 2023-12-01 17:39:18.015789+09:00 // ← 時刻が書き換わっている
結果として時刻が同期しております。
at_shinya.koga
2023年12月1日 18時04分
アットマークテクノの古賀です。
salt_009さん:
>>試しに、ですが、poweroff して AC 電源を切った後、RTC バックアップ電池を抜いてから起動
>>し直した場合、ご提示頂いたのと同じ手順を行うと、どうなるでしょうか?
>
>実施してみました。ログを記載いたします。
…
>結果として時刻が同期しております。
了解しました。ご確認有り難うございます。
// v-起動直後から permitted by applicable law. root@armadillo:~# hwclock hwclock: ioctl(RTC_RD_TIME) to /dev/rtc0 to read the time failed: Invalid argument root@armadillo:~# date Fri Dec 1 17:25:28 JST 2023 root@armadillo:~# hwclock --set --date "30 Nov 2022 11:11" root@armadillo:~# hwclock 2022-11-30 11:11:05.515999+09:00 root@armadillo:~# date Fri Dec 1 17:25:57 JST 2023 root@armadillo:~# date Fri Dec 1 17:39:15 JST 2023 root@armadillo:~# hwclock 2023-12-01 17:39:18.015789+09:00 // ← 時刻が書き換わっている
RTC 日時が無効な状態で起動しても、その後システムクロックに同期する、ということですね。
他に切り分けして試すとしたら、起動後に、systemd-timesyncd サービスを systemctl で
停止してから同じ操作を行った場合にどうなるか見る、くらいでしょうか。
こちらで確認せずに逆質問ばかりになってしまい、ごめんなさい。
at_dominique.m…
2023年12月4日 9時46分
salt_009さん、
よこからすみません、
マルティネです。
ntp で時間が取得された状態は systemd-timesyncd ではなく、カーネルがやく11分毎に rtc に時間を記録します。
(具体的なコードは linux カーネルの kernel/time/ntp.c の sync_cmos_clock() を参考にできます: https://github.com/atmark-techno/linux-4.14-at/blob/master/kernel/time/… - 新しいカーネルでは sync_hw_clock にリネームされています)
確認のために無効化を試したい場合は、ntp サービス停止だけでは unsync のフラグが設定されないかもしれませんので、systemd-timesyncd が無効な状態で再起動するか、サービス停止後に date -s などでシステムクロックも一度ぶらしてから試してください。
よろしくお願いします。
at_dominique.m…
2023年12月4日 10時03分
連続返事ですみません、以下の文書に日本語になっていなかったので訂正します:
> 確認のために無効化を試したい場合は、ntp サービス停止だけでは unsync のフラグが設定されないかもしれませんので、systemd-timesyncd が無効な状態で再起動するか、サービス停止後に date -s などでシステムクロックも一度ぶらしてから試してください。
の「date -s などでシステムクロックも一度ぶらしてから」
を「date -s などでシステムクロックを一度ずらしてから」のつもりで書いてました。
システムクロックの ntp が取得されている状態をクリアーしないとサービスを停止してもカーネルが rtc を更新し続けるおそれがありますので、たとえば 「date -s "$(date)"
」で ntp 取得状態がリセットされるはずです。
よろしくおねがいします。
salt_009
2023年12月4日 13時15分
マルティネ様
返信ありがとうございます。
> ntp で時間が取得された状態は systemd-timesyncd ではなく、カーネルがやく11分毎に rtc に時間を記録します。
デーモン等の機能ではなく、カーネルそのものが待つ機能でRTCとの同期が行われていたという認識でよろしいでしょうか。
>確認のために無効化を試したい場合は、ntp サービス停止だけでは unsync のフラグが設定されないかもしれませんので、
>systemd-timesyncd が無効な状態で再起動するか、サービス停止後に date -s などでシステムクロックも一度ぶらしてから試してください。
同期しなくなることを確認できました。
ありがとうございます。
at_dominique.m…
2023年12月4日 15時04分
at_shinya.koga
2023年12月1日 10時59分
アットマークテクノの古賀です。
salt_009さん:
>Armadilloの時刻設定について調査しており、
>systemd-timesyncdがシステムクロックを更新していることは
>把握できております。
>
>そこで質問なのですが、
>systemd-timesyncdはシステムクロックとハードウェアクロックを
>自動で同期する機能を持っているのでしょうか?
ハードウェアクロックとの自動同期機能は、持たないのではないかと思います。
このフォーラムの、以下のスレッドをご覧になってみてください:
デフォルト時刻について
https://armadillo.atmark-techno.com/forum/armadillo/10248
ArmadilloのRTCの動作について
https://armadillo.atmark-techno.com/forum/armadillo/3740