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.