2016年2月8日月曜日

FON2202 の RedBoot を FON2201 へ移植

システムメモリを 32MB 化した FON2201 へ FON2202 の RedBoot を移植しました。なおこの作業は、16MB のシステムメモリを持つ未加工の FON2201 へ行うことはできません。

FON2202 の RedBoot を移植した FON2201 (32MB 化済み)です。

経緯

システムメモリが 16MB だった FON2201 のメモリチップを交換して 32MB 化していました。このときには FON2100 用の 32MB 対応の RedBoot をインストールしてシステムメモリを認識させていました。この RedBoot の弊害で電源(POWER)の LED ランプが電源投入時に点灯しなくなってしまいました。そこで FON2201 と同じハードウェアでシステムメモリが最初から 32MB となっている FON2202 の RedBoot を移植して電源(POWER)の LED ランプ問題へ対応させようと考えて、今回の RedBoot の移植となりました。
FON2201 もシステムメモリを 32MB へ増設
http://near-unix.blogspot.jp/2015/06/fon2201-32mb.html

FON2202 の RedBoot の取り出し

まずは移植元(ドナー)の FON2202 の RedBoot の吸い出しを行いました。

FON2202 は現在 FON オリジナルのファームウェアで動作していますが、実態は OpenWrt です。そこで FON オリジナルのファームウェアで FON2202 を起動させた後、LAN ポートへ接続したパソコンへ nc (NetCat)  コマンドを使ってフラッシュメモリの中の RedBoot を転送しました。

FON2202 のオリジナル・ファームウェアの設定画面

FON2202 へはシリアルコンソールで接続しましたが、telnet によっても同様の処理ができると思います。

FON2202 のログイン画面

まず最初にフラッシュメモリのパーティションを確認しました。RedBoot は mtd0 (/dev/mtd0) に存在していることが判明しました。
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00030000 00010000 "RedBoot"
mtd1: 00010000 00010000 "loader"
mtd2: 00620000 00010000 "image"
mtd3: 0056d17c 00010000 "rootfs"
mtd4: 001c0000 00010000 "rootfs_data"
mtd5: 00140000 00010000 "image2"
mtd6: 0000f000 00010000 "FIS directory"
mtd7: 00001000 00010000 "RedBoot config"
mtd8: 00010000 00010000 "boardconfig"

FON2202 の RedBoot をパソコンへ nc コマンドによって転送します。nc による転送方法は以前にも記事にした通りです。
OpenWrt で nc (NetCat) を使う
http://near-unix.blogspot.jp/2015/11/openwrt-nc-netcat.html

パソコン側で nc によるリスン・モードで待受をしているところへ、FON2202 からデータを送りつける手法です。ここでは 7000 番ポートを使ってデータの受け渡しをしました。また受信した RedBoot には fon2202-redboot.rom と名前をつけました。
パソコン側 - 受信側(IP アドレス:192.168.10.101)
# nc -l -p 7000 > fon2202-redboot.rom
     
FON2202 側 - 送信側(IP アドレス:192.168.10.1)
# nc 192.168.10.101 7000 < /dev/mtd0

FON2201 へ RedBoot を移植

FON2202 から取り出した RedBoot を 32MB 化した FON2201 へ移植します。
パソコンと FON2201 の LAN ポートを LAN ケーブルで接続します。そしてパソコンからシリアルコンソールで FON2201 の RedBoot へ接続した後、パソコンに事前に準備しておいた TFTP サーバから FON2201 へ新しい RedBoot を転送します。そしてフラッシュメモリへ書き込む手順となります。この記事では TFTP サーバの設定方法の解説は行っていません。弊ブログまたはネット上から検索して TFTP サーバの設定を行ってください。


シリアルコンソールでアクセスした後、TFTP サーバのある操作パソコン(192.168.10.101)から次のコマンドを実行します。

IP アドレスの設定を行います。"-l" は FON2201 自身の IP アドレスで、"-h" は TFTP サーバの IP アドレスです。
RedBoot> ip_address -l 192.168.10.1/24 -h 192.168.10.101
IP: 192.168.10.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.10.101

TFTP サーバから RedBoot を転送してきます。
RedBoot> load -r -b %{FREEMEMLO} fon2202-redboot.rom
Using default protocol (TFTP)
Raw file loaded 0x8003f000-0x8006efff, assumed entry at 0x8003f000

転送してきた新しい(FON2202 用)の RedBoot をフラッシュメモリへ書き込みします。
RedBoot> fis create RedBoot
An image named 'RedBoot' exists - continue (y/n)? y
... Erase from 0xa8000000-0xa8030000: ...
... Program from 0x8003f000-0x8006f000 at 0xa8000000: ...
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
以上で RedBoot の移植は終わりました。

動作確認

RedBoot の移植が終わった後、reset コマンドで再起動させましたが、再起動しませんでした。そこで電源プラグを外して、再度挿しなおして起動させようとしましたが、起動しませんでした。
RedBoot の移植に失敗したと判断してしまいましたが、意外な原因で起動しないことが判明しました。それは FON2201E でもあった症状なのですが、電源投入前からシリアルコンソールが接続されていると何故か起動しないという現象です。一旦シリアルケーブルを外した後、電源を投入すると同時にシリアルケーブルを接続することで起動させることに成功しました。--- 再起動時にはシリアルケーブルを外しておく!必要がありました。

そして結果としては、電源投入と同時に電源(POWER)の LED ランプは点灯するようになりました。しかし FON2201 へインストールしている OpenWrt が起動する途中で電源(POWER)の LED ランプは初期化されるためか?消灯してしまいました。結局以前対策を行った LED の点灯設定を行うことで電源(POWER)の LED 問題を解決しました。起動中の LED の様子は、[点灯]>[消灯]>[点灯] と動作します。
FON2201 を 32MB 化すると電源 LED が点灯しません
http://near-unix.blogspot.jp/2015/06/fon2201-32mb-led.html

またシステムメモリも 32MB と全域を認識していました。

これで以前から喉に刺さった小骨のように気になっていた電源(POWER)の LED ランプ問題が解決されました。

POWER の LED ランプが電源投入時に点灯するようになりました。

WAN の MAC アドレスの設定

しかし問題もありました。以前はどのようになっていたのかは不明ですが、WAN ポートの MAC アドレスが "00:00:00:00:00:00" となっていました。これは OpenWrt の MAC アドレスの置き換え設定(Override)によって対策を行いました。LAN ポートの MAC アドレスに "1" を加算した MAC アドレスを設定しました。なお LAN ポートの MAC アドレスはちゃんと認識されており、筐体底面にあるシールに記載されている MAC アドレスと一致していることを確認しました。

WAN ポートの設定の画面で [Edit] - [Advanced Settings] - [Override MAC address] の部分で設定します。

ダウンロード

今回使用した FON2202 の RedBoot をアップロードしておきます。必要とする読者さんはダウンロードして使用してください。なお使用にあたっては自己責任でお願いいたします。当方はいかなる問題が発生しても責任を負いません。
fon2202-redboot.rom
https://drive.google.com/open?id=0B5QdaY5lu2e3Tk1BOHU1VVp1VjA

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。