Openwrt使用mtd和sysupgrade刷机、备份恢复系统配置、修改mac地址

查看当前系统分区

# cat /proc/mtd 
dev:    size   erasesize  name
mtd0: 00030000 00010000 "u-boot"
mtd1: 00010000 00010000 "u-boot-env"
mtd2: 00010000 00010000 "factory"
mtd3: 00fb0000 00010000 "firmware"
mtd4: 00185df7 00010000 "kernel"
mtd5: 00e2a209 00010000 "rootfs"
mtd6: 00810000 00010000 "rootfs_data"

备份恢复openwrt系统配置

#备份自定义系统信息,包括新装软件包,读文件可以用cat 操作,但是写文件不能用cat操作
dd if=/dev/mtd6 of=/mnt/overlay.bin
#or
cat /dev/mtd0 > /mnt/overlay.bin

#恢复备份文件
mtd -r write /mnt/overlay.bin rootfs_data

#仅备份系统配置
sysupgrade -b /mnt/back.tar.gz

#恢复系统配置
sysupgrade -f /mnt/back.tar.gz

恢复Openwrt系统默认设置:

#删除/overlay分区所有文件,重启即恢复默认设置
rm -rf /overlay/* && reboot

#使用命令恢复出厂设置,重启。firstboot  =  /sbin/jffs2reset $@
jffs2reset -y && reboot -f
#or
firstboot  reboot

#使用mtd清除/overlay分区信息后重启即恢复默认设置
mtd -r erase rootfs_data && reboot -f

刷新系统:

#使用mtd更新系统
mtd -r write openwrt.bin firmware

#使用sysupgrade更新系统,推荐
sysupgrade openwrt.bin

修改MAC地址:

查看MAC地址
#查看mac地址
cat /sys/class/ieee80211/phy0/macaddress
#or
hexdump -s 4 -n 6 -C /dev/mtd2 | head -n 1 | sed 's/\ \ /:/g' | cut -d: -f 2 | sed 's/\ /:/g'

#hexdump -s 偏移4个字节,-n 读取6个字节长度
#head -n 显示1行
#sed 's/\ \ /:/g'  将两个空格替换为一个冒号,在此为了取第二个域的mac地址
#cut -d: 自定义分隔符‘:’,默认制表符;-f 与-d一起使用,指定显示哪个区域。
#sed 's/\ /:/g'   将单空格替换为冒号进行显示
修改Factory分区
#读取Factory分区
dd if=/dev/mtd2 of=/tmp/factory.bin
#or
cat /dev/mtd2 > /tmp/factory.bin

#修改Factory分区可写
vi target/linux/(xxx)/dts/xxx.dts
#去掉Factory分区的read-only

#修改Mac地址
#......通过二进制编辑器或者代码等等修改

#写回Factory分区
mtd write /tmp/factory.bin  factory

openwrt的两种固件类型:factory原厂固件、sysupgrade固件

factory多了一些验证的东西,用于在原厂固件的基础上进行升级。

普通家用路由一般不是openwrt固件,如果要将家用路由升级为openwrt固件,就可以用factory刷到路由上。sysupgrade是在openwrt路由基础上升级固件,无论你是原厂固件或者本身就是openwrt固件,要升级到openwrt,factory都适用,但是sysupgrade只能用在升级,TTL救砖的时候就不能用sysupgrade。sysupgrade不包含数据分区,factory带,factory预留原厂分区,sysupgrade只包含openwrt分区。

有一个公式:sysupgrade.bin+空闲空间+系统的配置空间=factory.bin的大小

在openwrt wiki中有专门描述sysupgrade:

sysupgrade替换linux内核和squash文件系统,擦除整个jffs2部分。能保留配置文件,但不能保留二进制安装文件。

openwrt修改mac地址 modifymac.c makefile(隐藏)

  • 4
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
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 ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值