OpenWRT的备份、还原

迫于没有了解过编译内核,所以之前买的高性能小路由器——GL.iNet家的GL-AR750S是让大佬帮我配置好了校内免流所需的环境和工具。

然而春节在家,为了把网线接进卧室,发现家里n年前买宽带送的路由器完全不够用,性能羸弱还不大稳定,明明电信都支持ipv6了然而路由器却不支持(此处留下一笔墙突然加高的辛酸泪),于是,为了能够临时征用小路由而且之后回学校还能恢复它,我开始了折腾。

1.基础知识

openwrt系统运用了一个很高级的overlay技术,说白了就是整个“/”根目录是由一部分可读不可写的系统rom和一部分可读可写的储存合并起来的。

用cat /proc/mtd 显示Flash分区

1
2
3
4
5
6
7
8
:~# cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00020000 "CFE"
mtd1: 000dff00 00020000 "kernel"
mtd2: 00ee0000 00020000 "rootfs"
mtd3: 00ac0000 00020000 "rootfs_data"
mtd4: 00020000 00020000 "nvram"
mtd5: 00fc0000 00020000 "linux"

其中rootfs+rootfs_data两个分区加起来组成了“/”根目录。

如果你仅仅想将系统“恢复出厂设置”之后还能还原回来,备份rootfs_data分区就完全足够了

2.备份

注:不同型号的路由器rootfs_data所在的分区编号不一定是一样的,所以一定记得先用cat /proc/mtd查看

1
2
3
4
5
:~#mtd unlock rootfs_data
:~#dd if=/dev/mtd3 of=/tmp/rootfs_data.bin
:~# dd if=/dev/mtd3 of=/tmp/rootfs_data.bin
22016+0 records in
22016+0 records out

然后将=/tmp/rootfs_data.bin 下载到电脑

3.还原

刚开始为用着“rootfs_data”还原”rootfs_data”的这种“我还原我自己”的行为头痛了好一阵,后来才知道OpenWRT有一个只使用”rootfs”分区的安全模式(又称恢复模式)

开启方法:

1.关闭路由器电源,再打开路由器电源,路由器灯全会由全亮变为全暗,等待SYS灯再次亮起,用细针(只要是能伸进红框中小孔的工具)按住reset按键,直到SYS灯出现快速闪烁,松开reset按键,成功进入安全模式。

2.配置本地机器ip为192.168.1.2 子网255.255.255.0 路由:192.168.1.1。使用telnet直接登录路由器:telnet 192.168.1.1。

进入安全模式后,xshell界面如下:

1
root@(none):/#

将备份的rootfs_data.bin 用winscp上传到=/tmp/下(tmp文件夹是运行在内存中每次重启都会清空的临时缓存文件夹,所以可以读写)

1
mtd -r write =/tmp/rootfs_data.bin rootfs_data

用这种方法可以直接还原设置与已安装的软件 ,相当于GHOST