helislayer 发表于 2016-10-7 16:19:05

OpenWRT 用 U盘代替 flash

本帖最后由 helislayer 于 2016-10-8 11:53 编辑

这个技术叫做 EXTRoot,英文网页在
https://wiki.openwrt.org/doc/howto/extroot

在我看来是一个超级有用的技术。这个技术在 Openwrt
启动以后使用 U 盘上的文件系统替代掉原来在 flash 里面
的文件系统。flash 一般 8M 16M 就很大了,但是 U 盘随便
就 1 个 G。所以如果可以使用 U 盘替代 Openwrt 的 flash
基本上相当于 flash 没有限制了。

还有应外一个好处是,config 保存在 U 盘。这样可以避免
由于配置不当而转头了路由器。因为 U 盘可以拔出来在
电脑里修改里面的配置文件。

简单的步骤介绍一下,更加仔细的在那个英文的网页里。

1) 是安装 block-mount 和 usb 盘的驱动。
opkg update ; opkg install block-mount kmod-fs-ext4 kmod-usb-storage

2) 找个 USB 硬盘,把 /dev/sdX1 格式化成 ext4
X 是 USB 盘符号。这个格式化可以在 Linux 的电脑里面做。
mkfs.ext4 /dev/sdX1

3) 插入 U 盘到 Openwrt 路由器。拷贝 /overlay 到 /dev/sda1
mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt

4)配置 fstab 启用 U 盘当作 /overlay
block detect > /etc/config/fstab
然后把里面的 enable 的 “0” 改成 “1”
如果用脚本来做的话就是:
block detect > /etc/config/fstab; \
   sed -i s/option$'\t'enabled$'\t'\'0\'/option$'\t'enabled$'\t'\'1\'/ /etc/config/fstab; \
   sed -i s#/mnt/sda1#/overlay# /etc/config/fstab; \
   cat /etc/config/fstab;

这样基本上就好了。
这个通常需要 8M 以上的 flash 才可以运行 extroot,除非自己编译
openwrt。

但是我发现一个 4M flash 也可以用的方法。这个是比较独创的。
如果只有 4M flash,例如那个 WR703n。
opkg update ; opkg install block-mount kmod-fs-ext4 kmod-usb-storage
这一步会说空间不够。我发现一个秘诀就是,ext4 文件系统比较大。
如果换成 f2fs 就装得下了
opkg update ; opkg install kmod-fs-f2fs kmod-usb-storage

大家可能注意到我没有装 block-mount。
这个是因为目前 Chaos Calmer 里面的 block-mount 不会使用 f2fs.
需要打补丁。
具体看这个。
https://forum.openwrt.org/viewtopic.php?pid=311332#p311332

然后我把上面连接里面提到的一个用户打好补丁的 block-mount
上传上来了。
装了这个 block-mount
使用 f2fs 的时候第2步用 mkfs.f2fs /dev/sdX1
其他的一样。

ljy99731 发表于 2016-10-7 16:26:50

顶一下,看起来不错

xjjiang 发表于 2016-10-7 16:56:52

openwrt确实挺好玩,但用途好像比较窄,大公司用,小公司用不起开发维护都是不少的费用

johnlj 发表于 2016-10-7 16:59:27

思路相当好,换大的固件都不用动烙铁了

pazulin 发表于 2016-10-7 17:08:00

有是有用,但是用途没有想象的大

dhbighead 发表于 2016-10-7 17:28:41

看起来适合DIY玩家,搞开发应该也挺方便的样子。

SkyGz 发表于 2016-10-7 18:40:31

适合 插件狂人...........

Vmao 发表于 2016-10-7 18:48:28

SD卡 启动才是王道

wxws_wxws 发表于 2016-10-7 18:50:20

好玩意,留下了

huangqi412 发表于 2016-10-7 19:27:51

只能说适合diy吧   市面上都是各家自己系统升级 然后加个捅菊花复位键普通消费者不需要   开发人员也不需要

helislayer 发表于 2016-10-7 23:28:53

当然是适合喜欢捣腾 openwrt 的 diy 的人。
Openwrt 其实市面上有不少路由器用,只不过不一定是
现在 LuCI 那样的界面罢了。

换启动部分的固件仍然需要刷 flash。
我在 U 盘上装了 git,然后把 openwrt 的 config 版本保存
起来这些。

gzhuli 发表于 2016-10-7 23:44:29

曾经用过一段时间U盘,后来还是换了16M Flash,毕竟外挂U盘还是不够稳定。
16M Flash足够装很多东西了,数据库之类的大软件以MIPS的身子骨也跑不动。

helislayer 发表于 2016-10-8 00:34:05

本帖最后由 helislayer 于 2016-10-8 01:55 编辑

gzhuli 发表于 2016-10-7 23:44
曾经用过一段时间U盘,后来还是换了16M Flash,毕竟外挂U盘还是不够稳定。
16M Flash足够装很多东西了,数 ...

我用外挂 U 盘好几年了。没有碰到 U 盘不稳定的情况。
普通 Openwrt 启动完了以后 U 盘基本上是不写的。

16M 是自己升级的吧,市面上 16M flash 的路由器还是比较
少见的。

我没有跑数据库什么的,就是在 U 盘上跑 git client。
用来保存我的 config, 自动 push 到 git server。
升级的时候好有个版本追踪。

