2012年3月13日星期二

OpenWrt ExtRoot

从淘宝上买了个二手的TL-WR941ND,AR9132,改好USB、内存和Flash,成色和性价比感觉都还不错。不过8M的Flash肯定是不够我折腾的,于是。

OpenWrt Wiki上的相关资料有Flash LayoutExtRoot。在OpenWrt上扩充存储空间,比我想象的容易多了。

首先是准备外部存储器,我用的是一张1G的TF卡。分两个区,第一个850M左右的Ext3,第二个则是剩下的Swap。需要注意的是,TF卡上我其实更倾向于使用Ext2,因为日志型分区格式会带来更多的读写操作,而TF卡却没硬盘那么皮实。不过我也不很确定就是了,所以格式化为Ext3挂载为Ext2用,反正除了一点点空间外,也没什么损失。而分出Swap也只是有备无患,TF卡的读写远慢于内存,实在有需要的时候再swapon吧。

编辑/etc/config/fstab,修改成下面这个样子:

config 'global' 'automount'
        option 'from_fstab' '1'
        option 'anon_mount' '1'

config 'global' 'autoswap'
        option 'from_fstab' '1'
        option 'anon_swap' '0'

config 'swap'
        option 'uuid' 'e9cafe2e-04e8-43ac-b41d-26ea5c7c47c4'
        option 'enabled' '0'

config 'mount'
        option 'uuid' 'c8edd984-aea8-4bcc-b2bd-b5b110eefb6a'
        option 'device' '/dev/sda1'
        option 'target' '/mnt/sda1'
        option 'fstype' 'ext2'
        option 'options' 'rw,sync'
        option 'enabled' '1'
        option 'enabled_fsck' '0'
        option 'is_rootfs' '0'

config 'mount'
        option 'device' '/dev/mtdblock3'
        option 'target' '/mnt/overlay'
        option 'fstype' 'jffs2'
        option 'options' 'rw,noatime'
        option 'enabled' '1'
        option 'enabled_fsck' '0'

UUID可以用blkid /dev/sda*获得。

重启,mount一下看看,如果/dev/sda1被正确挂载到/mnt/sda1下,就证明配置文件没问题了。

接下来搬迁现有的overlay:

cp -a /overlay/* /mnt/sda1/

我是没试过,但据说TF卡读写速度比Flash快很多,如果把ROM的内容都放到TF卡上可以加快速度什么的。如果你想试试的话,可以这样:

cp -a /rom/* /mnt/sda1/
cp -a /overlay/* /mnt/sda1/

然后再次编辑/etc/config/fstab,把TF卡相关内容的is_rootfs设置为1,重启。查看df -h输出:

Filesystem                Size      Used Available Use% Mounted on
rootfs                  798.3M     17.1M    740.6M   2% /
/dev/root                 6.3M      6.3M         0 100% /rom
tmpfs                    30.3M    108.0K     30.1M   0% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda1               798.3M     17.1M    740.6M   2% /overlay
overlayfs:/overlay      798.3M     17.1M    740.6M   2% /

rootfs变大了,搞定。

想要的话,可以编辑/etc/banner,随便在什么地方加个记号,比如“Boot from TF-Card!”。下次ssh进去的时候,如果看见这句话,那就证明ExtRoot正在起作用。

没有评论 :