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の日時データをプログラムから取得する方法
この他にも、システムクロックが時刻同期をしてしまう条件など、
ありましたら教えていただけると幸いです。
コメント
moto
at_mizo
2018年1月23日 9時35分
溝渕です。
> 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-…