HDL-GTR telnet有効化アップデータを作ってみる

必要に迫られたので、勉強をかねて作ってみた。
ほんとは、シリアルを接続するつもりで分解してみたのだけど、ほとんど完全に分解しないと手がとどかないところに基板穴があったので、コンスルーでは無理だったから。自分なら、シリアルの位置を含めて、構造デザインはこういう風にはしないと思ったり。ポンチ絵から設計に入った弊害かね。
これまでは、ありものの他人が作った独自システムを使うことはまったく考えてなかったので、アップデータには興味がなかった。あんまり複雑なのは、わたしの力量では理解できないからな... 遺伝子を見ても細胞レベルの挙動デザインすらわからないように、コードや設定を見てもシステム設計者の意図が推し量れるとは限らないからね。ソフトウエアだと、そこまでのギャップはないけどさ(^^;。


オリジナルを改変するのは、許諾とかうるさそうなので、二次的なところからソースを取得することにする。HDL-GXのアップデータを作った人のところから拾って解析。
なるほど、かなり単純な仕組みを使っている。仕組みそのものはシリーズで共通化されているようだ。
2chなんかでバージョンを上げないとチェックに引っかかるし、上げてしまうと互換性がなくなるとかいう話も読んだような気がするけど、これならそういうことを気にしない方法も取れるだろう。
さくさくと作ってみる。解析作業開始してから30分かからなかった。
update_telnet.tgzに固める。中身はfor_HDL-GTR_seriesとlandisk-update.shだけ。
landisk-update.shの中身も、ほとんどスケスケで50行くらい。だいぶダイエットしたけど、不要なものもまだ多い。
やらせる処理は、rc.localにtelnetdでshの起動を追記するだけ。普通にxinetd.dに書くとユーザーやパスワードやらがめんどくさいので。
ニーズは聞くのにほとんどこういうのを作る人がいないので、かなり難しいかメンドクサイのかと思っていたら、案外そうでもない。あまりの簡単さに、ほんとにこれでいいのか不安になるけど、いつでも復旧依頼できるので、ダメもとで試す。あ、このへんが普通の人と違う気楽さかな。でも、この中身なら、実機復旧不能でもやるけどね。もとに戻すダウングレード処理も簡単に書けそうだしね。最悪のケースでも保証期間内修理に出せばいい。シェルが動いてしまえば、どのみち中をいじるような自己責任のイバラの道に入るってことになる。


アップデートは無事完了。再起動メッセージが表示された。管理システムでの処理を捨てたので、成功したというメッセージは表示されない。
アップデータのファイル名チェックにひっかかると思ったけど、アーカイブのファイル名は特にチェックしてないのかもしれない。
再起動したので、telnetで接続してみると、ちゃんとプロンプトが上がってきた。

sh-2.05b# uname -a
Linux landisk.exsample.com 2.6.12.6-arm1 #6 Wed Nov 22 14:18:14 JST 2006 armv5tejl GNU/Linux
sh-2.05b# cat /proc/cpuinfo
Processor       : ARM926EJ-Sid(wb) rev 0 (v5l)
BogoMIPS        : 266.24
Features        : swp half thumb fastmult edsp java
CPU implementer : 0x41
CPU architecture: 5TEJ
CPU variant     : 0x0
CPU part        : 0x926
CPU revision    : 0
Cache type      : write-back
Cache clean     : cp15 c7 ops
Cache lockdown  : format C
Cache format    : Harvard
I size          : 32768
I assoc         : 1
I line length   : 32
I sets          : 1024
D size          : 32768
D assoc         : 1
D line length   : 32
D sets          : 1024

Hardware        : MV-88fxx81
Revision        : 0000
Serial          : 0000000000000000

Webから見てもバージョンはインストール前と変わっていないので、製品アップデータの適用はできると思う。

システムバージョン  	1.10

ログもちゃんと出ている。

3月13日 16:25:06  	ファームウェア更新  	ファームウェア更新成功: (10000)

ログの最後にはバージョン情報が入るのだけど、ここではダミーで出力させたので、自分で入れた10000が出てきている。ここは、ログに出しているだけなので数字に限らずなんでもいいんだけど。


おそらく、Linuxマシンとviとtarに、シェルとPerlの入門的な知識があればできる作業なので、これからやろうという人は、ぜひ一度中を見て挑戦してみてほしい。
# アップデータを配布して、サポート担当にトラブル増加の張本人と言われてもイヤだしね... orz