FON2202のファームウェアのビルド

La Fonera2.0ことFON2202のファームウェアのビルドに成功したのでメモ。

環境はDebian lenny。主な手順はここ。

build fon-ng

でもこのままやってもビルドできませんでした。

まずは手順にある通り、必要なパッケージをインストール。

$ sudo aptitude install subversion g++ libdigest-crc-perl ncurses-dev zlib1g-dev gawk bison flex autoconf intltool-debian intltool

他のサイトで、以下も必要みたいな記事を読んだのでインストール。

$ sudo aptitude install gettext pkg-config libz-dev ccache libncurses-dev unzip

libdigest-crc-perlがaptだと古いという話なので、CPANから最新をインストール。

$ cpan
CPAN> install Digest
CPAN> install Digest::CRC
CPAN> install YAML

で、手順通りレポジトリからtrunkを落とすとビルドできないので、tags/Flipper-2.2.5.0をダウンロードします。

$ svn co http://svn.fonosfera.org/fon-ng/tags/Flipper-2.2.5.0
$ cd Flipper-2.2.5.0/
$ ./install.sh
$ cd openwrt/
$ make menuconfig

メニュー画面ではとりあえず何もせずにそのままExitで設定を保存。

いざmake。V=99は詳細表示オプション。なくてもいい。

$ make V=99

超時間かかる。Core2QudaのVista上のVirtualPCで2時間くらい。

で、完了。

$ ll bin/
合計 8388
-rw-r–r– 1 dev dev   65536 2009-08-13 09:24 loader.bin
-rwxr-xr-x 1 dev dev   11860 2009-08-13 09:24 meraki-loader.elf
-rwxr-xr-x 1 dev dev 3039219 2009-08-13 09:24 openwrt-fonera2-vmlinux.elf
-rw-r–r– 1 dev dev  786432 2009-08-13 09:24 openwrt-fonera2-vmlinux.image
-rw-r–r– 1 dev dev 4653060 2009-08-13 09:24 openwrt-fonera2.image
drwxr-xr-x 3 dev dev    4096 2009-08-13 08:32 packages

packagesディレクトリにはipk形式のパッケージファイル一式ができてます。
これが
http://www.fonera.be/rep/FON2202/index.php
これってことか。サイトにはpackagesディレクトリに含まれていないものもたくさんあるけど。
逆に言うと、ipkファイルを作る必要性はなさそう。

このままでは正しくファームウェアを書き換えられたかわからないので、ちょっと軽くいじっておきます。
Fonera->facebookをスペースでチェックを外す

ちょっとここで通常のファームウェアの構成を調べる。

$ wget http://download.fonosfera.org/LATEST/20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.tar.gz
$ tar xvzf ./20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.tar.gz
20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.image
upgrade
fonera20_fon.image

できたファイルはディレクトリを含まず上記3つ。

$ ll
-rw-r–r– 1 dev dev 4653060 2009-04-22 01:05 20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.image
-rw-r–r– 1 dev dev 4529210 2009-04-22 02:50 20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.tar.gz
lrwxrwxrwx 1 dev dev      48 2009-08-13 19:25 fonera20_fon.image -> 20090421_FON2202_2.2.5.0_Flipper_DEVELOPER.image
-rwxr-xr-x 1 dev dev     305 2009-04-01 00:57 upgrade

fonera20_fon.imageはシンボリックリンクでimageファイルの実体へ。で、upgradeがシェルスクリプトになってて、これが実行される、と。

$ cat upgrade
#!/bin/ash

VERSION=$(cat /etc/fon_version)
FAILSAFE=$(cat /etc/failsafe)

if [ "$VERSION" = "2.2.1" -o "$VERSION" = "2.2.2" -o "$VERSION" = "2.2.3" -o "$VERSION" = "2.2.4" -o "$FAILSAFE" = 1 ]
then
mtd -r write fonera20_fon.image image > /dev/null 2>&1
#(sleep 4; reboot) &
return 0

else return 1; fi

なるほど、バージョンチェックして必要ならmtdコマンドで書き換え実行ということね。ということは、すでに2.2.5になってるこのFONでは上書きできないということか。

というわけで書き換える。

$ vi ./upgrade

シンプルに以下の感じに。

#!/bin/ash

mtd -r write fonera20_fon.image image > /dev/null 2>&1
return 0

で、リンク先を書き直し。tar.gz作成。

$ rm fonera20_fon.image
$ ln -s openwrt-fonera2.image fonera20_fon.image
$ tar zcvf openwrt-fonera2.tar.gz openwrt-fonera2.image fonera20_fon.image upgrade

で、できあがったopenwrt-fonera2.tar.gzを管理画面経由でFONにアップロード。

Firmware Update
Failed to identify upload.

Σ(゚Д゚)ガーン

なんだろ。ちなみに公開されているtar.gzを展開→再圧縮しただけでも反映に失敗したので、何かtarの作り方に秘密があるっぽい。
仕方ないのでimageファイルを転送して、FON上のSSHで反映することに。
以下、FONのSSH。

# cd /tmp/
# mtd -r write fonera20_fon.image image
Unlocking image …
Writing from fonera20_fon.image to image …  [w]
Rebooting …

で、どうやら書き込み完了。wktkしながらブラウザで確認…

緑の画面から書き変わってオレンジの画面に…あれ?SSHが効かない…?ん?Facebookのアイコンは残ったまま…?

Facebookは画面から消すのに何か別の作業がいるのかもしれないと思うことにして、SSHは…?プラグインのところにも出てこないし…

しかもブラウザからファーム書き戻そうとしてもバージョンが同じだから上書きできないし!!

\(^o^)/オワタ

シリアルケーブル手に入れるまで放置で…

もしくは管理画面からアップできるtar.gzの作り方、か。

※追記(2009/10/12)

lostmanさんに教えていただいた方法で復旧できました。
FON2202をFailSafeモードで復旧させる : blog.loadlimit – digital matter –


タグ:

新しく会社作りました!

コメント / トラックバック 4 件

  1. lostman より:

    ハジメマシテ
    自分も2.3.0.1 RC1を入れて同じ状態にハマりましたw
    まだ試していませんがFailsafeモードを使えばバージョンに関係なく書き換えることができそうです
    (upgradeスクリプトのの内容的に)
    http://wiki.fon.com/wiki/Failsafe_Mode

  2. hotpi より:

    lostmanさん
    どうも、はじめましてー。よくブログ参考にさせてもらってます。
    Failsafeモードがあるんですね!早速試してみたいと思います。
    ナイスな情報どうもでしたー。

  3. lostman より:

    朝試してみたらうまくいきましたー

  4. […] 前回:FON2202のファームウェアのビルド : blog.loadlimit – digital matter – […]

コメントをどうぞ