とっかかり
La foneraの調子が悪かったので調査していると、/sbinがまったく無く、消え去っていた。ほとんどのコマンドが使えない状態….orz
クラックされたか?もしくは初期化に失敗したか?何れにせよこのままではまったく無価値の箱になってしまうので、復旧しないと。
fonのサイトを漁ったけど、イメージがどこにもない。どうやら、autoアップデートのみサービスするようになった様だ。
仕方が無いので、La foneraにopenwrtをインストールしてみることにした。
OpenWrtとは
openwrt.orgで配布されている組込み用のlinuxディストリビューション。無線ルータで使われることを想定していて、インストールさえ出来てしまえば、あとはlinuxルータとして違和感なく使えてしまう。だから、linux使いならかゆいところにも手が届いて、自分なりの無線ルータが出来ちゃうというものだ。
インストール
さて、お決まりではあるが..ここから先の情報を元に作業される方は自己責任にてお願いします。
La foneraのflushにOpenWrtイメージを書き込む作業はRedBootから行う。La foneraは電源が入るとRedBootが起動するようになっている。RedBoot上での操作は、La fonera内部にあるシリアル通信用ピンに接続し、他のPCからシリアルコンソールを使うことになる。また、OpenWrtのイメージはtftpを使って転送する。したがって、以下の様な構成で作業する。
1 2 3 4 5 |
+[La fonera]+++++ +[PC]+++++++++++++++++++++ + serial I/F pin+-----(serial 5V)-----[UP-12C]-----(USB1.0)-----+ttyUSB0(screen) + + + + + +192.169.10.1/24+---------------------[ether]-------------------+192.168.10.2/24 (atftpd)+ +++++++++++++++++ ++++++++++++++++++++++++++ |
まずはtftpd
PC側にatftpdをインストールする。ubuntuなら以下でOK。
1 |
# aptitude install atftpd |
適当なディレクトリにOpenWrtのrootfsとvmlinuxイメージをダウンロードしておく。今回はこちらからダウンロードした。
1 2 3 4 5 6 7 |
#cd /tftpboot # ls -la total 2448 drwxrwxrwx 2 nobody root 4096 Apr 26 14:04 . drwxr-xr-x 23 root root 4096 Apr 26 14:50 .. -rw-r--r-- 1 t-randt t-randt 1703936 Apr 26 13:51 openwrt-atheros-root.squashfs -rw-r--r-- 1 t-randt t-randt 786432 Apr 26 13:51 openwrt-atheros-vmlinux.lzma |
PC側のIPを設定したら、atftpdを起動する。いろいろ読むとtcpdを使っているが、私の場合うまくいかなかったので–daemonオプションで常時起動しておいた。
1 |
# atftpd --daemon /tftpboot |
La foneraとシリアル接続
右写真のちょうど中央にあるのがLa foneraのシリアル接続I/FがあるPINである。全10本あるが、手前列の一番右がGND、3番目がTX、4番目がRXである。それぞれ順にUP-12Cの黒(GND)、白(RX)、緑(TX)を接続する。
これが接続後の写真。古いIDEケーブルからもぎ取った圧着コネクタを半分に折って分解し、ケーブルを挟み込むという荒技。ハンダごてなんて持っていないし、接続用の部品を買うまでもなく用は足りる。見た目はかっこ悪いけれど(^^;;
USBコネクタをPCに接続して、シリアルコンソールを起動する。
1 |
# screen /dev/ttyUSB0 |
何も表示されないけれど、ttyUSB0はオープンで来ている。この状態でLa foneraの電源を入れるとコンソールに以下の様に表示される。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
+PHY ID is 0022:5521 Ethernet eth0: MAC address 00:18:84:24:03:a0 IP: 0.0.0.0/255.255.255.255, Gateway: 0.0.0.0 Default server: 0.0.0.0 RedBoot(tm) bootstrap and debug environment [ROMRAM] Non-certified release, version v1.3.0 - built 16:57:58, Aug 7 2006 Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc. Board: ap51 RAM: 0x80000000-0x81000000, [0x80040450-0x80fe1000] available FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each. == Executing boot script in 1.000 seconds - enter ^C to abort |
Ctrl+cを押下すると、RedBootのプロンプトが表示される。(etherは未接続の状態)
1 2 3 4 5 6 7 8 9 10 11 12 |
^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> ^C RedBoot> |
これで、RedBootを制御できるようになった。ここまで来たら、ethrnetケーブルをLa foneraに挿す。
ここからはirishinさんの「日々のあれこれ」を参考にさせていただいた。m(__)m
fisコマンドはflushイメージ管理コマンドである。fis listで現状のイメージリストを取得できる。
1 2 3 4 5 6 7 |
RedBoot> fis list Name FLASH addr Mem addr Length Entry point RedBoot 0xA8000000 0xA8000000 0x00030000 0x00000000 rootfs 0xA8030000 0xA8030000 0x00700000 0x00000000 vmlinux.bin.l7 0xA8730000 0x80041000 0x000B0000 0x80041000 FIS directory 0xA87E0000 0xA87E0000 0x0000F000 0x00000000 RedBoot config 0xA87EF000 0xA87EF000 0x00001000 0x00000000 |
上記が初期状態である。これをfis initで一旦初期化する。
1 2 3 4 5 6 7 8 9 10 11 |
RedBoot> fis init About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: . RedBoot> fis list Name FLASH addr Mem addr Length Entry point RedBoot 0xA8000000 0xA8000000 0x00030000 0x00000000 FIS directory 0xA87E0000 0xA87E0000 0x0000F000 0x00000000 RedBoot config 0xA87EF000 0xA87EF000 0x00001000 0x00000000 RedBoot> |
初期化後は上の様になる。rootfs,vmlinux.bin.l7が無くなった。
次に、etherケーブルをLa foneraに接続し、IPと、tftpサーバのIPを設定。
1 2 3 4 |
RedBoot> ip_address -l 192.168.10.1/24 -h 192.168.10.2 IP: 192.168.10.1/255.255.255.0, Gateway: 0.0.0.0 Default server: 192.168.10.2 RedBoot> |
まずはrootfsからダウンロード
1 2 3 4 |
RedBoot> load -r -b 0x80041000 openwrt-atheros-root.squashfs Using default protocol (TFTP) Raw file loaded 0x80041000-0x801e0fff, assumed entry at 0x80041000 RedBoot> |
rootfsを書き込み
1 2 3 4 5 |
RedBoot> fis create -l 0x06f0000 rootfs ... Erase from 0xa8030000-0xa8720000: ............................................................................................................... ... Program from 0x80041000-0x801e1000 at 0xa8030000: .......................... ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: . |
次はvmlinuxをダウンロードして、書き込み
1 2 3 4 5 6 7 8 9 |
<redboot> load -r -b 0x80041000 openwrt-atheros-vmlinux.lzma Using default protocol (TFTP) Raw file loaded 0x80041000-0x80100fff, assumed entry at 0x80041000 RedBoot> fis create -r 0x80041000 -e 0x80041000 vmlinux.bin.l7 ... Erase from 0xa8720000-0xa87e0000: ............ ... Program from 0x80041000-0x80101000 at 0xa8720000: ............ ... Erase from 0xa87e0000-0xa87f0000: . ... Program from 0x80ff0000-0x81000000 at 0xa87e0000: . </redboot> |
書き込みできたらリセットしてOpenWrt起動を確認する。しばらくしてEnterを押下し、プロンプトが表示されればインストール終わりだ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
RedBoot>reset : wifi0: H/W encryption support: WEP AES AES_CCM TKIP ath_ahb: wifi0: Atheros 2315 WiSoC: mem=0xb0000000, irq=3 : [Enter] : BusyBox v1.11.2 (2009-01-05 06:34:55 CET) built-in shell (ash) Enter 'help' for a list of built-in commands. _______ ________ __ | |.-----.-----.-----.| | | |.----.| |_ | - || _ | -__| || | | || _|| _| |_______|| __|_____|__|__||________||__| |____| |__| W I R E L E S S F R E E D O M KAMIKAZE (8.09, r14511) ---------------------------- * 10 oz Vodka Shake well with ice and strain * 10 oz Triple sec mixture into 10 shot glasses. * 10 oz lime juice Salute! --------------------------------------------------- root@OpenWrt:/# uname -a Linux OpenWrt 2.6.26.5 #21 Sat Feb 14 23:12:28 CET 2009 mips unknown root@OpenWrt:/# |
参考リンク
ご意見、ご指摘はこちらへ
この文章はbaeが書いています。有用な情報となるよう心がけていますが、利用される方は個人の責任でお願いします。お気付きの点、また、ご意見ありましたらご一報ください。公開鍵サーバに宛先を登録していますのでそちらを参照ください。