passive log strage

バイク , モバイルガジェット , アウトドア用品 , 腕時計 ・・・等。

DM200 Ver1.4アップデート、そしてLinux on Pomeraの再設定。

年明けから今年度対応でクソ忙しくてやってらんなかったけど、なんとか落ち着いたのでそろそろ再開したい。

とりいそぎ、このネタだ。

DM200のアップデートが出てた。

「ポメラ」DM200 ソフトウェアアップデートのご案内 | 機種選択 | ファイルとテプラのキングジム

ATOKの更新、カレンダー表示関連の強化、通信関連の使い勝手向上、御約束の「軽微な修正」。

結論から言うと・・・

Linux on Pomera DM200 人柱版その2」はバージョン1.4でも動作する。
バージョン1.3で使っていたSDカードもそのまま使える。

免責

本記事を参考にいろいろやってお持ちのDM200が文鎮化しても当方は一切知ったことではないのでそこんところヨロシク。

DM200 Ver1.3 → Ver1.4 アップデート

用意した物:microSDカード(東芝製、16GB、class10、手持ちが無かったのでコンビニで購入)

まず既存環境のバックアップ。

  • ユーザ辞書データをSDにエクスポート
    • 通常の手順通り。エクスポート先は通常使用のもの(Debianイメージが載っているSDのvfat領域)
  • DM200本体側データをバックアップ
    1. PCに接続してPCリンクモードON
    2. マウントされたストレージ領域をPCに退避
  • DM200本体のファームウェアを純正ver1.3にリカバリ
    1. 「DM200 eMMC NAND バックアップ/リストア ツール」を使用してリカバリ
      1. 新しいmicroSDにリストアツールをコピー。
      2. バックアップしておいたver1.3ファームウェアイメージの「mmcblk0p14.img」「mmcblk0p15.img」を配置。
      3. DM200にセットし、電源OFF状態から[左Alt]+[右Shift]+[電源キー]でブート。
      4. 放置。
      5. リストアが完了すると、SDカード内に「RESTORE_COMPLETED」「restore.log」が生成されている。
      6. Debianイメージ入りのSDカードを挿して起動手順を踏んでもLinuxが起動せず本体のファクトリーモードメニューが起動することを確認。
        • メニューは[Space]で移動、[Enter]で決定。「SHUTDOWN」を選択して通常起動する。
  • 純正ファームウェアVer1.4に更新。
    1. アップデートファイルのzipを解凍して.binを新しいSDの直下に保存
    2. 「ポメラ」DM200 ソフトウェアアップデート方法 | 「ポメラ」DM200 ソフトウェアアップデートのご案内 | ファイルとテプラのキングジム
    3. 一応、ファクトリーモードが起動することを確認。

ファクトリーモードによるとファームウェアバージョンは「Ver1 4 59」。
アップデートファイルのファイル名と一致する。
本体ストレージ上のデータで欠損などは特にないことを確認。

通信関係の安定化とか含まれているらしいが、今回検証は置いておく。

バックアップと準備と予想

Ver1.3でできていたように、「Linux on Pomera DM200 人柱版その2」が起動できるか、試すための準備と調査。

まず新しくなった純正eMMC NANDをバックアップする。

  • 純正1.4をバックアップ
    1. DM200 eMMC NAND backupでファームウェアをバックアップ。
    2. バックアップを大切に保管。

次に、純正ver1.3と1.4の比較。

本家より引用。

簡単な動きの説明

インストーラでは内蔵eMMC NANDのリカバリkernelとリカバリinitramfs領域を書き換えます。
書き換え後に起動手順を行うと書き換えたkernelとinitramfsを使って、SDカードの2番目のパーティションに置いたrootfsのDebian(jessie)が動きます

「DM200 NAND backup/restore tool」に含まれるreadme.txtより引用。

2. SDカード上にrestoreフォルダを作成し、中にバックアップ時に取得したmmcblk0p14.imgとmmcblk0p15.imgを名前を変えずに入れてください。
注: 標準ではdebianインストーラを使用した場合に書き換える領域のみリストアします。

つまり、「mmcblk0p14.img」「mmcblk0p15.img」がDebian起動にかかわるkernelとinitramfsの部分であり、インストール時に書き換えられる。
やってることは、起動中にsdカード上のrootfsにシーケンスを切り替えるだけのはず。

なので、Ver1.3とVer1.4のそれぞれのNANDイメージファイルを比較する。
手っ取り早くWindows機を起動していたのでcompコマンドを使用。

C:\diff>comp .\v1.3\mmcblk0p14.img .\v1.4\mmcblk0p14.img 
.\v1.3\mmcblk0p14.img と .\v1.4\mmcblk0p14.img を比較しています... 
ファイルに違いはありません 

ほかのファイルを比較しますか (Y/N)? n 

C:\diff>comp .\v1.3\mmcblk0p15.img .\v1.4\mmcblk0p15.img 
.\v1.3\mmcblk0p15.img と .\v1.4\mmcblk0p15.img を比較しています... 
ファイルに違いはありません 

