找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 965|回复: 4

[R4A] 小米 R4A 百兆版 MIR4AC 刷机实录

[复制链接]
本帖最后由 dsanke 于 2023-5-28 17:45 编辑

我这边网络需求比较复杂,需要用ebtables做DHCP snooping,也需要魔改DHCP客户端(即busybox集成的udhcpc)来获取指定的IP段,又要多个LAN段对应多个虚拟WAN口,所以一定要自己编译openwrt

刷机第一步,先拿到shell的权限,就用这个工具就可以
我是在linux虚拟机里运行的,中间提示从本地建立服务器还是从github拉取文件,我这边选1本地服务器都失败了,不知为何,所以只能选2,不过要确保路由器本身能访问github才行

拿到权限以后,telnet连进去,先查看分区
  1. cat /proc/mtd
复制代码

得到分区表
  1. root@XiaoQiang:/tmp# cat /proc/mtd
  2. dev:    size   erasesize  name
  3. mtd0: 01000000 00010000 "ALL"
  4. mtd1: 00020000 00010000 "Bootloader"
  5. mtd2: 00010000 00010000 "NULL"
  6. mtd3: 00010000 00010000 "Factory"
  7. mtd4: 00010000 00010000 "crash"
  8. mtd5: 00010000 00010000 "cfg_bak"
  9. mtd6: 00100000 00010000 "overlay"
  10. mtd7: 00c60000 00010000 "OS1"
  11. mtd8: 00b00000 00010000 "rootfs"
  12. mtd9: 00240000 00010000 "disk"
  13. mtd10: 00010000 00010000 "Config"
复制代码

把分区表保存,然后备份mtd0,即备份整个flash
  1. dd if=/dev/mtd0 of=/tmp/mtd0_ALL_backup
复制代码


用winscp走ftp连接路由器,去tmp下面把mtd0_ALL_backup下载到电脑里
提取0x30000开始的0x10000,这是eeprom,也保存备用

接下来是刷入breed,使用breed-mt7688-reset38这个版本
先下载breed到本地,然后使用winscp传到/tmp下面
用命令刷入breed
  1. mtd write /tmp/breed-mt7688-reset38.bin Bootloader
复制代码


刷好以后可以通过breedenter中断启动,或者按住reset键上电,即可进入breed

接下来是源码修改,lean的lede并没有适配这款机器的breed分区,所以要手动修改分区
  1. diff --git a/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi b/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi
  2. index 5e146f201..d8746e26c 100644
  3. --- a/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi
  4. +++ b/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4.dtsi
  5. @@ -71,25 +71,19 @@
  6.                                 reg = <0x20000 0x10000>;
  7.                                 read-only;
  8.                         };
  9. -
  10. -                       factory: partition@30000 {
  11. -                               label = "factory";
  12. +                       
  13. +                       partition@30000 {
  14. +                               label = "crash";
  15.                                 reg = <0x30000 0x10000>;
  16.                                 read-only;
  17.                         };

  18. -                       partition@40000 {
  19. -                               label = "crash";
  20. +                       factory: partition@40000 {
  21. +                               label = "factory";
  22.                                 reg = <0x40000 0x10000>;
  23.                                 read-only;
  24.                         };

  25. -                       partition@50000] {
  26. -                               label = "cfg_bak";
  27. -                               reg = <0x50000 0x10000>;
  28. -                               read-only;
  29. -                       };
  30. -
  31.                         /* additional partitions in DTS */
  32.                 };
  33.         };
  34. diff --git a/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4a-100m.dts b/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4a-100m.dts
  35. index 37797fc36..3d9f1d75d 100644
  36. --- a/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4a-100m.dts
  37. +++ b/target/linux/ramips/dts/mt7628an_xiaomi_mi-router-4a-100m.dts
  38. @@ -8,15 +8,9 @@
  39. };

  40. &partitions {
  41. -       partition@60000 {
  42. -               label = "overlay";
  43. -               reg = <0x60000 0x100000>;
  44. -               read-only;
  45. -       };
  46. -
  47. -       partition@160000 {
  48. +       partition@50000 {
  49.                 label = "firmware";
  50. -               reg = <0x160000 0xea0000>;
  51. +               reg = <0x50000 0xfb0000>;
  52.                 compatible = "denx,uimage";
  53.         };
  54. };
复制代码


以上修改之后编译出的固件,就能在breed里面直接刷入了
由于eeprom分区的位置也发生了变化,也要从breed里面刷入一次备份的eeprom(其实就是从0x30000挪到了0x40000)

最后附上 lean 源码修改后编译的固件,去掉了 nlbwmon,加了 ipv6 支持,纯净固件,管理IP 192.168.8.1
链接: https://pan.baidu.com/s/1HMte_pAiyrvM_wnA898JUQ 提取码: 35bz
我的恩山、我的无线 The best wifi forum is right here.
有没有百兆版的固件推荐啊
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
本帖最后由 dsanke 于 2023-5-1 20:19 编辑
fhl0816 发表于 2023-4-30 19:27
有没有百兆版的固件推荐啊
MT7620随便刷个Padavan或者OpenWrt就行了,啥也跑不动
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

请问一下..用你这个改分区在github云编译错误...好像改了上面代码就编译错误

点评

你先看懂改了些什么,再自己对着修改,这个帖子的内容仅供参考  详情 回复 发表于 2023-11-5 02:20
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| 来自手机 | 显示全部楼层
本帖最后由 dsanke 于 2023-11-5 02:23 编辑
hzy98 发表于 2023-11-2 16:29
请问一下..用你这个改分区在github云编译错误...好像改了上面代码就编译错误 ...

补丁如果能正常应用,那应该不会造成编译错误
你如果觉得是补丁的问题,你需要把具体的错误信息提供出来,我不用云编译
建议是你先看懂改了些什么,再自己对着修改,这个帖子的内容仅供参考
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-4 06:14

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表