Armadilloフォーラム

Armadillo-640 の日時について

kz21_ym

2022年7月7日 10時23分

お世話になります。

armadillo-640の日時について教えていただけると
助かります。

640で起動したときに日時を確認すると
---------------
root@armadillo:/home/atmark# date
Thu Feb 14 19:25:40 JST 2019
root@armadillo:/home/atmark#
---------------
のように 2019/02/14 の日時になっているのですがこの日時は
どこからきているのでしょうか?

systemd-timesyncdによる日時取得は無効にした状態で確認しています。

timedatectl というコマンドで確認すると
-----------------
atmark@armadillo:~$ timedatectl
Local time: Thu 2019-02-14 19:12:40 JST
Universal time: Thu 2019-02-14 10:12:40 UTC
RTC time: Thu 1970-01-01 00:00:45
Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: no
NTP service: inactive
RTC in local TZ: no
atmark@armadillo:~$
-----------------
のようになっていて RTC time は1970年の日時になっています。

動作確認したものはルートファイルシステム構築ツール、インストールディスク作成ツール
で作成したイメージを書込んだものになります。開発環境はATDE8を使用しています。

また起動時 2019-02-14 をセットしている箇所があれば
そこで RTC time をセットするようにしたいのですが
どのようにするのがよいでしょうか?

これまで400シリーズで運用していたお客様の方で
640を使用するようにしようとしているのですが400シリーズでは
起動後1970の日時になっていてそれを前提にして運用している部分が
あり同様の運用にしたいとのことでの質問になります。

よろしくお願いいたします。

コメント

at_shinya.koga

2022年7月7日 15時27分

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

kz21_ymさん:
>armadillo-640の日時について教えていただけると
>助かります。
>
>640で起動したときに日時を確認すると
>---------------
>root@armadillo:/home/atmark# date
>Thu Feb 14 19:25:40 JST 2019
>root@armadillo:/home/atmark#
>---------------
>のように 2019/02/14 の日時になっているのですがこの日時は
>どこからきているのでしょうか?
>
>systemd-timesyncdによる日時取得は無効にした状態で確認しています。

Debian の /init である systemd が、/var/lib/systemd/timesync/clock のタイムスタンプ(または、systemd 自身のビルド日時)から導出した日時です。これについては、こちらのスレッドが参考になるかと思います:
 https://armadillo.atmark-techno.com/forum/armadillo/10248

>timedatectl というコマンドで確認すると
>-----------------
>atmark@armadillo:~$ timedatectl
> Local time: Thu 2019-02-14 19:12:40 JST
> Universal time: Thu 2019-02-14 10:12:40 UTC
> RTC time: Thu 1970-01-01 00:00:45
> Time zone: Asia/Tokyo (JST, +0900)
>System clock synchronized: no
> NTP service: inactive
> RTC in local TZ: no
>atmark@armadillo:~$
>-----------------
>のようになっていて RTC time は1970年の日時になっています。
>
>動作確認したものはルートファイルシステム構築ツール、インストールディスク作成ツール
>で作成したイメージを書込んだものになります。開発環境はATDE8を使用しています。
>
>また起動時 2019-02-14 をセットしている箇所があれば
>そこで RTC time をセットするようにしたいのですが
>どのようにするのがよいでしょうか?

timedatectl を使うことで、システム日時を RTC に反映させたり、その逆に、RTC 日時をシステム日時に反映させることができます:
 https://man7.org/linux/man-pages/man1/timedatectl.1.html

以下のようにコマンド実行してみて下さい:

(1) システム日時を RTC に反映させる

timedatectl set-local-rtc "1"
timedatectl set-local-rtc "0"

(2) RTC 日時をシステム日時に反映させる

timedatectl --adjust-system-clock set-local-rtc "1"
timedatectl --adjust-system-clock set-local-rtc "0"

timedatectl の set-local-rtc コマンドおよび、--adjust-system-clock オプションの詳細は、上記 man ページをご覧ください。
なお、se-local-rtc による指定は、デフォルトが "0"(RTC に保存する日時を UTC とする)のためか、'set-local-rtc "0"' だけを実行しても RTC 日時とシステム日時との間で同期が行われず、一旦 "1" にセットしてから "0" にセットし直す、という手順が必要なようです(※手元で確認した限りでは、そうなっています)。

>これまで400シリーズで運用していたお客様の方で
>640を使用するようにしようとしているのですが400シリーズでは
>起動後1970の日時になっていてそれを前提にして運用している部分が
>あり同様の運用にしたいとのことでの質問になります。

とすると、上の (2) のコマンドを起動時に自動実行する仕組みを入れることで、お望みの動作を実現できるのではないかと思います。
以上、参考になりましたら幸いです。

kz21_ym

2022年7月7日 17時46分

古賀さん

ファイルのタイムスタンプから時間取得されていたのですね。
確かに
---------------------------
root@armadillo:/home/atmark# ls -l --full-time /var/lib/systemd/timesync/clock
-rw-r--r-- 1 systemd-timesync systemd-timesync 0 2019-02-14 19:11:58.000000000 +0900 /var/lib/systemd/timesync/clock
---------------------------
のようになっていて Local time の時間になっていました。

まだ途中ですが回答いただいたやり方で
対応できそうです。
ありがとうございました。