Armadilloフォーラム

Armadillo-640の時刻設定

k.sato

2024年7月2日 9時39分

佐藤です。

お世話になっております。

●コンテナ内からREST APIを使用した時刻設定
https://armadillo.atmark-techno.com/forum/armadillo/19677

上記で質問してArmadilloの時刻は変更できたのですが、
rebootコマンドで再起動し、dateコマンドで時刻を確認すると設定した時刻+9時間となっていました。

また、ABOS Webの時刻設定よりPCと時刻を同期させrebootした場合でも、
同じ様に+9時間ズレているのですが何か設定がおかしいのでしょうか?

ABOS Webのタイムゾーン設定もAsia/Tokyoとなっております。

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

コメント

at_dominique.m…

2024年7月2日 10時49分

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

> 同じ様に+9時間ズレているのですが何か設定がおかしいのでしょうか?

申し訳ございません、ABOS Web の不具合です。
Armadillo Base OS では時刻を UTC で保存していますが、ABOS Web は hwclock のデフォルトである localtime で保存してしまっていましたので、再起動の際にそのズレが発生します。

すぐに修正できますので、以下のコマンドを実行してください:

# 修正
armadillo:~# sed -i -e 's/hwclock --/hwclock -u --/' /usr/libexec/abos-web/time_setup.sh
# 確認
armadillo:~# grep hwclock /usr/libexec/abos-web/time_setup.sh
	hwclock -u --systohc \
# 永続化
armadillo:~# persist_file /usr/libexec/abos-web/time_setup.sh

その後にあらかじめ時刻を同期すると再起動してもずれないはずです。
今月のアップデートにも対応します。

よろしくお願いします。

k.sato

2024年7月2日 11時17分

マルティネ様

佐藤です。
素早い回答ありがとうございます。

> 今月のアップデートにも対応します。
対応よろしくお願いします。

●NTPサーバー同期間隔(chrony)
https://armadillo.atmark-techno.com/forum/armadillo/19865
また、REST APIにてNTPサーバの設定も行っているのですが、
設定変更後に「cat /etc/chrony/conf.d/servers.conf」で確認してから
再起動しても前回の設定に戻っている現象が発生しました。

時間を空けると保存出来たり、出来なかったり不安定なのですが、
設定変更から再起動までどれくらい空けなければならないというのがあれば教えてください。

それとも自分で「persist_file」をしなければならないのでしょうか?

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

at_dominique.m…

2024年7月2日 12時58分

佐藤さん

マルティネです。

> ●NTPサーバー同期間隔(chrony)
> https://armadillo.atmark-techno.com/forum/armadillo/19865
> また、REST APIにてNTPサーバの設定も行っているのですが、
> 設定変更後に「cat /etc/chrony/conf.d/servers.conf」で確認してから
> 再起動しても前回の設定に戻っている現象が発生しました。

すみません、こちらの問題については手元で再現できてません。

REST API で設定を変更した後に自動的に persist_file されるはずですが、何でしょうね。

REST API コマンドで設定した内容は /etc/chrony/conf.d/servers.conf に反映されていますが、再起動の際に戻ります、ということであっていますね?

念のため abos-web のバージョンと使ってるコマンドを教えていただけますか?

> 時間を空けると保存出来たり、出来なかったり不安定なのですが、
> 設定変更から再起動までどれくらい空けなければならないというのがあれば教えてください。

こちらについては、ネットワーク接続がある状態で initstepslew の設定があれば、コマンドが終了した時点でそちらのサーバーから時刻の取得が完了しています。

initstepslew を使わない場合、またはinitstepslew の時間いないにサーバーに連絡できなかった場合は普通の ntp スケジュールで取得していますので、これぐらいの期間で設定される保証はないです。
(サーバーの設定に「iburst」を設定した場合はネットワーク接続できた後の数十秒程度になると思います。iburst なければ数分かかると思います)

よろしくお願いします。

k.sato

2024年7月2日 13時25分

マルティネ様

佐藤です。

> REST API コマンドで設定した内容は /etc/chrony/conf.d/servers.conf に反映されていますが、再起動の際に戻ります、ということであっていますね?
あっています。

> 念のため abos-web のバージョンと使ってるコマンドを教えていただけますか?
abos-web のバージョンは「Version: 1.3.0」です。

コマンドは下記となります。

f'-X POST https://127.0.0.1:58080/api/time/ntp_config -d "servers=server {ntp} iburst" -d "initstepslew=5 {ntp}"'

