Armadilloフォーラム

2038年問題

moto

2018年1月22日 15時04分

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

linuxの2038年の挙動をArmadillo-X1上で動作確認をしており、
X1では2038年1月19日3時14分7秒を超えるとシステムが再起動する現象を
確認しました。システム側が再起動を起こす現象は、仕様でしょうか?

また、アプリケーションで対策するためRTC側のみに時刻を設定した場合、
問題の時刻も動作を確認しており、対策をするため以下の点について教えていただけないでしょうか?

1.RTCとシステムクロックを同期(起動時など)させない方法
2.システムクロックをNTPと同期(起動時など)させない方法
3.RTCだけに日時を設定する方法
4.RTCの日時データをプログラムから取得する方法

この他にも、システムクロックが時刻同期をしてしまう条件など、
ありましたら教えていただけると幸いです。

コメント

溝渕です。

> linuxの2038年の挙動をArmadillo-X1上で動作確認をしており、
> X1では2038年1月19日3時14分7秒を超えるとシステムが再起動する現象を
> 確認しました。システム側が再起動を起こす現象は、仕様でしょうか?

2038年1月19日3時14分7秒でLinuxカーネルが正常動作できなくなるのは、正に
2038年問題です。Linuxカーネルが正常動作できない場合に、ウォッチドッグ
タイマにより再起動するのは、Armadillo-X1の仕様です。

> 1.RTCとシステムクロックを同期(起動時など)させない方法
> 2.システムクロックをNTPと同期(起動時など)させない方法
> 3.RTCだけに日時を設定する方法
> 4.RTCの日時データをプログラムから取得する方法
>
> この他にも、システムクロックが時刻同期をしてしまう条件など、
> ありましたら教えていただけると幸いです。

> 1.RTCとシステムクロックを同期(起動時など)させない方法
systemdの以下のサービスを止めるとできるはずです。
# systemctl disable hwclock-save.service

> 2.システムクロックをNTPと同期(起動時など)させない方法
標準のルートファイルシステムでは、
ネットワークがupしたときに呼ばれるフックのスクリプトがntpdateを実行し、
時刻設定をします。

スクリプトの場所は以下です。
/etc/network/if-up.d/ntpdate

ntpサーバーはntpdateの設定ファイルに記載されています。
ntpdateの設定ファイルは以下です。
/etc/default/ntpdate

> 3.RTCだけに日時を設定する方法
hwclockコマンドで"--set"オプションを利用することで設定可能と思います。

> 4.RTCの日時データをプログラムから取得する方法
hwclockコマンドで取得可能です。

C言語で/dev/rtcから直接ハードウェアクロックを読み出す場合は、以下のコードが参考になると思います。
https://sources.debian.org/src/util-linux/2.30.2-0.1/sys-utils/hwclock-…

溝渕さま

ありがとうございます。
再起動の件、仕様ということで了解いたしました。

また、各対応のご回答ありがとうございます。
検討をさせていただきます。