取り急ぎ。
2017/04/16追記:本家にて対応版kernelがリリースされています。
そこらへんをうちでまとめた記事がこちら。
今回の状況について
念のため再度注意
あくまでDM200 ファームウェアVer1.4で普通にPOMERAとして使う分にはなんの問題も発生しない。
間違っても本件についてキングジムに問い合わせたりすることの無いようくれぐれもよろしくお願いします。
また、今回の現象について Linux on Pomera 提供者の @ichinomoto さんにはなんの責任も無いことを改めて記します。
今更書く必要はないと思うが、「Linux on Pomera」 は我々の自己責任っていうのはみんな判ってるよね?
俺たちは自己責任で遊んでるってこと、みんな判ってるもんね?
状況
DM200 Ver.1.4から、内部的な時刻の取り扱いが大幅に変わっている?ように見えた。
今さっき気が付いた(というか今更)けど、DM200 Ver1.4での時刻の取り扱いについて、Pomera上では「RTC +24時間」でとして動作してるっぽい。Pomeraとして4/6 12:00に合わせるとLinux on pomera上でtimedatectl叩くとRTC は4/5 12:00 と出る。なんなんだこれ・・・
— obally (@obally) 2018年4月6日
- Pomera側で時刻設定 例「2018/4/6(金) 14:00」
- Linux on Pomeraで起動。(起動時にはWiFi自動接続しない→NTP時刻合わせせず
- sudo timedatectlでHWクロック(RTC)の時刻確認
- 結果→RTCの時刻が「2018/04/5(木) 14:03」
JSTでも+−9時間でもなく、-24時間。
なぜ今更気がついたかというと、tmuxを導入してstats-lineに時刻を表示するカスタムを加えていて「あれ?」と。
この件について(たまたまこのタイミングでうちの記事をtweetしてくださった) @ytakeda さんに追試していただいた(なんか巻き込んでしまってすみません)
.@ytakeda どもです。うちの方でこんな状況が発生してるんですが、そちらは大丈夫ですか?(俺環だけかもしれませんが) https://t.co/6jKcZTL3Xb
— obally (@obally) 2018年4月6日
今確認したら起きてました。pomera の時刻を 4/6 15:00 に合わせると、linux で date -u すると 4/5 15:00 が出力され、オプション無しの date だと 4/6 0:00 が出力されますね。なんだろこれ?
— ytakeda (@ytakeda) 2018年4月6日
@ytakeda うちとはちょっと状況違ってるかも。こちらでは18:45の時点でdate が4/5 18:45、date -u が4/5 09:45になります。("timedatectl set-local-rtc 1"してあるので想定内)timedatectl はどうなります? pic.twitter.com/VSxoHYUHGc
— obally (@obally) 2018年4月6日
同じことをしてみました。(こちらは timedatectl set-local-rtc 1 してないけど) 写真撮ったのはこの投稿のちょっと前なので RTC が一日前になっているのは間違いなさそう pic.twitter.com/7ScJFwt5Mz
— ytakeda (@ytakeda) 2018年4月6日
ということで、確定。
Pomeraだけ使う人やLinuxだけを使う人には問題ないんだろうけど、Pomera側とLinux側を行き来する自分にはやっかいな状態になってしまった。
対処法を考えてみたが・・・
- なんとか頑張ってみるよ派
- [素人の思いつき案]:TimeZone関連をゴニョゴニョして無理矢理「+24時間」で動作させる。
- [もっと知識が深ければできそう案]
- もう諦めるよ派
正直、現状でこれぐらいしか思いつかない。
とりあえず「2-3. [POMERA寄り妥協案]」で、意図せずRTCが変更されないようにntp同期外しておいた。
それにしても・・・
なぜに24時間なんだ?
- JST(+9:00)なら「ああ、TimeZone=Asia/Tokyo準拠にしたんだ」となる。むしろありがたい。
- (-9:00)なら「ああ、TimeZone=Asia/Tokyo準拠にしようとしてどっかミスったんだ」となる。
- それ以外の+-12時間以内のズレなら「ああ、TimeZone準拠にしようとして間違えて全然別のTimeZone適用しちゃったんだ」となる。
↑ソースは俺(全部自分でやらかしたことがあるからw)。
意図的にずらしているにしては24時間ずらす意味が見いだせないので不具合かと思ったのだが、POMERAのシステム上ではつじつまが合っている(ファイルの書き込み時間なども問題なくPOMERAで設定した時刻で書き込まれている)ので、本来の使い方(DM200をPOMERAとして使う場合には)不具合とまでは言うことはできない。
引用:本家 Linux on Pomera DM200 人柱版 – 記録 :「聞かれそうな質問と回答」より。
Q. 内蔵のATOKは使えるのか
A. DM200標準のソフトは、よく使われるコマンド以外は画面描画処理も含めて基本的に1つのプロセスで動作しているようです。ATOKもそのプロセス内部で動いている(個別のプロセスとして存在しない)ようなので外から使うのは難しそうです。(以下略)
- DM200上でLinuxOSが走り、その上層で1プロセスとして、ATOK等も含めた「POMERAアプリ(仮称)」が走っている。
- 「POMERAアプリ(仮称)」ではすべて "RTC+24時間"で動作・完結している。
- なので通常どおりPOMERAの動作としてはつじつまが合っている(ようにみえる)。
- 前回の記事の通り、Ver1.3→Ver1.4では素のkernelやinitramfs周りでの変更は無かった。
- ということは、もっとアプケーション寄りのところで何かしらの変更があった、と考えられる。
オリジナルのファームウェアのうち、kernelと「POMERAアプリ(仮称)」の間の層で何かが変わっているが解れば、こうなった理由がわかるのだろうか?
うーん・・・