OpenWrt烧写固件mtd/mtd_write详解

OpenWrt烧写固件mtd文件需要一些基础的Linux命令,只要路由器不断电且按照命令输入进去就可以刷写路由器的固件了

1、查看当前系统分区信息
2、备份固件firmware
3、恢复固件firmware
4、备份恢复Openwrt路由器配置
5、恢复Openwrt路由器默认设置
6、刷新路由器固件

比较简单,亲测有效,中途不要断电,当心变砖。

1、查看当前系统分区信息

cat /proc/mtd

显示:

dev: size erasesize name
mtd0: 00050000 00010000 "u-boot"
mtd1: 00020000 00010000 "u-boot-env"
mtd2: 00f80000 00010000 "firmware"
mtd3: 00107440 00010000 "kernel"
mtd4: 00e78bc0 00010000 "rootfs"
mtd5: 00810000 00010000 "rootfs_data"
mtd6: 00010000 00010000 "art"
其中,mtd2就是固件分区(firmware)

2、备份固件firmware

dd if=/dev/mtd2 of=/tmp/firmware_backup.bin

使用winscp登陆路由器tmp目录,将固件文件firmware_backup.bin保存到电脑中。

dd指令的使用,可以在终端输入man dd,查看man手册,本文不赘述;

3、恢复固件firmware

先用winscp将固件文件firmware_backup.bin传至路由器tmp目录,然后:

mtd -r write /tmp/firmware_backup.bin firmware
即可恢复,恢复完成路由器会自行重启,-r的参数是reboot的作用。

4、备份恢复Openwrt路由器配置

备份自定义路由器信息,包括新安装软件:

dd if=/dev/mtd5 of=/tmp/overlay.bin
恢复备份设置并重启:

先用winscp将备份文件overlay.bin上传到路由器tmp目录(因为一般来说系统可能是readonly,但是tmp对于用户都是有读写权限的),然后:

mtd -r write /tmp/overlay.bin rootfs_data

仅备份路由器配置:
sysupgrade -b /tmp/back.tar.gz

恢复路由器配置:
sysupgrade -f /tmp/back.tar.gz

5、恢复Openwrt路由器默认设置

删除/overlay分区所有文件,重启即恢复默认设置:

rm -rvf /overlay/* && reboot
使用mtd清除/overlay分区信息后重启即恢复默认设置:

mtd -r erase rootfs_data

6、刷新路由器固件

使用mtd刷新:

先用winscp将固件文件xxx.bin传至路由器tmp目录,然后:

mtd -r write /tmp/xxx.bin firmware
刷新完成后路由器会自动重启。

使用sysupgrade更新,推荐这种方式:

sysupgrade相比mtd更加安全,变砖的可能性比较少;

先用winscp将固件文件xxx.bin传至tmp目录,然后:

sysupgrade /tmp/xxx.bin

原文地址:
https://www.shuzhiduo.com/A/nAJvyZP3zr/

Related Posts