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 の移植は終わりました。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 の移植が終わった後、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 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。