使用ubifs作为根文件系统的openwrt如何在进行sysupgrade时保存旧的配置

1.openwrt的默认方案(squashfs + jffs2)

sysupgrade脚本直接调用default_do_upgrade更新设备树、内核、根文件系统,那么它是如何保存旧配置的呢?请看default_do_upgrade(定义在package/base-files/files/lib/upgrade/common.sh中):

1 default_do_upgrade() {
2 sync
3 if [ "$SAVE_CONFIG" -eq 1 ]; then
4 get_image "$1" "$2" | mtd $MTD_CONFIG_ARGS -j "$CONF_TAR" write   
5 else
6 get_image "$1" "$2" | mtd write - "${PART_NAME:-image}"
7 fi
8 [ $? -ne 0 ] && exit 1
9 }

关注第4行即可,-j参数后面追加了$CONF_TAR,表示在写镜像的时候将旧的配置文件合并到jffs2 数据中 (integrate <file> into jffs2 data when writing an image)

2.那么如果只使用ubifs作为根文件系统应该如何备份旧的配置文件呢?

2.1 使用sysupgrade.tar这样压缩格式作为sysupgrade固件(也就是将设备树、内核和根文件系统放在一个目录下,然后将目录压缩)

2.2 使用ubiupdatevol来更新ubi镜像到当前的根文件系统,然后重新挂载文件系统,紧接着将旧的配置文件复制到刚挂载的文件系统中即可

原文地址:https://www.cnblogs.com/dakewei/p/10058657.html