2011年7月14日木曜日

USB メモリー

色々とはまっていたUSBメモリーの認識ですが2回目の設定でもつまずきました。
opkgでkmodなんとかを色々入れれば認識するはずという感じで覚えていただけなので当然です(笑)

前回試したときはMZK-W04NUに直接USBメモリーを差し込んだだけのシンプルなものでしたが、今回はUSB-HUBを間に入れて試してみました。

適当に必要そうなパッケージをopkgでインストールして問題が無ければfat32でフォーマットしたメモリーであれば
mkdir /mnt/usb1
mount -t vfat /dev/sda1 /mnt/usb1
とすればマウントができ、
umount /mnt/usb1
でアンマウントができるはず。
必要なものが足りなければエラーが出て認識できず df コマンドを叩いても追加されていないということです。
エラーの表示はかなりアバウトなので dmesg でカーネルログを見たり cat /proc/bus/usb/devices や cat /proc/scsi/scsi などでどこまで認識できているかで不足しているものをインストールする必要があります。


opkgでいろいろ追加してみたり

いまだにjffs2とsquashfsの違いとfactoryとsysupgradeの違いがわかりません。
試しにOpenWrtのWebUIからFlashRomの更新でsysupgradeの方を流し込んでみましたが違いがわからないです。
もしかすると何か追加されたのかも?とか淡い期待がありますが全くわかりません。

ちょっと時間が出来たので調べてみたところjffs2とsquashfsはどちらもファイルシステムの格納方式のようで、jffs2がジャーナル特化型、squashfsが圧縮特化型のようで、結果としてケースバイケースであまり気にしなくてよさそうです。フラッシュメモリは酷使しそうですがメモリと実行時間を考えるとsquashfsを選択して間違えはなさそうです。
ただ、squashfsをインストールしたはずですがコンソールでjffsという単語があったような気もするので実際どのような構成になっているのかやはりわからないです(笑)

そんななか闇雲にいろいろとopkgして見ました。
パッケージ組み込みコマンドがほとんど面倒を見てくれるので何も考えずにどんどん追加できます。
知ってるパッケージは一通りそろっているようです。
OpenWrt backfire 10.03.1-rc4はWebUIが動作するようになっているのでapacheはインストールしてもそのままでは動かなかったり、sambaもそのままでは動かなかったり色々しますがパッケージのインストールは簡単に出来ました。

WebUIではFull版の画面であればパッケージのインストールも出来るし、削除も出来ました。
またinitの起動設定も出来るし、FlashRomの空き容量も確認できました。
X-WRTというWebベースのコンソールもあるようでそっちの方がLuci(10.03.1-RC4で組み込まれるもの)より色々設定が出来そうですが、Snapshotからパッケージを入れる必要があるために少し準備が必要なようです。

パッケージはapacheが巨大なだけでほかはほとんどFlashRomを消化しないので8Mでもそれなりにできそうです。
ルータとしてみればDD-WRTを利用するのが一番便利そうですが、個人的にはもう少し遊びたいので最低限に近い形のOpenWrtで遊んでみようと思います。

*** Warning - bad CRC, using default environment

ルータのシリアルコンソールで遊び始めて少し経ちましたが、引っかかってることがあるので一旦閉じた蓋をもう一度こじ開けて確認してみました。
U-Boot 1.1.4 (Oct 25 2007 - 15:28:59)

AP81 (ar7100) U-boot
DRAM: 
sri
32 MB
Top of RAM usable for U-Boot at: 82000000
Reserving 222k for U-Boot at: 81fc8000
Reserving 192k for malloc() at: 81f98000
Reserving 44 Bytes for Board Info at: 81f97fd4
Reserving 36 Bytes for Global Data at: 81f97fb0
Reserving 128k for boot params() at: 81f77fb0
Stack Pointer at: 81f77f98
Now running in RAM - U-Boot at: 81fc8000
id read 0x100000ff
flash size 8MB, sector count = 128
Flash:  8 MB
*** Warning - bad CRC, using default environment
起動時に表示されるこの「bad CRC」の表示。
実は消えるかもしれないという期待だけでOpenWrtのWebコンソールからデフォルト設定にして見たりしてみましたが、変化は見られないという結果です。
蓋を開けたついでに公式のファームウェアに戻してみて出荷時設定を行ってみましたが、やはり変わらず。(OpenWrtから公式ファームに戻すにはOpenWrtのWebページから公式ファームウェアを(ヘッダを取らずに)そのまま指定して更新すれば元に戻ります。)

検索したところ出てきたのは組み込みLinux掲示板でした。
表示を消すためにはFlashROMを書き換えた後、(U-bootコンソール時に)saveenvすることで正しいCRC値を設定することが出来き、ワーニングを消すことが出来ました。
実際のところ表示されていてもちゃんと書き込めていれば問題はないので気にする必要は全く無いようです。

ただ、ハッキングなどされた場合にこの表示がされるようになるはずなのである程度のチェッカとして機能しそうですが、設定を変更するたびにCRCも変わってしまいそうです。
MZK-W04NUのようなハードの場合は、設定を変えるごとに毎回蓋を開けてシリアル接続をしてsaveenvするなど絶対するはずも無いとおもうので「仕様」として無視するのがよさそうなのかもしれません。

2011年7月12日火曜日

OpenWrtを入れてみました

