Home/ Library index

BBR-4MG::Linux化ファームウェア

2台目のBBR-4MGを買ってしまいました(なにやってるんだか…).シリアルポート経由での転送は遅いので,Linux化ファームウェアを作ってみました.

おことわり

フラッシュメモリ

フラッシュメモリがAMD製かIntel製かで,ファームウェアが違います.本当は共通にしたかったのだけど,今のところサイズの都合でできません.ブート時にシリアルポートから出てくるメッセージか,チップ表面の型番を(シールで隠れてますが)確認してください.最近売っているものはIntel製のようです.

Intelのフラッシュは,TE28F160C3-Bで動作確認しました.AMDの方は,AM29LV160DB以外はサポートしていません.他のフラッシュメモリを乗せたボードを見かけたら連絡ください.

ダウンロード

機能

PPPoEとかは入れてません.再起動すると設定消えます(…そのうちなんとかするかも).

フィルタはiptablesコマンドで設定してください.httpdがあるので,Webサーバにできるかも(やっぱり再起動すると消えますが…).

起動したときの設定は/etc/init.d/rcSを確認してください.ローカルのIPは192.168.0.1になってます.WAN側のネットワークとぶつかる場合は起動してから設定してください.

使えるコマンド

あとで書きます.

ramdisk.bz2を書き込む前

        [, ash, busybox, cat, chmod, chown, cp, date, dd, df, echo, env,
        false, head, ifconfig, init, kill, killall, linuxrc, login, ls,
        mkdir, mknod, mount, mv, ping, ps, pwd, reboot, rm, rmdir, route,
        sh, sleep, tail, telnetd, test, tftp, touch, tr, true, tty, udhcpc,
        udhcpd, uname, uniq, usleep, vi, wc, whoami, yes

ramdisk.bz2を書き込み後

        [, [[, ash, busybox, cat, chmod, chown, cp, crond, crontab, cut,
        date, dd, df, du, echo, env, expr, false, gzip, head, httpd, id,
        ifconfig, init, insmod, kill, killall, linuxrc, ln, login, ls,
        lsmod, mkdir, mke2fs, mkfs.ext2, mkfs.ext3, mknod, mount, mv,
        netstat, nslookup, passwd, ping, printf, ps, pwd, reboot, rm,
        rmdir, rmmod, route, sh, sleep, sync, tail, tar, tee, telnet,
        telnetd, test, tftp, touch, tr, traceroute, true, tty, udhcpc,
        udhcpd, umount, uname, uniq, uptime, usleep, vi, wc, wget, which,
        whoami, yes

あと,iptables,dnrd等

使い方

BBR-4MG用のファームウェアになっているので,普通にWebのインターフェイスのアップデート画面から書き込めます.展開して出てきたbinファイルを書き込んでください.4HGの人はバイナリエディタで最後の4MGを4HGに変更すれば書き込めると思います(動作確認はしていません).

ファームウェアの書き込みが終了して再起動すると,Linuxが起動するはずです.

あとは,シリアルコンソールで操作するか,telnetでログインしてください.LAN側のIPアドレスは192.168.0.1になっています.この時点でDHCPdも動いているので,192.168.0.から始まるIPが取得できると思います.WAN側はDHCPクライアントが動いています.telnetでログインするときのrootのパスワードは"bbr4mg"になっています.

ネットワークの設定等は適当にやってください.busyboxコマンドで使えるコマンドが確認できます.

これだけでは何もできないので,ramdisk.bz2を/dev/mtd5に書き込んでください./dev/mtd5に何かあると,そっちからファイルシステムを読み込むようになります.(壊れたデータでも気にせず読もうとするので,困ったことになるかも….言ってくれればweb領域しか読まないカーネルも公開するかもしれません)

tftpが入っているので,PCでTFTPサーバを起動してramdisk.bz2を置いてください.例えば,tftpサーバが192.168.0.100で動いているなら.

tftp -g -l /dev/mtd5 -r ramdisk.bz2 192.168.0.100

と実行すれば書き込めると思います.

TFTPサーバは何処からかダウンロードしてきてください.私はTFTPサーバー Poor TFTP Server for WIN32を使わせてもらいました.インストール不要で簡単に動きます.

後は,祈りながら再起動.

rebootで再起動出来ますが,Intelのフラッシュメモリにアクセスした後だと,再起動中に止まる気がします(ドライバが不完全なのかも…).

色々やるならramdisk.bz2を自分で作り直した方が良いと思います.展開すれば中身はext2なファイルシステムなので,普通にLinux等でmountできるはずです.

ramdisk.bz2を書き込んだ場合はiptablesでWAN側は192.168.から始まるネットワークのパケットを捨てるようになってるので,WAN側を192.168なネットワークに繋いでいると接続できなくなります.iptables -Fしてください.自分で嵌りました.

パスワード変更

このままだと,危なくてネットワークにつなげないので,passwdコマンドでパスワードを変更してください.変更しただけだと再起動すると元に戻ってしまうので,フラッシュメモリに設定を書き込みます.

まず,/etc/format.shを実行してフラッシュの設定領域にファイルシステムを作ります.これをやると,BBR-4MGのファームウェアで保存した設定は失われます

つぎに,/etc/write.shを実行するとファイルシステムをマウントして,passwdファイルと,起動時に設定を書き戻すためのスクリプトを書き込みます.他の設定ファイルも変更したい場合は,スクリプトを書き換えてください.write.sh自身もフラッシュメモリにコピーするので,次回は書き換えなくて済みます.終了後は,/flashに読み取り専用でマウントされています.

128Kしか無いので,大きいファイルを入れたい場合はramdisk.bz2の方を書き換えた方が賢いと思います.もしくは,ramdisk.bz2を書き込んだ後は,mtd2の256Kが使われなくなるので,ファイルをtarで固めて書き込んでおくという手もあります.

アンインストールの仕方

BUFFALOのサイトからファームウェアをダウンロードしてきてtftpを使って転送してください.展開したファームウェアのファイル名がbbr4mg.binならば,

tftp -g -r bbr4mg.bin 192.168.0.100
dd if=bbr4mg.bin of=/dev/mtd2 bs=1024 count=256
dd if=bbr4mg.bin of=/dev/mtd3 bs=1024 count=512 skip=256

これで元に戻るはずです(同じ方法でLinuxもアップデートできます).戻せない場合は,バイナリエディタでファームウェアからデータを切り出して,ブートローダのメニューからシリアルポート経由で書き込んでください.

最後に

面倒なことになっても,その状況を楽しめるという人以外は,やってみようと思わない方が懸命です.

この文書の履歴

Copyright © 瓶詰堂 all rights reserved.