Thursday, November 10, 2011

fonera simplの解析

simplには容量の関係で設定ファイルはfilesystem上に作られていない。それなのでどうやって設定ファイルを保存しているのか興味があった。
いろいろ調べると/etc/configのデータを/tmpにリンクを張ってあり、それのイメージつくりmtd5に書き込んでいる。そのイメージの形式がよくわからない。cpioかなと思ったがコマンドないばかりかその他のコマンドも見当たらない。特殊デーモンが一連の操作を行っているらしい。

filesystemがreadonlyなのでmtd5のイメージを取り出してどうやって転送するかも悩みどころだった。tftpdというのが入っているがinetデーモンがないと動かない。唯一httpdサーバがあるのでこれを何とかして使いたい。/wwwはreadonlyなのでファイルをコピーできない。そこで、

# mount -o bind /tmp/new_mnt /www

としたらうまくいった。あとはwgetを使ってファイルを転送すればよい。

$ file mtd5.img
mtd5.img: data

ということでcpioファイルではない。試しにcpioで展開してみたが、やはりエラーがあった。基本的にはcpioと似たようなことをしている。

次にすることはwwwにあるjsの解析で、wwwサーバーを通してファイル操作している。jsでファイル操作するのは私の知るかぎり特殊なケースだと考えられる。cgiを通して操作するならわかるがjsなのでかなり特殊な印象がある。jsを使うとcgiの実装しない分、軽量になる。それなので、jsをうまく転用して使うのが得策だろう。そこで解析ということになる。私はjsに関して基本的知識しかないので理解するまでかなり時間がかかる。

---


$ svn co -r 5704 http://svn.luci.subsignal.org/luci2

zeptthoはリビジョンが上がると消えてしまうので5704を指定する。またopenwrtではluci2ではなくてluciを使っている。

でzeptthoをビルドするにはかなり面倒くさい。まずluaがshared libにしないといけない。ソースのままだとできないのでopenwrtのパッチを当てるとできる。さらにjsonを入れてmake CFLAGS="-I/usr/include/json"でビルド。それとuciもビルド。しかし

lmo/lmo_hash.c cbi2/MurmurHashAligned2.c cbi2/hmap.c cbi2/hmapx.c cbi2/cbi2.c
form.c:16:27: fatal error: microd_client.h: そのようなファイルやディレクトリはありません

microdというのが見つからない。ソースツリーにあるはずだけど見つからない。そのデーモンはfonにもあるがいったいどこから持ってくるのだろう?

No comments:

Post a Comment