openwrt固件格式的选择
通常github发布的固件,都提供两种选择:.ext4和.squash.
发布人通常说,老手选择.ext4,新手选择.squash.
但这不是全部事实。因为即便是linux,也没人推荐你一直使用root权限使用。而.ext4固件就等于你一直用root权限使用软路由,这就非常危险。至少.squash还提供了重置的机会,这当然是更好的选择。
但,这就引出另一个问题,假若我们需要升级软路由中某些软件,甚至需要频繁的升级,固件所提供的/overlay空间慢慢就不够用了。当/overlay写满之后,路由器就不能保存任何配置,不能保存任何升级,各种部署好的应用慢慢都不能运行了(这种事情通常发生在软路由运行一年以上的时候)。新手就会选择重新刷固件。这就有些烦。
而/overlay本质上是不能扩容的。但是,它是可以屏蔽的。这就意味着.squash的固件也可以通过屏蔽原始/overlay的方式,给/overlay指定一个新的存储空间,变相增加/overlay空间,我分配了10G,这就可以不担心软件升级问题,避免路由器存储空间耗尽。
流行的固件,我见过最多的/overlay空间就是1GB,但是目前的TF卡基本是64GB起步,32GB、16GB产品都已经不多了。所以这种固件更多是为了兼容老的存储卡,或者非常非常廉价的存储卡,或者不能用存储卡的软路由设备。
基于此,我们当然可以手动更改它最初的/overlay空间。只扩容/overlay是可以的,因为.squash的所有写入和配置操作都是在/overlay中进行的,这是一个只在逻辑上存在的文件夹,逻辑上和固件核心文件都是隔离的,你怎么改动都不会影响固件最初的本体,路由器读取/overlay中的配置文件运行,而固件本身文件是不改动的。 /overlay可以看成是固件的一个可编辑镜像。 这也是.aquash可以重置的原因,重置的原理就是清空/overlay所有数据,重新复制固件原始数据到/overlay,这就能方便的重新设置路由器。至少比重新刷固件方便。
【这是最近使用软路由的备忘录,以及我一年多以来所遇到的问题,以及解决思路】