« Windwos10/無線LAN(WiFi)で「デフォルトゲートウェイが使用できません」(3) | トップページ | 国会におけるNHKによるスクランブルに関する答弁について »

2019/03/07

Linux/DM200の時刻ズレ問題

毎日のように便利に使わせてもらっているポメラDM200によるLinux。
時間がずれたのでDM200上で時刻修正をした後、Linuxを起動したら時間がおかしくなった。
驚いて調べたらDM200のファームウェアが Ver1.4の場合に問題が起きているらしい。
私もVer1.4にしており、特に問題なく使えていたのだが、たぶん時刻修正をしたのはその後初めてだったかも知れない。
で、それに対応したLinuxカーネル(?)も既に公開しているらしい。
でもカーネルを変えるのは怖いなあ、結構手番が複雑だし、最近頭がぼーっとしているのでミスが怖い。。
記事を読むとすっきりと解決するわけでもなさそう。。。。
困ったことにその記事とズレ方が違う。つまり解決するかも微妙。
うーん。
timedatectlで、local time/UTC/RTC timeが表示されるので落ち着いて状況を確認してみる。
ポメラで設定した時刻はRTC timeのようだ。
同じく日付は2日前になっている。
ネット情報によれば、RTCチップのバグで一年が常に366日であり、それをポメラ側でごまかしているので、2018年は1日、2019年は2日、2020年は3日、・・とズレていくらしい。

なるほど、理屈は分かった。
次の方針で、bash起動時に設定することにした。

時刻はRTCをlocal timeに設定する。

日付はRTCから二日後を設定する。まあ、来年になったら2を3にすれば良いだろう。
bash起動時に日付と時間を表示すればまたズレたときに気がつくだろう。
ということでbashスクリプトを作成。(Perlで作ろうと思ったがbashでチャレンジしてみた)
tt=$(timedatectl|grep 'RTC time')
if [[ $tt =~ ([0-9]+\-[0-9]+\-[0-9]+) ]]; then
  d=${BASH_REMATCH[1]}
fi
if [[ $tt =~ ([0-9]+\:[0-9]+\:[0-9]+) ]]; then
  t=${BASH_REMATCH[1]}
fi
d=$(date --date $d" 2 days" +%y-%m-%d)
tt="$d $t"
echo dm200|sudo -S date --set="$tt"
最後の行はsudoのパスワードはdm200であるのが前提。違う場合は変えるか、
sudo date --set="$tt"
にして、ログインするたびにパスワードを入れて欲しい。
最後に注意。
厳密にはコンマゼロ何秒かズレるだろうが、そんなにシビアな用途ではないので良しと考えている。
また、このスクリプトにたどり着くまでは時刻日付がズレているのでシステム起動中に何か不味いことが起きるかも知れない。
まあ、未来の時間ではないので多分大丈夫、ぐらいの感覚なので覚悟されたい。

|

« Windwos10/無線LAN(WiFi)で「デフォルトゲートウェイが使用できません」(3) | トップページ | 国会におけるNHKによるスクランブルに関する答弁について »

「プログラミング」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック


この記事へのトラックバック一覧です: Linux/DM200の時刻ズレ問題:

« Windwos10/無線LAN(WiFi)で「デフォルトゲートウェイが使用できません」(3) | トップページ | 国会におけるNHKによるスクランブルに関する答弁について »