1.获取 rootfs_data
设备 OpenWrt-18.06.5-newifi-d2
cat /proc/mtd
得到如下输出
dev: size erasesize name
mtd0: 00030000 00010000 “u-boot”
mtd1: 00010000 00010000 “u-boot-env”
mtd2: 00010000 00010000 “factory”
mtd3: 01fb0000 00010000 “firmware”
mtd4: 001c0fb0 00010000 “kernel”
mtd5: 01def050 00010000 “rootfs”
mtd6: 01b80000 00010000 “rootfs_data”
可用于mtd烧写和复制的分区是 rootfs_data,如上,位于mtd6,在磁盘的位置 /dev/mtd6
如果设备设置支持nand flash,rootfs_data 也位于 /dev/mtdblock6
2.备份openwrt系统
例如备份到 /tmp 目录
上述例子 rootfs_data 分区位于 mtd6 ,因此使用dd命令 将其写到 /tmp/backup-*-overlay.bin文件
dd if=/dev/mtd6 of=/tmp/backup-`echo $(cat /etc/banner|grep OpenWrt|awk -F "," '{print $1}')|sed 's/ /-/g'`-`uname -n`-`date "+%Y-%m-%d"`-overlay.bin
或者 nand设备 /dev/mtdblock6
dd if=/dev/mtdblock6 of=/tmp/backup-`echo $(cat /etc/banner|grep OpenWrt|awk -F "," '{print $1}')|sed 's/ /-/g'`-`uname -n`-`date "+%Y-%m-%d"`-overlay.bin
使用dd 命令 位于 rootfs_data分区的内容包括已经安装的软件和配置会原原本本地写入 overlay.bin文件,这就像 ghost克隆,而不像 openwrt提供的备份功能,只恢复配置文件
将 /tmp/backup-*-overlay.bin 保存到其他主机,当需要恢复的时候 用做恢复源镜像,重启后/tmp目录下的内容丢失
3.还原openwrt系统
将备份的文件 使用 mtd -r write 烧写到 路由的 rootfs_data分区
例如 使用scp 将 /tmp/backup-*-overlay.bin 复制到 openwrt
scp /data/openwrt-backup/backup-OpenWrt-18.06.5-newifi-d2-2020-3-11-overlay.bin root@192.168.1.1:/tmp/backup-OpenWrt-18.06.5-newifi-d2-2020-3-11-overlay.bin
mtd烧写固件
mtd -r write /tmp/backup-OpenWrt-18.06.5-newifi-d2-2020-3-11-overlay.bin rootfs_data