物好き者

物好き者が行ったことを載せています。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

DD-WRTで / をrwにする方法

DD-WRTでのPPPoEマルチセッションへの挑戦9にて、LaFonera純正ファームでは、/jffs/etc以下にインストールされますが、/etcにインストールされたのと同じ状態で、/etc以下で使用できるので、pppoe-client_3.5-1_mips.ipkが動くことがわかりました。
DD-WRTでは、/jffsに書き込まれてしまうので、スクリプトのパス変更などが必要で、動かすことが出来ていません。同じようにDD-WRTで/etc以下で使用できるようになれば、簡単に動かすことが出来ると考えました。

なぜ、そのようになるかを調べたところ、仙石浩明の日記: La Fonera 用の ipkg feed を始めましたに、次のように書かれていました。
La Fonera のファイルシステムは mini_fo (mini fan-out) を使っている。つまり squashfs を read only でマウントした「上」に、 jffs を重ねてマウントしている。

この方法をとると、/ のマウントがroでも、/ への書き込みを/jffsに行うことで、rwとして扱えるそうです。

LaFoneraのmount状態を見ると、次のようになっていました。
root@OpenWrt:~# mount
/dev/root on /rom type squashfs (ro)
none on /dev type devfs (rw)
none on /proc type proc (rw)
none on /tmp type tmpfs (rw,nosuid,nodev)
none on /dev/pts type devpts (rw)
/dev/mtdblock/2 on /jffs type jffs2 (rw)
/ on / type mini_fo (rw)

DD-WRTのmount状態を見ると、次のようになっていました。
~ # mount
rootfs on / type rootfs (rw)
/dev/root on / type squashfs (ro)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
ramfs on /tmp type ramfs (rw)
/dev/mtdblock/4 on /jffs type jffs2 (rw)


まず、LaFoneraでこの方法のmountが出来るか調べてみました。
ファイルシステムが mini_fo となっているので、単純にmount -t mini_foとしてみたところ、エラーとなりました。
root@OpenWrt:~# mount -t mini_fo /jffs /tmp/test
Segmentation fault

mini_foに関していろいろ調べてみました。
MiniFOHome < Know < DENXというmini_foのページが見つかり、MiniFOFAQ < Know < DENXに、mountオプションがありました。

LaFoneraの/tmp/testに/jffsをマウントするようにしてみました。
root@OpenWrt:~# mount -t mini_fo -o base=/tmp/test,sto=/jffs /jffs /tmp/test
root@OpenWrt:~# mount
/dev/root on /rom type squashfs (ro)
none on /dev type devfs (rw)
none on /proc type proc (rw)
none on /tmp type tmpfs (rw,nosuid,nodev)
none on /dev/pts type devpts (rw)
/dev/mtdblock/2 on /jffs type jffs2 (rw)
/ on / type mini_fo (rw)
/jffs on /tmp/test type mini_fo (rw)

/tmp/testを確認すると、元から/tmp/testにあるファイル・ディレクトリと、/jffsにあるファイル・ディレクトリの両方が見えて使用できます。


DD-WRTでも使えるかやってみましたが、エラーとなりました。mini_foが使えないようです。
/tmp # mount -t mini_fo -o base=/tmp/test,sto=/jffs /jffs /tmp/test
mount: mounting /jffs on /tmp/test failed

OpenWRTのパッケージディレクトリを見ましたが、mini_foのパッケージが見つかりません。
ふと考えてDD-WRTのパッケージディレクトリを見ると、kmod-mini-fo_2.6.16.7+0.6.... というパッケージがありました。
早速インストールしてみました。

/jffs # wget http://www.dd-wrt.com/dd-wrtv2/downloads/others/packages/kmod-mini-fo_2.6.16.7%2B0.6.2pre1-brcm-1_mipsel.ipk
Connecting to www.dd-wrt.com [83.141.4.210:80]
kmod-mini-fo_2.6.16. 100% |*****************************| 30683 00:00:00 ETA
/jffs # ipkg install kmod-mini-fo_2.6.16.7\%2B0.6.2pre1-brcm-1_mipsel.ipk
tar: invalid tar header checksum
tar: short read
ipkg_install_file: ERROR unpacking control.tar.gz from kmod-mini-fo_2.6.16.7%2B0.6.2pre1-brcm-1_mipsel.ipk

エラーとなってしまいました。調べたところ、/jffsの容量不足が原因でしたので、/jffsを空にしてから再度インストールしました。
/tmp # ipkg install kmod-mini-fo_2.6.16.7\%2B0.6.2pre1-brcm-1_mipsel.ipk
Unpacking kmod-mini-fo...Done.
Configuring kmod-mini-fo...Done.

LaFonera純正ファームと同じようにマウントしてみました。
/tmp # mount -t mini_fo -o base=/tmp/test,sto=/jffs /jffs /tmp/test
mount: mounting /jffs on /tmp/test failed

mountがエラーとなってしまいました。
パッケージがkmodなので、カーネルモジュール形式のようなので、insmodで組み込んでみました。
/jffs # insmod /jffs/lib/modules/2.6.16.7/mini_fo.ko
insmod: unresolved symbol mutex_lock
insmod: unresolved symbol mutex_unlock
insmod: unresolved symbol iget_locked
insmod: unresolved symbol generic_fillattr
insmod: unresolved symbol generic_shutdown_super
insmod: unresolved symbol get_sb_nodev
insmod: unresolved symbol mntput_no_expire

ふと考えると、パッケージにバージョン番号が入っていました。
v24RC4をインストールしてありますが、バージョン情報を確認してみました。
/jffs/etc/modules.d # uname -a
Linux WLI-TX4-G54HP 2.4.35 #2525 Wed Oct 10 00:49:07 CEST 2007 mips unknown

v24RCはカーネル2.6だと思っていましたが、2.4.35でした。mini_foの対応バージョンが2.6.16.7のようなので、動かないようです。
それとも、別のパッケージをインストールしておく必要がるのでしょうか。

スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

承認待ちコメント

このコメントは管理者の承認待ちです

| | 2014年07月25日(Fri)02:14 [EDIT]


承認待ちコメント

このコメントは管理者の承認待ちです

| | 2014年08月26日(Tue)04:42 [EDIT]


承認待ちコメント

このコメントは管理者の承認待ちです

| | 2014年09月01日(Mon)00:10 [EDIT]


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。