|
本帖最后由 lgs2007m 于 2024-3-9 19:02 编辑
MediaTek Filogic 系列路由器串口救砖教程
感谢蝈蝈大佬开发的 mtk_uartboot 工具,暗云大佬提供的教程,这样就可以随便刷砖了
适用系列:MediaTek MT7622、MT7981、MT7986、MT7988 SoC
教程参考OpenWrt官网Installing OpenWrt (ubootmod layout),感谢HZFrodo大佬向OpenWrt官方源码库提交的pull:uboot-mediatek: add support for Xiaomi Redmi Router AX6000 #11565,OpenWrt官方源码的commit,OpenWrt官方论坛的讨论Add OpenWrt support for Xiaomi “Redmi AX6000”,X-Wrt的ptpt52大佬的刷机教程,有了这些大佬的支持才有这篇刷机分享。
首先OpenWrt官方有过三种分区固件:OpenWrt stock layout、OpenWrt layout和OpenWrt U-Boot layout。OpenWrt stock layout对应保留官方分区刷OpenWrt,我称为stock固件;OpenWrt layout对应的就是hanwckf大佬的不死uboot(ubi 110MB),我称为uboot固件;OpenWrt U-Boot layout对应的是HZFrodo大佬的不死ubootmod(ubi 122.5MB),我称为ubootmod固件。
目前OpenWrt官方只保留了stock固件和ubootmod固件。
我个人喜欢将hanwckf大佬的不死uboot(ubi 110MB)叫uboot,将HZFrodo大佬的不死uboot叫ubootmod(ubi 122.5MB),不知妥当否。
感觉刷hanwckf大佬的不死uboot超级简单,刷HZFrodo大佬的不死ubootmod复杂不少,还要求安装kmod-mtd-rw。
简单总结下我理解的两者的区别,有不对请大佬指正:
hanwckf_uboot:
- 刷机步骤:只需要解锁SSH刷FIP分区
- 刷机ubi大小:110MB,ubinfo -a查看实际可用106.5MB
- 变砖刷固件:直接进uboot webui(Web failsafe UI)刷
- 开启坏块管理NMBM
HZFrodo_ubootmod:
- 刷机步骤:解锁SSH刷initramfs-factory.ubi、安装对应内核的kmod-mtd-rw、清除pstore、格式化比关联ubi然后新建2个ubi卷(含recovery则是3个卷)、刷BL2和FIP
- 刷机ubi大小:122.5MB,ubinfo -a查看实际可用118.6MB(如果ubi含recovery卷,我们可用空间则要减去recovery卷占用空间)
- 变砖刷固件:通过TFTP自动刷initramfs-recovery.itb进入恢复系统刷,通过recovery卷中保存的initramfs-recovery.itb自动进入恢复系统刷
- 未开启坏块管理NMBM
我个人觉得还是hanwckf的不死uboot比较简单、好用,我理解的可能不是很透,请大家根据各自情况选择,不喜勿喷。
我的另外一篇刷uboot教程:红米AX6000刷hanwckf大佬的不死uboot+刷回官方固件+TTL使用+编程器救砖教程
刷机有风险,刷ubootmod更加,这个教程只是个人实践的一点总结,测试正常,仅供参考,变砖勿扰!
因为OpenWrt主线刷机基本要替换BL2和uboot,但是他们又没有开启坏块管理NMBM,所以遇到坏块可能有问题
同时也不建议从原厂或者h大开启坏块管理NMBM的uboot再切换不开启的openwrt主线ubootmod,所以不建议使用ubootmod!!!
目录
【1】官方固件、stock固件、uboot固件刷ubootmod
【2】ubootmod的使用及recovery卷的删除添加
【3】ubootmod刷回官方固件、uboot固件
【4】安装加载kmod-mtd-rw
首先注意,刷机过程中除非特别提示,不要随意重启路由器!!以免变砖。
当然,你没刷BL2和FIP之前都可以简单恢复的,官方分区用小米官方救砖工具,hanwckf uboot的直接进webui重新刷。
注意:红米AX6000官方系统支持WAN、LAN切换,可以随意插网线自动识别,但是刷op后WAN口固定是1口(靠近电源插头的那个口),2-4口是LAN口,网线插LAN口才能获取到IP,登录路由器。
目前支持ubootmod固件有OpenWrt官方、X-Wrt,Lean源码只支持uboot固件,hanwckf大佬和237大佬源码只支持stock和uboot固件。
supes.top在线定制固件源码已更换为hanwckf大佬的闭源源码,并支持uboot。
【1】官方固件、stock固件、uboot固件刷ubootmod
0.准备工作,下载ubootmod刷机文件
OpenWrt官方:mediatek/filogic/
X-Wrt(搜索ax6000):x-wrt.com/rom/
我的云编译OpenWrt:lgs2007m/Actions-OpenWrt/actions
OpenWrt官方固件地址192.168.1.1,无LuCI界面,需要安装kmod-mtd-rw
X-Wrt固件地址192.168.15.1,密码admin,有LuCI界面,需要安装kmod-mtd-rw,正式固件默认未开启SSH密码访问,需要在管理权菜单开启密码验证和允许root用户密码登录
我的云编译OpenWrt固件地址192.168.1.1,有LuCI界面,已集成kmod-mtd-rw
建议下载我的云编译OpenWrt,不用安装kmod-mtd-rw。
下载后并按如下命名,可以直接使用下面的刷机命令。
- ax6000-ubootmod-initramfs-factory.ubi
- ax6000-ubootmod-initramfs-recovery.itb
- ax6000-ubootmod-preloader.bin
- ax6000-ubootmod-bl31-uboot.fip
- ax6000-ubootmod-squashfs-sysupgrade.itb
复制代码
1. 刷initramfs模式系统
【官方固件】如果你是官方原厂固件,没有解锁SSH,需要先解锁SSH,解锁教程可以参考NormalPeople的,只需要解锁SSH,再关闭开发者模式即可,刷OP不需要固化SSH。
【保姆级教程】红米AX6000永久获取SSH权限(Redmi AX6000)
官方固件解锁SSH后查看分区:
- root@XiaoQiang:~# cat /proc/mtd
- dev: size erasesize name
- mtd0: 08000000 00020000 "spi0.1"
- mtd1: 00100000 00020000 "BL2"
- mtd2: 00040000 00020000 "Nvram"
- mtd3: 00040000 00020000 "Bdata"
- mtd4: 00200000 00020000 "Factory"
- mtd5: 00200000 00020000 "FIP"
- mtd6: 00040000 00020000 "crash"
- mtd7: 00040000 00020000 "crash_log"
- mtd8: 01e00000 00020000 "ubi"
- mtd9: 01e00000 00020000 "ubi1"
- mtd10: 03200000 00020000 "overlay"
复制代码
官方分区建议刷机前做好原厂分区备份,备份BL2、Nvram、Bdata、Factory、FIP分区,以便不时之需。
Factory为无线EEPROM分区,很重要,建议备份本机的!其他人的备份是否能用我还不太懂。
Bdata存储着你的SN和MAC,建议备份。
Nvram存储着环境变量,建议备份,其他人的应该也可以启动,不过没试过。
BL2和FIP可以用其他人的,不过也建议备份。
有些分区的作用我还理解不透彻,我个人是全部分区都备份的,包括整个闪存的备份,即mtd0_spi01。凡是先备份,小心驶得万年船~
官方固件和刷保留官方分区的闭源OP stock固件后的mtd序号相同,BL2、Factory、FIP内容不变,Nvram、Bdata设置后内容有变,不过不影响,备份其中一个系统下面的即可,后面都是刷回备份后用小米救砖工具恢复。
不是官方系统或闭源OP的,刷X-Wrt和一些过渡固件的,注意cat /proc/mtd查看分区对应的mtd序号是否一样。
运行dd命令备份分区到tmp文件夹:
- dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin
- dd if=/dev/mtd2 of=/tmp/mtd2_Nvram.bin
- dd if=/dev/mtd3 of=/tmp/mtd3_Bdata.bin
- dd if=/dev/mtd4 of=/tmp/mtd4_Factory.bin
- dd if=/dev/mtd5 of=/tmp/mtd5_FIP.bin
复制代码 然后WinSCP等SCP协议软件登录路由器,打开tmp文件夹,下载到电脑保存好。
备份好分区后,输入cat /proc/cmdline命令查看firmware,检查当前运行的系统在哪个分区:例如:- console=ttyS0,115200n1 loglevel=8 firmware=1 uart_en=1
复制代码
设置nvram并刷写initramfs-factory.ubi
上传ax6000-ubootmod-initramfs-factory.ubi到tmp文件夹。
如果firmware=1则当前系统在ubi1,输入下面命令,设置下次从ubi启动并刷写ubi,最后reboot命令重启:
- nvram set boot_wait=on
- nvram set uart_en=1
- nvram set flag_boot_rootfs=0
- nvram set flag_last_success=0
- nvram set flag_boot_success=1
- nvram set flag_try_sys1_failed=0
- nvram set flag_try_sys2_failed=0
- nvram commit
- mtd erase ubi
- mtd write /tmp/ax6000-ubootmod-initramfs-factory.ubi ubi
- reboot
复制代码
如果firmware=0则当前系统在ubi,输入下面命令,设置下次从ubi1启动并刷写ubi1,最后reboot命令重启:
- nvram set boot_wait=on
- nvram set uart_en=1
- nvram set flag_boot_rootfs=1
- nvram set flag_last_success=1
- nvram set flag_boot_success=1
- nvram set flag_try_sys1_failed=0
- nvram set flag_try_sys2_failed=0
- nvram commit
- mtd erase ubi1
- mtd write /tmp/ax6000-ubootmod-initramfs-factory.ubi ubi1
- reboot
复制代码
【stock固件】如果你是保留官方分区刷了OpenWrt,即stock固件,需要将ax6000-ubootmod-initramfs-factory.ubi刷到ubi_kernel分区。
注意:如果还没有备份分区建议先备份,切记!!
运行dd命令备份分区到tmp文件夹:
- dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin
- dd if=/dev/mtd2 of=/tmp/mtd2_Nvram.bin
- dd if=/dev/mtd3 of=/tmp/mtd3_Bdata.bin
- dd if=/dev/mtd4 of=/tmp/mtd4_Factory.bin
- dd if=/dev/mtd5 of=/tmp/mtd5_FIP.bin
复制代码 不是闭源OP的,刷X-Wrt和一些过渡固件的,注意cat /proc/mtd查看分区对应的mtd序号是否一样。
然后WinSCP等SCP协议软件登录路由器,打开tmp文件夹,下载到电脑保存好。
备份好之后,上传ax6000-ubootmod-initramfs-factory.ubi文件到tmp文件夹,然后刷写ubi_kernel分区,最后reboot命令重启:
- mtd erase ubi_kernel
- mtd write /tmp/ax6000-ubootmod-initramfs-factory.ubi ubi_kernel
- reboot
复制代码
【uboot固件】如果已刷hanwckf大佬的不死uboot,也可以先备份分区。
运行dd命令备份分区到tmp文件夹:
- dd if=/dev/mtd1 of=/tmp/mtd1_BL2.bin
- dd if=/dev/mtd2 of=/tmp/mtd2_Nvram.bin
- dd if=/dev/mtd3 of=/tmp/mtd3_Bdata.bin
- dd if=/dev/mtd4 of=/tmp/mtd4_Factory.bin
- dd if=/dev/mtd5 of=/tmp/mtd5_FIP.bin
复制代码 不是闭源OP的,刷X-Wrt和一些过渡固件的,注意cat /proc/mtd查看分区对应的mtd序号是否一样。
然后WinSCP等SCP协议软件登录路由器,打开tmp文件夹,下载到电脑保存好。
接着可以直接进uboot的webui,直接刷ax6000-ubootmod-initramfs-factory.ubi
2.查看initramfs模式系统ubi分区
重启后进入initramfs模式系统,登录地址openwrt.lan或192.168.1.1(X-Wrt是x-wrt.lan或192.168.15.1)查看分区信息,ubi分区应该mtd5
- root@OpenWrt:~# cat /proc/mtd
- dev: size erasesize name
- mtd0: 00100000 00020000 "BL2"
- mtd1: 00040000 00020000 "Nvram"
- mtd2: 00040000 00020000 "Bdata"
- mtd3: 00200000 00020000 "Factory"
- mtd4: 00200000 00020000 "FIP"
- mtd5: 07a80000 00020000 "ubi"
复制代码
3.上传四个文件到tmp文件夹
ax6000-ubootmod-initramfs-recovery.itb
ax6000-ubootmod-preloader.bin
ax6000-ubootmod-bl31-uboot.fip
ax6000-ubootmod-squashfs-sysupgrade.itb
4.加载kmod-mtd-rw
使用我的云编译OpenWrt已集成,不需要安装,可以执行命令临时加载kmod-mtd-rw:
- insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
复制代码 此时mtd分区已经解锁了。其他需要安装kmod-mtd-rw的请看最后部分的内容,确定执行insmod加载无报错再进行下一步。
5.清除pstore
输入命令清除pstore中所有可能的崩溃转储,否则ubootmod会引导进入闪存恢复模式或TFTP恢复模式。
6.格式化并关联ubi然后新建ubootenv卷
输入命令解除关联ubi然后格式化,再绑定ubi,然后新建ubootenv和ubootenv2卷:
- ubidetach -p /dev/mtd5; ubiformat /dev/mtd5 -y; ubiattach -p /dev/mtd5
- ubimkvol /dev/ubi0 -n 0 -N ubootenv -s 128KiB
- ubimkvol /dev/ubi0 -n 1 -N ubootenv2 -s 128KiB
复制代码 注意:解除绑定会报错ubidetach: error!: cannot detach "/dev/mtd5" error 19 (No such device),这个没问题,可以忽略。我想是不是实际分区中是没有/dev/mtd5所以解除绑定会报错。
7.【可选】闪存恢复功能
如果不需要ubootmod的闪存恢复功能,可以跳过这步。不用担心,ubootmod的自动TFTP恢复功能始终是开启的。
如果选择闪存恢复功能,需要新建recovery卷,卷的大小按你的initramfs-recovery.itb文件大小设置,比如OpenWrt官方的是8MB左右,recovery卷可以设置10MB,X-Wrt的是15MB左右,可以设置16MB,我的云编译OpenWrt是12左右,可以设置13MB。
这里用的是我云编译OpenWrt。当然这个会占用闪存空间,不想要后期也可以删除这个卷。
- ubimkvol /dev/ubi0 -n 2 -N recovery -s 13MiB
- ubiupdatevol /dev/ubi0_2 /tmp/ax6000-ubootmod-initramfs-recovery.itb
复制代码 注意:OpenWrt官方的initramfs-recovery.itb没有LuCI界面,如果initramfs模式系统里需要LuCI界面可以用自己编译的或者X-Wrt。
在这里说下如何使用ubootmod的TFTP恢复和闪存恢复,以便帮助大家选择是否需要闪存恢复功能。
首先刷好ubootmod之后,如果变砖了,可以按RESET键上电(经观察TTL输出需要上电2秒内按RESET才有效),按住5秒即可,然后ubootmod会进入自动TFTP恢复模式。
会从电脑的TFTP服务器获取initramfs-recovery.itb文件并启动进入initramfs模式系统,然后就可以刷固件或者其他操作了。
如果没有从TFTP服务器获取到对应文件,会进入闪存恢复模式,读取ubi的recovery卷中保存initramfs-recovery.itb,然后进入initramfs模式系统。
有闪存恢复功能可以不用TFTP恢复,但是占用一些闪存空间。如果不觉得开启TFTP麻烦,可以不要这个闪存恢复功能,能节约一些空间。
8.刷preloader和ubootmod
- md5sum /tmp/ax6000-ubootmod-preloader.bin
- mtd erase BL2
- mtd write /tmp/ax6000-ubootmod-preloader.bin BL2
- mtd verify /tmp/ax6000-ubootmod-preloader.bin BL2
- md5sum /tmp/ax6000-ubootmod-bl31-uboot.fip
- mtd erase FIP
- mtd write /tmp/ax6000-ubootmod-bl31-uboot.fip FIP
- mtd verify /tmp/ax6000-ubootmod-bl31-uboot.fip FIP
复制代码 注意查看上传的两个文件md5并和本地文件对比,查看两次mtd verify最后是否输出输出Success,没问题才可进行下一步。
因为是临时加载kmod-mtd-rw,如果提示Could not open mtd device,需要再加载一次kmod-mtd-rw。
刷ubootmod已经完成!!
9.更新系统
输入命令更新系统,或者直接在web更新也可,更新后会自动重启。- sysupgrade -n /tmp/ax6000-ubootmod-squashfs-sysupgrade.itb
复制代码 注意:OpenWrt官方的sysupgrade.itb没有LuCI界面,如果需要LuCI界面可以用自己编译的或者X-Wrt,或者重启联网后命令安装。- opkg update && opkg install luci
复制代码
注意:红米AX6000官方系统支持WAN、LAN切换,可以随意插网线自动识别,但是刷op后WAN口固定是1口(靠近电源插头的那个口),2-4口是LAN口,网线插LAN口才能获取到IP,登录路由器。
更新系统重启后,查看分区信息是这样的:
- root@OpenWrt:~# cat /proc/mtd
- dev: size erasesize name
- mtd0: 00100000 00020000 "BL2"
- mtd1: 00040000 00020000 "Nvram"
- mtd2: 00040000 00020000 "Bdata"
- mtd3: 00200000 00020000 "Factory"
- mtd4: 00200000 00020000 "FIP"
- mtd5: 07a80000 00020000 "ubi"
- root@OpenWrt:~# cat /proc/partitions
- major minor #blocks name
- 31 0 1024 mtdblock0
- 31 1 256 mtdblock1
- 31 2 256 mtdblock2
- 31 3 2048 mtdblock3
- 31 4 2048 mtdblock4
- 31 5 125440 mtdblock5
- 254 0 15128 ubiblock0_3
- 259 0 9920 ubiblock0_3p1
- root@OpenWrt:~# ubinfo -a
- UBI version: 1
- Count of UBI devices: 1
- UBI control device major/minor: 10:127
- Present UBI devices: ubi0
- ubi0
- Volumes count: 5
- Logical eraseblock size: 126976 bytes, 124.0 KiB
- Total amount of logical eraseblocks: 980 (124436480 bytes, 118.6 MiB)
- Amount of available logical eraseblocks: 0 (0 bytes)
- Maximum count of volumes 128
- Count of bad physical eraseblocks: 0
- Count of reserved physical eraseblocks: 20
- Current maximum erase counter value: 6
- Minimum input/output unit size: 2048 bytes
- Character device major/minor: 250:0
- Present volumes: 0, 1, 2, 3, 4
- Volume ID: 0 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 2 LEBs (253952 bytes, 248.0 KiB)
- State: OK
- Name: ubootenv
- Character device major/minor: 250:1
- -----------------------------------
- Volume ID: 1 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 2 LEBs (253952 bytes, 248.0 KiB)
- State: OK
- Name: ubootenv2
- Character device major/minor: 250:2
- -----------------------------------
- Volume ID: 2 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 108 LEBs (13713408 bytes, 13.0 MiB)
- State: OK
- Name: recovery
- Character device major/minor: 250:3
- -----------------------------------
- Volume ID: 3 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 122 LEBs (15491072 bytes, 14.7 MiB)
- State: OK
- Name: fit
- Character device major/minor: 250:4
- -----------------------------------
- Volume ID: 4 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 720 LEBs (91422720 bytes, 87.1 MiB)
- State: OK
- Name: rootfs_data
- Character device major/minor: 250:5
复制代码
附上uboot固件下的ubinfo -a做对比:
- root@ImmortalWrt:~# ubinfo -a
- UBI version: 1
- Count of UBI devices: 1
- UBI control device major/minor: 10:62
- Present UBI devices: ubi0
- ubi0
- Volumes count: 3
- Logical eraseblock size: 126976 bytes, 124.0 KiB
- Total amount of logical eraseblocks: 880 (111738880 bytes, 106.5 MiB)
- Amount of available logical eraseblocks: 0 (0 bytes)
- Maximum count of volumes 128
- Count of bad physical eraseblocks: 0
- Count of reserved physical eraseblocks: 19
- Current maximum erase counter value: 2
- Minimum input/output unit size: 2048 bytes
- Character device major/minor: 249:0
- Present volumes: 0, 1, 2
- Volume ID: 0 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 27 LEBs (3428352 bytes, 3.2 MiB)
- State: OK
- Name: kernel
- Character device major/minor: 249:1
- -----------------------------------
- Volume ID: 1 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 356 LEBs (45203456 bytes, 43.1 MiB)
- State: OK
- Name: rootfs
- Character device major/minor: 249:2
- -----------------------------------
- Volume ID: 2 (on ubi0)
- Type: dynamic
- Alignment: 1
- Size: 474 LEBs (60186624 bytes, 57.3 MiB)
- State: OK
- Name: rootfs_data
- Character device major/minor: 249:3
复制代码
【2】ubootmod的使用及recovery卷的删除添加
1.ubootmod的使用
根据ubootmod的env环境变量:
ipaddr=192.168.1.1
serverip=192.168.1.254
bootfile=openwrt-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb
我们可以看到ubootmod启动后,TFTP(路由器)IP是192.168.1.1,TFTP服务器(电脑)IP是192.168.1.254。
上传文件名是openwrt-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb
首先下载tftp64软件通过TFTP协议上传文件到路由器。
下载解压出软件,将initramfs-recovery.itb文件重命名为openwrt-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb,然后放到软件根目录下即可。
设置电脑网卡IP:192.168.1.254/24,关闭电脑防火墙!!运行tftpd64软件,选择192.168.1.254的网卡。
路由器按住RESET键上电,按住5秒以上即可,会进入自动TFTP恢复模式,如果电脑端设置了TFTP服务器并且有文件名为openwrt-mediatek-filogic-xiaomi_redmi-router-ax6000-ubootmod-initramfs-recovery.itb的文件,会自动上传到路由器,并运行进入initramfs模式系统。
如果没发现TFTP文件,会进读取recovery卷中initramfs-recovery内容进入initramfs模式系统。如果当初没有新建recovery卷,则一直运行自动TFTP恢复模式。
用的是哪个initramfs模式系统,登录地址就是哪个的,比如:OpenWrt官方:openwet.lan或192.168.1.1,X-Wrt:x-wrt.lan或192.168.15.1。
2.recovery卷的删除添加
删除recovery前先备份OpenWrt配置到本地,以便重刷系统后可以恢复。
然后进入initramfs模式系统,查看含recovery卷的ubinfo -a可以看到5个卷:
Volume ID: 0 (on ubi0) Name: ubootenv
Volume ID: 1 (on ubi0) Name: ubootenv2
Volume ID: 2 (on ubi0) Name: recovery
Volume ID: 3 (on ubi0) Name: fit
Volume ID: 4 (on ubi0) Name: rootfs_data
删除ubootenv和ubootenv2卷之后的卷:
- ubirmvol /dev/ubi0 -N recovery
- ubirmvol /dev/ubi0 -N fit
- ubirmvol /dev/ubi0 -N rootfs_data
复制代码 再在initramfs模式系统不保留配置刷sysupgrade固件,系统启动后上传备份配置恢复设置。
想要增加同理,备份配置后进入进入initramfs模式系统,查看不含recovery卷的ubinfo -a可以看到4个卷:
Volume ID: 0 (on ubi0) Name: ubootenv
Volume ID: 1 (on ubi0) Name: ubootenv2
Volume ID: 2 (on ubi0) Name: fit
Volume ID: 3 (on ubi0) Name: rootfs_data
上传ax6000-ubootmod-initramfs-recovery.itb文件到tmp文件夹,删除ubootenv和ubootenv2卷之后的卷,增加recovery卷并更新其内容:
- ubirmvol /dev/ubi0 -N fit
- ubirmvol /dev/ubi0 -N rootfs_data
- ubimkvol /dev/ubi0 -n 2 -N recovery -s 13MiB
- ubiupdatevol /dev/ubi0_2 /tmp/ax6000-ubootmod-initramfs-recovery.itb
复制代码 注意recovery卷大小根据自己的initramfs-recovery.itb决定。
再在initramfs模式系统不保留配置刷sysupgrade固件,系统启动后上传备份配置恢复设置。
【3】ubootmod刷回官方固件、uboot固件
已安装kmod-mtd-rw的需要先加载,未安装的可以参考最后部分的内容来安装和加载。
- insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
复制代码 然后上传你的官方固件下备份的BL2和FIP分区(或者uboot固件下备份的BL2或FIP)到tmp文件夹,输入命令刷写。
- md5sum /tmp/mtd1_BL2.bin
- mtd erase BL2
- mtd write /tmp/mtd1_BL2.bin BL2
- mtd verify /tmp/mtd1_BL2.bin BL2
- md5sum /tmp/mtd5_FIP.bin
- mtd erase FIP
- mtd write /tmp/mtd5_FIP.bin FIP
- mtd verify /tmp/mtd5_FIP.bin FIP
复制代码
【刷回官方系统后】如果恢复的是官方BL2和FIP,可以断电路由器,然后打开小米路由官方修复工具进行修复了。
小米路由官方修复工具 MIWIFIRepairTool.x86.zip
红米AX6000 RB06官方固件 miwifi_rb06_firmware_847e9_1.0.48.bin
网线接路由器和电脑,路由器断电,电脑退出杀毒软件,还有Windows的自带Windows Defender防火墙杀毒,必要时关闭电脑防火墙,打开小米路由修复工具,选择官方的rb06固件,网卡选择当前连接路由器的网卡,点下一步,工具会自动配置网卡IP为192.168.31.100/24,配置好后会显示刷机步骤,然后按住路由器RESET插电开机,大概12秒后等到黄灯闪烁后可以松开RESET,等待小米路由修复工具连接路由器开始上传固件,上传完后会刷机,刷机成功后蓝灯闪烁。等待10秒后重新断电插电即可恢复到官方系统。点击退出小米路由修复工具,网卡会自动恢复自动获取的配置。
【刷回uboot固件后】如果恢复的是uboot下BL2和FIP,则断电重启进入uboot webui刷固件即可。
注意:刷回hanwckf大佬不死uboot后,进入uboot的webui,重新刷固件,第一次刷会失败,可能因为之前ubi关了的是mtd5,现在uboot下ubi关联的是mtd8,所以会出现Failed to attach UBI。刷新192.168.31.1,重新上传刷一次即可。
恢复到官方分区或者uboot 110MB分区后,建议再擦除crash和crash_log分区。
- mtd erase crash
- mtd erase crash_log
复制代码
官方系统解锁SSH后可以直接擦除,但是重启后SSH会关闭,需要telnet重新打开。
telnet登录用户名root,密码用SN计算得到https://miwifi.dev/ssh,登录telnet后输入命令开SSH:
- bdata set boot_wait=on
- bdata commit
- nvram set ssh_en=1
- nvram set telnet_en=1
- nvram set uart_en=1
- nvram set boot_wait=on
- nvram commit
- sed -i 's/channel=.*/channel="debug"/g' /etc/init.d/dropbear
- /etc/init.d/dropbear restart
- echo -e 'admin\nadmin' | passwd root
复制代码 开SSH后,用户名root,密码admin。开启SSH后你才能通过scp协议上传文件到路由器。
uboot固件如果固件没有装kmod-mtd-rw,需要先安装才能擦除crash和crash_log分区。
可以到软件包中core软件源地址去下载,没mt7986的可以下mt7622的。
例如237大佬闭源固件kernel和kmod-mtd-rw可以下载这里的 18.06-k5.4-SNAPSHOT/targets/mediatek/mt7622/packages/
- opkg install /tmp/kernel_5.10.134.ipk
- opkg install /tmp/kmod-mtd-rw_5.10.134.ipk
复制代码 安装完最新的之后,加载$(uname -r)要替换为你最新的版本,如5.10.134,再执行命令:
- insmod /lib/modules/5.10.134/mtd-rw.ko i_want_a_brick=1
复制代码 为了避免安装kernel影响,擦写后重置下系统。
【4】安装加载kmod-mtd-rw
如果不使用我的OpenWrt云编译,建议下载OpenWrt官方刷机文件时同时下载最新的kmod-mtd-rw。
刷机文件 mediatek/filogic/
最新kmod-mtd-rw在目录最后一个文件夹 mediatek/filogic/kmods/
如果没有和刷机文件一起下载到kmod-mtd-rw,则进入initramfs模式系统后可先设置联网:
大部分固件默认联网模式是DHCP,上级路由网线接电源线旁边那个网口即可。
如果本路由的IP地址段和上级冲突上不了网可以改下IP段:
OpenWrt官网下固件默认没有LuCI界面的,需要SSH登录进行联网设置。
- uci set network.lan.ipaddr='192.168.10.1'
- uci commit network
- /etc/init.d/network restart
复制代码
如果没有上级路由,直接本路由pppoe拨号,输入命令(IP段不冲突可以不改):
- #uci set network.lan.ipaddr='192.168.10.1'
- uci set network.wan.proto='pppoe'
- uci set network.wan.username='宽带账号'
- uci set network.wan.password='宽带密码'
- uci commit network
- /etc/init.d/network restart
复制代码
联网运行opkg命令安装kmod-mtd-rw:
- opkg update && opkg install kmod-mtd-rw
复制代码 如果顺利安装完,可以执行命令临时加载kmod-mtd-rw:
- insmod /lib/modules/$(uname -r)/mtd-rw.ko i_want_a_brick=1
复制代码 $(uname -r)是你的内核版本号如5.15.87
或者先查询内核版本opkg list-installed | grep kernel,到下面网址下载对应内核的kmod-mtd-rw,手动上传安装
mediatek/filogic/kmods/
或者我建议直接下载最新的kernel和kmod-mtd-rw
kernel mediatek/filogic/packages/
kmod-mtd-rw mediatek/filogic/kmods/
上传tmp文件夹,然后直接先安装最新kernel,再安装kmod-mtd-rw,这样基本不会报错:
- opkg install /tmp/kernel_5.15.87.ipk
- opkg install /tmp/kmod-mtd-rw_5.15.87.ipk
复制代码 安装完最新的之后,加载$(uname -r)要替换为你最新的版本,如5.15.87,再执行命令:
- insmod /lib/modules/5.15.87/mtd-rw.ko i_want_a_brick=1
复制代码
|
评分
-
查看全部评分
|