Armadilloフォーラム

再起動時にシステム時刻が9時間進む

kn_kobayashi

2024年2月15日 9時45分

ArmadilloIoTG4を再起動するとシステム時刻が9時間進む現象が発生しています。
NTPにより時刻同期すると正しい時刻に戻りますが、さらに再起動すると、また9時間進んでいます。
このような現象の原因となる操作や設定等について、ご教示頂けないでしょうか。

現象が発生しているarmadilloの情報は以下の通りです。
 Armadillo Base OSのバージョン:3.18.5-at.8
 BusyBoxのバージョン:v1.36.1
 タイムゾーン:Asia/Tokyo

コメント

at_dominique.m…

2024年2月15日 10時19分

kn_kobayashiさん、

お世話になっています、
マルティネです。

> ArmadilloIoTG4を再起動するとシステム時刻が9時間進む現象が発生しています。
> NTPにより時刻同期すると正しい時刻に戻りますが、さらに再起動すると、また9時間進んでいます。
> このような現象の原因となる操作や設定等について、ご教示頂けないでしょうか。

Armadillo Base OS(ABOS) のデフォルトでは hwclock (/dev/rtc0) に時間を UTC の値で保存していますが、この説明を読むとなぜか localtime で保存されてないかと推測します。

いくつかの設定を確認したいので、以下のコマンドの出力を提供していただけますでしょうか?

# システムと RTC の時間を確認
armadillo:~# date
Thu Feb 15 10:14:31 JST 2024
armadillo:~# hwclock
Thu Feb 15 01:14:33 2024  0.000000 seconds
# chrony の設定
armadillo:~# chronyd -p
driftfile /var/lib/chrony/chrony.drift
rtcsync
cmdport 0
makestep 1 3
initstepslew 10 pool.ntp.org
pool pool.ntp.org iburst
# timezone の設定
armadillo:~# ls -l /etc/localtime 
lrwxrwxrwx    1 root     root            19 Jan 30 23:35 /etc/localtime -> zoneinfo/Asia/Tokyo
armadillo:~# ls -l /etc/zoneinfo/Asia/Tokyo 
-rwxr-xr-x    1 root     root           309 Jan 30 23:35 /etc/zoneinfo/Asia/Tokyo

また、ABOSの chronyd 以外に ntp クライアントを使用していないですね?

よろしくお願いします

お世話になっております。
投稿者と同じ開発をしている者です。代理で返答いたします。

> いくつかの設定を確認したいので、以下のコマンドの出力を提供していただけますでしょうか?
以下、時刻同期できている状態でのコマンド出力結果になります。

/home/atmark # date
Thu Feb 15 20:11:47 JST 2024
/home/atmark # hwclock
Thu Feb 15 20:12:46 2024  0.000000 seconds 
/home/atmark # chronyd -p 
server 192.168.XXX.YYY iburst 
makestep 1 1 
/home/atmark # ls -l /etc/zoneinfo/Asia/Tokyo
-rwxr-xr-x    1 root     root           309 Dec 28 14:10 /etc/zoneinfo/Asia/Tokyo
/home/atmark # ls -lr /etc/localtime
lrwxrwxrwx    1 root     root            19 Dec 28 14:10 /etc/localtime -> zoneinfo/Asia/Tokyo

> また、ABOSの chronyd 以外に ntp クライアントを使用していないですね?
はい、chronyd以外は使用しておりません。

以上、よろしくお願いいたします。

at_dominique.m…

2024年2月16日 11時15分

sakさん、

お返事ありがとうございます。

> /home/atmark # chronyd -p 
> server 192.168.XXX.YYY iburst 
> makestep 1 1 

chrony の defaults.conf にある「rtcsync」設定がなくなりましたので、chrony のデフォルトでは時間を localtime として RTC に保存してしまいます。

この問題は、以下のどれかの方法で解決できます:
*「rtcsync」設定を戻してサービスを再起動してから11分ぐらいまで待っていただければ Linux カーネルから再び UTC で保存してくれるか
*「rtconutc」のオプションを設定することで chrony に時間を utc で保存させるか

makestep の設定はデフォルトとほぼ同じですので、推奨としてはデフォルトのコンフィグに戻して、以下の設定で今のコンフィグに近づくことができます:
- server 192.168.XXX.YYY の設定を /etc/chrony/conf.d/servers.conf に設定すればデフォルトの pool.ntp.org 設定を上書きする形になります。
- 起動時の同期を無効にしたい場合は/etc/chrony/conf.d/initstepslew.conf を空のファイルとして生成すればその設定がなくなります。

よろしくお願いします。

マルティネ様

お返事ありがとうございます。
3点、質問事項がございます。