> こちらについては、ネットワーク接続がある状態で initstepslew の設定があれば、コマンドが終了した時点でそちらのサーバーから時刻の取得が完了しています。
>
> initstepslew を使わない場合、またはinitstepslew の時間いないにサーバーに連絡できなかった場合は普通の ntp スケジュールで取得していますので、これぐらいの期間で設定される保証はないです。
> (サーバーの設定に「iburst」を設定した場合はネットワーク接続できた後の数十秒程度になると思います。iburst なければ数分かかると思います)
取得できないNTPサーバアドレスが指定されていた場合、
servers.conf とinitstepslew.confが変更されていても保存されないのでしょうか?

WindowsのNTPサーバーを有効にして確認していて他のPC相手では正常に取得できるのですが、
1台だけ同期出来なかったり、同期に時間がかかるものがありその環境で設定が保存されていないのかもしれません。

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

at_dominique.m…

2024年7月2日 14時07分

佐藤さん、

> > REST API コマンドで設定した内容は /etc/chrony/conf.d/servers.conf に反映されていますが、再起動の際に戻ります、ということであっていますね?
> あっています。

了解しました。

> > 念のため abos-web のバージョンと使ってるコマンドを教えていただけますか?
> abos-web のバージョンは「Version: 1.3.0」です。
>
> コマンドは下記となります。

ありがとうございます。
すみません、やっぱり再現できません。

再起動の際にアプリケーションから別のサーバーを設定する可能性はありますか?

また、abos-web で設定した後に /etc/chrony/conf.d/servers.conf の他に /live/rootfs/etc/chrony/conf.d/servers.conf の内容も確認してみてください。
/live/rootfs には読み取り専用の / パーティションの内容を確認できますので、そのファイルの内容が更新された場合は persist_file が正しく実行されたことになります。

/live/rootfs が更新されなかった場合は追加質問しますが、された場合はやっぱり起動時に何かから設定が再び変更されると思いますので、そちらを確認していただければ幸いです。

> 取得できないNTPサーバアドレスが指定されていた場合、
> servers.conf とinitstepslew.confが変更されていても保存されないのでしょうか?

そういう機能はありません。サービスを起動した際に initstepslew で設定されたサーバーに連絡できなかったとしても、サービスの起動は成功したことになりますので設定ファイルはちゃんと保存されます。
設定ファイルを保存しない条件は chrony が parsing できなかった時だけです。

(念のため存在しないサーバーで確認しました)

よろしくお願いします。

k.sato

2024年7月2日 16時31分

マルティネ様

佐藤です。

> 再起動の際にアプリケーションから別のサーバーを設定する可能性はありますか?
無いです。

> また、abos-web で設定した後に /etc/chrony/conf.d/servers.conf の他に /live/rootfs/etc/chrony/conf.d/servers.conf の内容も確認してみてください。
> /live/rootfs には読み取り専用の / パーティションの内容を確認できますので、そのファイルの内容が更新された場合は persist_file が正しく実行されたことになります。
NTP設定後に 「/etc/chrony/conf.d/servers.conf」は即反映されるのですが、
/live/rootfs/etc/chrony/conf.d/servers.conf」こちらは3分程経ってから反映されました。

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

at_dominique.m…

2024年7月2日 16時50分

佐藤さん、

> NTP設定後に 「/etc/chrony/conf.d/servers.conf」は即反映されるのですが、
> 「/live/rootfs/etc/chrony/conf.d/servers.conf」こちらは3分程経ってから反映されました。

ご確認ありがとうございます。永続されますが、ものすごく遅いですね…
仕組みとしては
1/ /etc/chrony/conf.d のファイルに設定を保存する
2/ chronyd サービスを起動する
3/ サービスを無事に起動できた場合にファイルを永続化する(起動できなかった場合は /etc/chrony/conf.d ファイルを永続化せずに元に戻します)
4/ curlコマンドが完了します

サービスの再起動はコンフィグに間違いがないかを確認するためですが、確認だけではなく initstepslew を待ちますので、10秒ほどかかる想定ですが、3分は長いですね。

実際に Armadillo 640 で確認してみたら、サーバーが存在した場合は 7秒、サーバーが存在しない場合は13秒で保存まで完了できたので、気になりますね。

また追加確認で申し訳ないですが、以下のを確認していただけますでしょうか?

1/ curl コマンドの実行時間(それだけ長ければどこかでタイムアウトするか、失敗する恐れもあります…)
2/ curl ではなく、ABOS で直接に以下のコマンドの実行時間:

armadillo:~# ntp=10.1.1.1 # dns でもいいです
armadillo:~# time /usr/libexec/abos-web/ntp_setup.sh source "server $ntp iburst" initstepslew "5 $ntp"

3/ chronyd のサービスリスタートの時間だけの確認

armadillo:~# time rc-service chronyd restart

お手数ですがよろしくお願いします。