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 –