2011年8月9日火曜日

overlayでUSBストレージをrootにマウント

右往左往しているOpenWrtですが、どうしても何とかしたい壁はやはり容量の壁を何とかしたいと思っています。
Windows系の考え方としては単純に各アプリケーションを別のHDDに追いやってしまえばいいのですが、Linuxだとどうもスマートな方法が見つかりません。
opkgでインストールディレクトリを変えてしまえばいいとは思うんですけど、具体的な方法がわかりません。
なんとかならないかということでKNOPPIXで遊んでいるとunionfsなるものがあるようで、これはdatabese的なところのunionと同じ考え方をfsに実装しているようです。
たしかにOpenWrtではmini_foというキーワードと共に/overlayディレクトリを/ディレクトリに結合させている雰囲気があります。

では、実際にusbドライブでマウントしたフォルダをルートにかぶせることができれば、容量を確保できないだろうか?という結論に。

具体的に、行う前に一回インストール直後の状態に戻した状態から。
まずはusbを認識させるためのパッケージを導入します。
・インターネット接続を行えるようにLAN, WANの設定を行う。
・opkg update
・opkg install kmod-scsi-core
opkg install kmod-usb-storage
opkg install kmod-fs-ext3
(kmod-fs-mbcacheもインストールされる)
さらにブート時に自動でusbをマウントさせる設定を行うため
opkg install block-hotplug
(block-mount)

(気になるのは block-extrootパッケージも入れて見た。参考文献としてはこちら
この状態でFree space: 87% (3.54 MB)となっています。

この状態でマウントポイントを設定しなおしてみると…
ファイルシステムでext3を選んだ後、Use as root filesystemこんな属性が増えていました。
試しに再起動をしてみると・・・
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/mtdblock4 on /overlay type jffs2 (rw,relatime)
mini_fo:/overlay on / type mini_fo (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)

再起動後
root@OpenWrt:/# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,relatime)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
/dev/sda2 on /overlay type ext3 (rw,relatime,errors=continue,data=writeback)
mini_fo:/overlay on / type mini_fo (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
none on /proc/bus/usb type usbfs (rw,relatime)

mtdblock4が消えてるのが気にはなりますが、これでusbドライブがルートにかぶせられてる雰囲気が強くなりました。
実際にLuCIのSoftwareのページのフリースペースを確認してみると
Free space: 95% (115.49 MB)
ちゃんと増えている様子が伺えました。


ということで、容量を直接拡張する方法は意外と簡単に行うことができました。
(ただしUSBがきちんとマウントされれば、という大前提がありますが(笑))

0 件のコメント:

コメントを投稿