【質問1】
「dafaults.conf」について、現在開発中のArmadilloで確認しましたところ、
以下の様な構成となっていました。

①/lib/chrony.conf.d/
 ディレクトリがあり、defaults.confがあり、rtcsyncがある
②/etc/chrony/conf.d/
 ディレクトリがあるが、defaults.confが無い
③/etc/atmark/chrony.conf.d
 ディレクトリ自体が存在しない

「armadillo-IoT ゲートウェイ G4 製品マニュアル」(3.9章)によると、
①にて「rtcsync」の設定がされているので、UTCで書込みされているもの
(現象は発生しないもの)と考えていますが、認識違っていますでしょうか。

▼ 3.9章の記載内容
デフォルトの設定(使用するサーバーなど)は /lib/chrony.conf.d/ にあり、変更用に /etc/chrony/
conf.d/ のファイルも読み込みます。/etc/chrony/conf.d/ ディレクトリに /lib/chrony.conf.d/ と同じ
ファイル名の設定ファイルを置いておくことで、デフォルトのファイルを読まないようになります。

【質問2】
> chrony の defaults.conf にある「rtcsync」設定がなくなりましたので、
> *「rtcsync」設定を戻してサービスを再起動してから11分ぐらいまで待っていただければ
> Linux カーネルから再び UTC で保存してくれるか
すみません、解釈の違いでしたら申し訳ありませんが、
ご回答事項の「設定がなくなりました」「設定を戻して」という文言は、
弊社が、出荷状態から①②③の設定を変更した、という意味でしょうか。
弊社では、特に出荷状態から①②③について、rtcsyncの設定を変更したりは特にしておりません。
出荷状態の認識が違っている、ということは無いでしょうか。

【質問3】
調査している中で気づいた素朴な疑問となります。
出荷状態の「/etc/chrony/chrony.conf」のconfdirには、「/lib/chrony.conf.d」が記載されていないため、
「/lib/chrony.conf.d/defaults.conf」の設定が反映されていない、ということはないでしょうか。

▼/etc/chrony/chrony.conf(出荷状態)の設定内容
# include files ending in .conf in the following directories
# if a file has the same name in both, only the first one is loaded
# otherwise files are loaded in lexicographical order in the file
# names.
confdir /etc/atmark/chrony.conf.d /etc/chrony/conf.d
makestep 1 1

at_dominique.m…

2024年2月19日 16時54分

kn_kobayashiさん、

マルティネです。

> 【質問1】
> 「armadillo-IoT ゲートウェイ G4 製品マニュアル」(3.9章)によると、
> ①にて「rtcsync」の設定がされているので、UTCで書込みされているもの
> (現象は発生しないもの)と考えていますが、認識違っていますでしょうか。

あったいます。
標準ではそうなっているはずです(デフォルトで存在する defaults.conf を読み取って、rtcsync が設定されているはずです)

> 【質問2】
> > chrony の defaults.conf にある「rtcsync」設定がなくなりましたので、
> > *「rtcsync」設定を戻してサービスを再起動してから11分ぐらいまで待っていただければ
> > Linux カーネルから再び UTC で保存してくれるか
> すみません、解釈の違いでしたら申し訳ありませんが、
> ご回答事項の「設定がなくなりました」「設定を戻して」という文言は、
> 弊社が、出荷状態から①②③の設定を変更した、という意味でしょうか。
> 弊社では、特に出荷状態から①②③について、rtcsyncの設定を変更したりは特にしておりません。
> 出荷状態の認識が違っている、ということは無いでしょうか。

すみません、デフォルト状態でアップデートを行うと defaults.conf が読み取られるはずですので、あえて defaults.conf を上書きされるような設定を行っている状態( /etc/chrony/chrony.conf の変更か別のディレクトリに defaults.conf の作成)だと勘違いしていましたが、質問3をみたところでこちらの勘違いですので大変失礼しました。

> 【質問3】
> 調査している中で気づいた素朴な疑問となります。
> 出荷状態の「/etc/chrony/chrony.conf」のconfdirには、「/lib/chrony.conf.d」が記載されていないため、
> 「/lib/chrony.conf.d/defaults.conf」の設定が反映されていない、ということはないでしょうか。

そのとおりですね。

現在のバージョンでアップデートされた内容は以下のとおりです:

armadillo:~# cat /etc/chrony/chrony.conf 
# include files ending in .conf in the following directories
# if a file has the same name in both, only the first one is loaded
# otherwise files are loaded in lexicographical order in the file
# names.
# Note /etc/atmark/chrony.conf.d is left for backwards compatibility,
# files in /etc/chrony/conf.d can be modified normally.
confdir /etc/atmark/chrony.conf.d /etc/chrony/conf.d /lib/chrony.conf.d