ほかのファイルを比較しますか (Y/N)? n 

ということで、この二つのブロックに差異は無い、つまりv1.3とv1.4で同じ。
まぁ、アップデート履歴を見る限り起動に関する修正は入ってないから、おおよそ予想通りではある。「軽微な修正」があるので確信できなかったけど。

普通にv1.4+DM200 on linuxいけるんじゃねぇの?

基の純正ファームウェアのこれらが同等であれば、DM200 on linux も問題なくインストール、起動できる?


ver1.3+linuxインストール後のファームウェアイメージを取っておいてver1.4にアップデートに該当ファイルだけリストア(mmcblk0p14.imgとmmcblk0p15.imgの書き戻し) すれば手間少なく復帰できただろうな。とっとけば良かった・・・。

Ver1.4 に Linux on Pomera をインストール

なにはともあれ、ここまでやったのだからゼロからインストール。

純正Ver1.4 に 「Linux on Pomera DM200 人柱版 その2」をインストール。

  • Debian再インストール
    1. 現在のrootfs入りSDカードのイメージをバックアップ。
    2. EtcherでインストーラをSDカードに書き込み。
      1. 東芝製16GB microSDカードは16GBより少ないっていうことで、いままで使っていたsundiskの奴に上書き。
      2. 上書きするためのバックアップを取るっている無駄感ヒドイ。
    3. インストーラを書き込んだSDでDM200へインストール。
      1. これでkernelとinitramfsが本体eMMCに書き込まれ、SDカード内のrootfsが起動できるはず。
    4. 通常通りDM200 on linuxの起動。
      • 成功。

ファームウェアVer1.4にて「linux on Pomera DM200 人柱版その2」のインストール動作確認完了。

eMMC側からrootfsを起動できる体制がととのったので、以前(Ver1.3)使ってたSDイメージ内のrootfsが起動できるか確認。

  • 前のSDカードで起動できるか確認する
    1. バックアップしたSDカードのイメージをSDへ書き戻し。
    2. DM200に挿して起動。
      • 成功。

ファームウェアVer1.4にて、Ver.1.3で使用していたSDカードの継続使用が可能であることを確認。

WiFi接続もまったく今まで通り問題なし。Bluetoothについてはそもそも使っていなかったので参考にならず。

一応確認

  • eMMC NANDバックアップツールで、「DM200 on linux」が起動するkernelとinitramfsが書き込まれたファームウェアをバックアップする。
    1. eMMC NANDバックアップツールをインストールしたSDカードを作成。
    2. eMMC NANDバックアップ完了。

比較してみる。

C:\diff>comp .\before\mmcblk0p14.img .\after\mmcblk0p14.img 
.\before\mmcblk0p14.img と .\after\mmcblk0p14.img を比較しています... 
OFFSET 4 で比較エラーがあります 
ファイル1 = 18 
ファイル2 = E8 
OFFSET 5 で比較エラーがあります 
ファイル1 = 1C 
ファイル2 = 8D 

(中略)

OFFSET 2BC で比較エラーがあります 
ファイル1 = 30 
ファイル2 = 0 
不一致の数が 10 に達しました - 比較を終了します 

ほかのファイルを比較しますか (Y/N)? n 

C:\diff>comp .\before\mmcblk0p15.img .\after\mmcblk0p15.img 
.\before\mmcblk0p15.img と .\after\mmcblk0p15.img を比較しています... 
OFFSET 4 で比較エラーがあります 
ファイル1 = 39 
ファイル2 = AA 
OFFSET 5 で比較エラーがあります 
ファイル1 = BD 
ファイル2 = DB 

(中略)

OFFSET 13 で比較エラーがあります 
ファイル1 = BD 
ファイル2 = 58 
不一致の数が 10 に達しました - 比較を終了します 

ほかのファイルを比較しますか (Y/N)? 

ってことだ。

というか・・・

インストーラはイメージ内のvfat領域の下にある「kernel.img」とinitramfs.imgを書き込んでいるんなら、インストーラのイメージ内から実SDカードにコピーしてインストーラとして起動すればeMMC側に再インストールされるんじゃないだろうか。

もっというと、v1.4ファームウェアアップデータが差分のみ書き込むのなら、v1.3にDM200 on linux導入済なら、ファームウェアアップデータを適用しても何事もなく起動するような気がする。 つまり、

  1. Ver1.4にアップデート
  2. (SDカード上からインストーラを削っている場合はインストーラのイメージから取り出してSDカードのvfat上に配置)
  3. インストーラを起動

たぶんこれが一番手順が少ない、んじゃないか、な?

・・・が、またeMMCをリカバリしてチェックするのめんどくさいので、Ver1.3でLinux on Pomeraを使っていた方はお試ししてみれば?

おまけ:tmux

Linux on Pomera へ、端末マルチプレクサのtmuxを追加してみた。
初見で「screenよりわかりやすそう」と思ったけど、意外とそうでも無かった。だが、見栄えは良いのでぼちぼちためしていこうと思う。