OpenWRT 固件文件名版本类型的区别

通常在网上获取下载 OpenWRT 固件时都会提供多个文件名格式的固件,比如典型的 sysupgrade 和 factory,很多人都知道如何去烧录固件到软路由内,但大概都还不清楚这些固件文件名之间的区别吧,下面用几个实例带大家了解下 OpenWRT 固件文件名版本类型之间的区别。

1、ext4-factory

实例:bcm2711-ext4-factory.img.gz

文件名中带有 ext4 字样说明是搭载了 ext4 文件系统的固件,而其中还带有了 factory 字样,factory 为原厂固件,多用于在原厂固件的基础上进行升级全新安装,进行烧录固件时需要解压 img.gz 文件后刷写,factory 固件比 sysupdate 固件多包含了原厂分区。

2、ext4-sysupgrade

实例:armv8-ext4-sysupgrade.img.gz

此处也是搭载了 ext4 文件系统的固件,但跟随的并非 factory 字样,而是 sysupgrade 类型,而 sysupgrade 只能用于升级,因为 sysupgrade 不包含数据分区,只包含 openwrt 分区,无需解压 img.gz 文件,可直接在 Luci 后台面板中上传升级。

3、squashfs-sysupgrade

实例:armv8-squashfs-sysupgrade.img.gz

上述为 ext4-sysupgrade 只可用于升级的 ext4 文件系统,而此实例有异曲同工之妙,只是多了个 squashfs 类型,而 squashfs 类似于 Window 系统的 ghost 的镜像文件,可在使用固件种出现错误设置或其他错误时,支持进行固件系统的默认恢复,可以说是 Reset 重置功能。

4、rootfs-ext4

实例:x86-64-rootfs-ext4.img.gz

rootfs 是挂载在容器根目录上用来为容器进程提供隔离后执行环境,就是所谓的容器镜像,而它是不带引导的 rootfs 镜像,可自行定义用 grub 或 syslinux 来引导存储为 ext4 格式,此类 rootfs-ext4 固件多出现在 X86_64 双系统的设备上。

5、combined-jffs2

实例:x86-64-combined-jffs2-128k.img

此类固件有点特殊,需要详细说下,jffs2 只适合闪存,是针对闪存的特质优化的文件系统,且可读写,因闪存和硬盘不同,闪存的写和硬盘的写也不同,为了让闪存寿命更长,才有闪存优化的文件系统,而 128K 主要是根据 Flash 的块大小来决定的,jffs2 可以自行更换或删除 rootfs 的配置文件,而不需要重新刷固件。

最后的总结

以上就是常用固件文件名格式的区别,当然还有些固件是专门为指定的设备而开发的,这里就不多说了,它们都会用自己的文件名来表现出来,就比如 Project 专门为竞斗云而生,还有就是 friendlyarm 为友善之臂而生,还有一些特殊的固件是安装和升级合在一起的,安装和升级使用同一种文件,大多出现在 arm64 和 x86 设备上。