ルータが復活したわけですが、時すでに代替ルータはあるのでせっかくなのでここでOpenWRTでも入れてみることに。
結局どのバージョンを試してもMZK-W04NUはNASとしてはまともに機能しなかったわけですし。

OpenWRTは全く良くわからないのですが、開発はどれも去年あたりで止まっている様子です。
いくつかのバージョンがあって、パッケージも複数に枝分かれしている感じです。
kamikaze
backfire
これの違いはまったくよくわかりません。
それと実際にインストールする手順がおなじbackfireでも若干手順が違っているようでわからないことだらけです。
そもそもシリアルコンソールの仕組みすら良くわかっていません。

そのため結果としてどうなるか全く予測がつかない状態なわけです(笑)
今回試してみようと思うのはbackfireの最終バージョンっぽい
http://downloads.openwrt.org/backfire/10.03.1-rc4/ar71xx/
を試してみようと思います。

ここで疑問なのが
jffs2、squashfs、factory、sysupgrade
といういくつかのキーワード。

いくつかのページで見かけているsquashfsと言う方を候補とし、バイナリのサイズも大きいほうを選んで
openwrt-ar71xx-mzk-w04nu-squashfs-factory.bin
をインストールしてみようとおもいます。

シリアル接続でターミナルを起動してMZK-W04NUの電源を入れてみます。
Hit any key to stop autoboot:
と表示されたら何かキーを入力してブートを停止させます。

そこから
ar7100> setenv serverip 192.168.245.101; setenv ipaddr 192.168.245.102
ar7100> tftp 0xa0800000 openwrt-ar71xx-mzk-w04nu-squashfs-factory.bin
ar7100> cp.b 0xa0800022 0xa0800000 0x77ffde
ar7100> iminfo 0xa0800000
ar7100> erase 0xbf050000 +0x780000
ar7100> cp.b 0xa0800000 0xbf050000 0x780000
ar7100> iminfo 0xbf050000
ar7100> reset
で、再度コンソールに色々表示され始め表示が止まったところでエンターキーを入力してみると
BusyBox v1.15.3 (2010-11-11 22:22:00 PST) 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
 Backfire (10.03.1-rc4, r24045) --------------------
  * 1/3 shot Kahlua    In a shot glass, layer Kahlua 
  * 1/3 shot Bailey's  on the bottom, then Bailey's, 
  * 1/3 shot Vodka     then Vodka.
 ---------------------------------------------------
root@OpenWrt:/# 
との表示がされ、何となくインストールできたのではないかという感じに。
シェルプロンプトが出ているので lsとしてみるとファイルシステムも見れるようで、いろいろありそうです。
wwwというディレクトリもあるので試しにブラウザから見てみようかと…
PC上でipconfigで確認してみるとIPがMZK-W04NUからDHPC取得できていないようなので一度つなげなおしてから確認してみるとデフォルトゲートウェイが192.168.1.1になっているので
http://192.168.1.1
とブラウザに入力したところ
No such file or directory
と表示されるだけ。
wwwディレクトリの中にはindex.htmlが含まれているのでもう一度
http://192.168.1.1/index.html
と入力してみると
webサーバーも動いている感じです。
思惑としてはwebサーバーとファイルサーバーが動いてくれれば便利だとは思うのですが、色々見ていると容量の関係上辛いところもあるようで…

復活させることが出来ました

シリアルコンソールが開かれたので早速元の状態に戻してみようと。
シリアル接続以外に準備したものは、
  • 公式ページからダウンロードしたファイルをバイナリエディタでヘッダを削除したもの(MZKW04NU_V10314[1].BIN)
  • PCとMZK-W04NUを接続するLANケーブル(tftp用)
  • PC側のMZK-W04NUと接続するLANの設定(IPアドレスを192.168.245.101とした)
  • tftpサーバープログラム(MZKW04NU_V10314[1].BINをダウンロードできるように準備)
これらの準備ができたら早速MZK-W04NUの電源を入れてシリアルコンソールから操作です。
ar7100> erase 0xbf050000 +0x770000
Erase Flash from 0xbf050000 to 0xbf7bffff in Bank # 1 
First 0x5 last 0x7b sector size 0x10000
Erased 119 sectors
ar7100> setenv serverip 192.168.245.101; setenv ipaddr 192.168.245.102
ar7100> tftp 0xa0800000 MZKW04NU_V10314[1].BIN
Using eth0 device
TFTP from server 192.168.245.101; our IP address is 192.168.245.102
Filename 'MZKW04NU_V10314[1].BIN'.
Load address: 0xa0800000
Loading: *checksum bad
#################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #################################################################
     #########################################
done
Bytes transferred = 7864286 (77ffde hex)
ar7100> iminfo 0xa0800000 

## Checking Image at a0800000 ...
   Image Name:   Linux Kernel Image
   Created:      2009-04-01   5:48:15 UTC
   Image Type:   MIPS Linux Kernel Image (gzip compressed)
   Data Size:    1348095 Bytes =  1.3 MB
   Load Address: 80002000
   Entry Point:  8029c000
   Verifying Checksum ... OK
ar7100> cp.b 0xa0800000 0xbf050000 0x770000
Copy to Flash... write addr: bf050000
done
ar7100> reset

Resetting...
 「checksum bad」と表示されているのはシリアル通信上のデータエラーのようで前後の表示が崩れるようです。どこで出力されているのかわかりませんが(笑)

これでリセットされた後、ようやく復活しました。