ABOS 3.18.4-at.5 では ABOS にインストールされている defaults.conf を /etc/chrony/conf.d から /lib/chrony.conf.d へ移動しましたが、そのバージョンをインストールする際に /etc/chrony/chrony.conf も更新されたはずで、なぜか更新されなかったですね。
また、そのバージョンから /etc/chrony/chrony.conf.d も保存されるようになったはずなので、chrony.conf の変更が入らなくっても前のバージョンにあった /etc/chrony/conf.d/defaults.conf も残っていたはずですね…

修正としては /etc/chrony/chrony.conf を上記の内容に更新していただければ問題が解決されますが、他のお客さんの迷惑になっている可能性がありますので理由を確認させていただければ助かります。

以下のコマンドの出力を提供していただけますでしょうか?

# 現在 chrony 関係のファイルをアップデートの際にどういう風に保存されるかの確認
armadillo:~# grep chrony /etc/swupdate_preserve_files 
# v11 list: chrony config
/etc/chrony/conf.d
 
# 出荷時にインストールされていたバージョンと base_os の更新歴史
armadillo:~# grep base_os /var/at-log/atlog
base_os 3.18.5-at.7
Jan 29 13:03:05 armadillo NOTICE swupdate: Installed update to /dev/mmcblk2p2: boot: 2020.4-at21 -> 2020.4-at22, base_os: 3.18.5-at.7 -> 3.18.6-at.10

よろしくお願いします

マルティネ様

ご回答ありがとうございます。
上記コマンドの結果を記載します。
ご確認、よろしくお願いします。

/home/atmark # grep chrony /etc/swupdate_preserve_files
# v11 list: chrony config /etc/chrony/conf.d

/home/atmark # grep base_os /var/at-log/atlog
base_os 3.18.4-at.6
Jan 18 19:07:16 armadillo NOTICE swupdate: Installed update to
/dev/mmcblk2p2: boot: 2020.4-at19 -> 2020.4-at21, base_os: 3.18.4-at.6 -> 3.
18.5-at.8
/home/atmark #

マルティネ様
お世話になっております。

>他のお客さんの迷惑になっている可能性がありますので理由を確認させていただければ助かります
上記のご確認について、何か進展ございますでしょうか。
弊社開発の都合で恐縮ですが、お早めにご回答いただけますと幸いです。

at_dominique.m…

2024年2月27日 11時30分

kn_kobayashiさん

マルティネです。
返事が遅くなってもうしわけございません、返事したつもりで疑問を抱えたままに送信してなかった状態でした…

以下は逆順番の回答となります。

> /home/atmark # grep base_os /var/at-log/atlog
> base_os 3.18.4-at.6
> Jan 18 19:07:16 armadillo NOTICE swupdate: Installed update to
> /dev/mmcblk2p2: boot: 2020.4-at19 -> 2020.4-at21, base_os: 3.18.4-at.6 -> 3.
> 18.5-at.8

この個体は 3.18.4-at.6 のバージョンでインストールされましたが、そのバージョンでは chrony のコンフィグがすでに移動されたはずですので、もしかしたら abos-ctrl make-installer によるインストールディスクでインストールされた物でしょうか?
その場合は残念ながら、make-installer を実行するまでの歴史を保存してませんので、make-installer を実行したシステムがまだあればそちらでの /var/at-log/atlog を確認していただければ何か分かるかもしれませんが、状況かくにんのためにインストーラーの状態も確認したいところですね。

make-installer によるインストールディスクでのインストールで、そのインストールディスクがまだありましたらその中身の確認方法を教えますので言ってください。

ちなみに、こちらで 3.17 からのアップデートでも、3.18.4-at.6 の新規インストールでも再現しようとしましたがそういう状態にたどりつきませんでしたので、なぞが深い状態ままです…

> /home/atmark # grep chrony /etc/swupdate_preserve_files
> # v11 list: chrony config /etc/chrony/conf.d

確認ですが、/etc/chrony/conf.d は別の行に書いていますでしょうか?コピーの影響でコメントと同じ行になってしまったか、元々コメントの行として保存されたかを確認したいです。

確認の再に空き行が入ってないこともなかったので、すごく気になりますがコメントになってしまった場合は /etc/chrony/conf.d/defaults.conf がなくなった理由になりますね…

ぎゃくに、/etc/chrony/chrony.conf も保存リストに記載されてませんので、3.18.5-at.8 をインストールした際に新しいファイルが入ったはずです(これも確認しました)
base_os がインストールされた後に /etc/chrony/chrony.conf を上書きするようなコンフィグファイルのアップデートを行った心当たりがございますか?

よろしくお願いします。