OpenWrt编译后生成的bin文件:jffs2与squashfs、factory与sysupgrade

OpenWrt编译后会生成多个bin文件,比如

openwrt-ar71xx-generic-tl-wr841nd-jffs2-factory.bin      8126464
openwrt-ar71xx-generic-tl-wr841nd-jffs2-sysupgrade.bin     4980740
openwrt-ar71xx-generic-tl-wr841nd-squashfs-factory.bin   8126464
openwrt-ar71xx-generic-tl-wr841nd-squashfs-sysupgrade.bin  3538948

bin文件名称中有两种不同的格式,jffs2与 squashfs。这两种格式的固件区别在于,squashfs格式的bin文件安装后,会占用一定的空间来存放系统的一些必要文件,这些文件都只是可读的,其作用是帮助恢复系统。当OpenWrt崩溃时,可以基于这些文件,使用firstboot脚本重建初始系统,而jffs2则不会存储这样的文件,好处是节省了空间。一般使用squashfs格式的固件,方便恢复系统到初始状态。

每种格式都有两个文件,factory与sysupgrade,这两者的区别是,factory多了一些验证的东西,用于在原厂固件的基础上进行升级,如果已经是OpenWrt,直接使用sysupgrade文件即可。并且,在原厂固件的基础上进行升级时,首先使用factory文件,然后需要再次使用 sysupgrade文件,选择不保留原来配置进行升级。

官方下载的都分jffs2和squafs两种格式
jffs2文件系统格式是适合于断电的系统,不像FAT那样容易丢文件,因为路由器一般都容易突然断电。
官方的jffs2格式刷到路由器后就是一个jffs2分区,ROM本身和以后安装的软件都在这个分区里都可以读写。


而squafs格式则是把ROM压缩到了一个文件刷进路由器,然后剩下的空间格式化成jffs2并且优先于ROM文件,有点像WM手机上的情况。ROM只读分区挂在/rom下,而另一个可读写jffs2分区挂到/overlay,当/overlay下有和/rom同名的文件就优先读这个,相当于覆盖了ROM文件,实际上并没有覆盖。这种情况的优点是ROM压缩率高,可写分区就更大一点,其次只要备份/overlay就可以把ROM以为的所有文件都备份下来,以后全部还原就可以不用重新配置了。格式化/overlay分区就相当于恢复openwrt出厂设置了。

官方推荐squafs,因为这种格式就算配置乱了还可以恢复刷机后的出厂设置,二是压缩后节省空间。jffs2格式搞乱了就只能重刷了

(squashfs和jffs2区别是,squashfs本身会占用1M空间存放系统必要的文件,并且这些文件是只读的,当系统损坏时,可以执行firstboot恢复初始状态。jffs2,虽然剩余空间仍然为2M,但是openwrt本身占用的空间你也是可以支配的,换句话说系统本身是可以改写的。相对于squashfs方式,你将多出约1M左右的可支配空间,代价是需要删除一些系统的部件,而缺点是一旦系统崩溃,有可能你无法使用firstboot脚本重建初始系统。所以一般都下载squashfs的)