我看了一下我空间使用情况,一下子 30M 就出去了。
所以你的16M 对我来说还是不够用的。

root@OpenWrt:~# df
Filesystem         1K-blocks      Used Available Use% Mounted on
rootfs               7303312   30208   6879072   0% /
/dev/root               2304      2304         0 100% /rom
tmpfs                  63020       160   62860   0% /tmp
/dev/sda1            7303312   30208   6879072   0% /overlay
overlayfs:/overlay   7303312   30208   6879072   0% /
tmpfs                      512         0       512   0% /dev
root@OpenWrt:~#

另外那个 raw flash 跑 ext4 之类的文件系统不太合适。
raw flash 没有 leveling。

我曾经有个旧的路由器估计是写太多 flash 有异常了,当然
我有自己的原因,我有个程序不时在里面写 log。

helislayer 发表于 2016-10-8 02:06:05

huangqi412 发表于 2016-10-7 19:27
只能说适合diy吧   市面上都是各家自己系统升级 然后加个捅菊花复位键普通消费者不需要   开发人员也不需 ...

基本同意。我就提一个啊,开发人员如果可以在路由器跑 git client
还是很有帮助的。开发 app 的时候直接在 PC 端改,路由器直接 push
上去就好了。

gzhuli 发表于 2016-10-8 02:28:14

helislayer 发表于 2016-10-8 00:34
我用外挂 U 盘好几年了。没有碰到 U 盘不稳定的情况。
普通 Openwrt 启动完了以后 U 盘基本上是不写的。
...

国产路由USB插座质量都不是很好,有时候不小心碰到一下什么的U盘就很可能掉了,很麻烦。
我的树莓派和香蕉派都7x24跑着,粗活不用路由器干,主要就是跑VPN之类的东西,其实8M自己编译个量身定做的精简版ROM也够用了,只是升级麻烦所以才换16M直接在官方ROM上装东西。

helislayer 发表于 2016-10-8 02:59:11

gzhuli 发表于 2016-10-8 02:28
国产路由USB插座质量都不是很好,有时候不小心碰到一下什么的U盘就很可能掉了,很麻烦。
我的树莓派和香 ...

我现在在用 TPLink WDR4300,虽然是国产的质量对我来说还好。
算是比较稳定的了。关键是我用比较小 U 盘,插进去就露个火柴头
那样,所以碰也碰不到那里去,就是拔出来比较麻烦。

我有自己编译 Openwrt, 我还给 Openwrt 贡献过一些 patch 被收录
了呢。但是家里网关那个路由器我就不乱搞了,基本上都是跑官方
的标准镜像。我的配置比较复杂,很多 VLAN 划分等等。所以升级
的时候保留配置很重要。

一般用是 8M 有余了。

RPi 我也有也经常跑着。

huangqi412 发表于 2016-10-8 10:05:52

helislayer 发表于 2016-10-8 02:06
基本同意。我就提一个啊,开发人员如果可以在路由器跑 git client
还是很有帮助的。开发 app 的时候直接 ...

有X86版的openwrt吧,如果要折腾大东西,是不是搞个白菜二手X86小盒子更方便,路由器芯片都太弱了吧。

helislayer 发表于 2016-10-8 11:54:08

huangqi412 发表于 2016-10-8 10:05
有X86版的openwrt吧,如果要折腾大东西,是不是搞个白菜二手X86小盒子更方便,路由器芯片都太弱了吧。 ...

不是折腾大东西啦,就是 openwrt 上面的 app。

chewy 发表于 2017-5-14 15:09:03

helislayer 发表于 2016-10-8 11:54
不是折腾大东西啦,就是 openwrt 上面的 app。

很久都没有再碰openwrt 现在直接玩可以刷梅林的R6400了
另外现在一帮人新折腾出来的AdvancedTomato也看起来不错

散吧散吧 发表于 2017-5-14 20:09:09

gzhuli 发表于 2016-10-8 02:28
国产路由USB插座质量都不是很好,有时候不小心碰到一下什么的U盘就很可能掉了,很麻烦。
我的树莓派和香 ...

请教下,如果使用树莓派一类的挂一个硬盘,这样话硬件的稳定性如何?主要担心硬盘会挂。。。

gzhuli 发表于 2017-5-14 22:34:59

散吧散吧 发表于 2017-5-14 20:09
请教下,如果使用树莓派一类的挂一个硬盘,这样话硬件的稳定性如何?主要担心硬盘会挂。。。 ...

树莓派的USB我觉得不够稳定,我的树莓派2 USB数据吞吐量一大连以太网都有可能掉线,所以挂硬盘最好还是选原生SATA口的。

aohu_2012 发表于 2017-5-15 17:09:01

学习啦{:smile:}

helislayer 发表于 2017-5-21 00:05:50

gzhuli 发表于 2017-5-14 22:34
树莓派的USB我觉得不够稳定,我的树莓派2 USB数据吞吐量一大连以太网都有可能掉线,所以挂硬盘最好还是选 ...

我有个树梅派1代在家里长期挂着跑 CF card 倒是没有什么事。
那个没有跑系统在 USB 上面。

还有用 3 代来旅行倒照片到 USB 硬盘里,还没有碰到
什么稳定性的问题。主要是避免带个笔记本,只有旅行的
时候用,用手机登陆来控制,用的也不多就是了。
页: [1]
查看完整版本: OpenWRT 用 U盘代替 flash