Openwrt 备份和恢复ART信息

Openwrt 备份和恢复ART信息

环境

  • MT7688 EVB with SPI FLASH
  • U-Boot 1.1.3
  • Openwrt 19.07

ART说明

Openwrt有一个ART分区(或者叫factory分区),用于保存相关无线网络的信息,比如射频调教参数和MAC地址。

如果ART分区被误擦除或者不匹配,射频性能可能大打折扣甚至无法启用wifi功能

过程

获取分区信息
cat /proc/mtd

可以看到mtd2为art分区,并且大小为0x10000 = 64KB

image-20210811165622062

提取ART分区文件

读取该分区生成art.bin

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

image-20210811170015697

修改ART文件(如果有修改MAC需求)

将art.bin上传到host,方便用二进制编辑器修改

scp /tmp/art.bin mcai@192.168.2.186:/tmp

notepad++(需安装hex editor插件)打开art.bin,如下红色框为MAC地址

image-20210811170829881

修改为如下

image-20210811171250093

恢复ART分区

将art_new.bin从Host下载到目标板

在目标板shell中执行

scp mcai@192.168.2.186:/tmp/art_new.bin /tmp
mtd -r write /tmp/art_new.bin art

提示无法对mtd进行写入

image-20210811172044840

在kernel中恢复ART分区

由于openwrt默认未开启mtd写入功能,需要在配置中打开,如下

image-20210812075202290

然后在设备树里去掉确认ART分区是是否有写保护,如果有的话去掉,如下

image-20210812081241159

上面确认修改好,再次写入新的ART文件,如下写入成功

image-20210812081650442

验证ART恢复成功

重启后使用hexdump确认新ART文件是否写入成功,如下已经修改了,验证写入成功

hexdump -C /dev/mtd2

image-20210812083532811

在uboot下恢复ART分区

首先在uboot源码目录文件autoconf.h和include/configs/rt2880.h的RAM_BASE和FLASH_BASE的相关信息

#define CFG_SDRAM_BASE		0x80000000
#define TEXT_BASE 0xBC000000

查看下art分区地址,

[    0.363169] 4 fixed-partitions partitions found on MTD device spi0.0
[    0.369641] Creating 4 MTD partitions on "spi0.0":
[    0.374510] 0x000000000000-0x000000030000 : "u-boot"
[    0.380465] 0x000000030000-0x000000040000 : "u-boot-env"
[    0.386774] 0x000000040000-0x000000050000 : "factory"
[    0.392728] 0x000000050000-0x000001000000 : "firmware"

计算出在uboot中art分区地址为0xBC040000,大小为0x10000

通过tftp载入bin到内存中

开启tftpd32,将art_new.bin拷入目录

image-20210811180934393

然后在目标板将host上的art_new.bin下载到内存(CFG_SDRAM_BASE)里

tftpboot 0x80000000 art_new.bin

如下表示下载到内存中成功

image-20210811181316390

擦除并写入新数据

查看spi命令

image-20210812085140064

spi erase 0xBC040000 0x10000

image-20210812085220276

先测试下spi的读写,写入一个值后读出

spi write 0xbc040000 0x1234
spi read 0xbc040000 0x10

如下,spi write写入没有生效,应该是uboot版本有问题,需要确认可以读写没问题的uboot再来测试

image-20210812091626243

疑问

修改MAC地址后实际并未生效

如下,成功修改MAC地址后,系统启动后并未采用新的MAC,而是随机生成的;参考文章里有提到ART分区还有MAC校验码也要修改,但是不知道具体是哪个,暂时把问题放在这,以后单独出一个文章研究

image-20210812084151151

参考

[OpenWrt Wiki] How to restore ART partition

5.移植uboot-设置默认环境变量,裁剪,并分区 - 云+社区 - 腾讯云 (tencent.com)

Openwrt中,备份配置分区可以通过使用dd命令将rootfs_data分区的内容写入overlay.bin文件来实现。这个过程类似于使用ghost克隆的方式,而不是使用Openwrt提供的备份功能,它只会恢复配置文件。你可以将备份的文件使用mtd -r write命令烧写到路由器的rootfs_data分区。例如,你可以使用scp命令将/tmp/backup-*-overlay.bin文件复制到Openwrt路由器的/tmp目录下,然后使用mtd -r write命令将备份文件写入rootfs_data分区。具体命令如下所示: 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 -r write /tmp/backup-OpenWrt-18.06.5-newifi-d2-2020-3-11-overlay.bin rootfs_data 这样就可以将备份的配置文件写入Openwrt的rootfs_data分区了。 #### 引用[.reference_title] - *1* [Openwrt 分区、备份恢复与升级](https://blog.csdn.net/taoxp123456/article/details/94743259)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [openwrt使用mtd备份/恢复系统](https://blog.csdn.net/weixin_44053794/article/details/121320252)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值