小米路由器R3G用Breed安装原生OpenWrt详解
本文原地址: http://www.feitianzhi.com/boke/index.php/archives/24/
转载请注明出处,有疑问或错误请发邮件到[email protected] 或加QQ群:869598376
目前恩山上本人使用较多的固件为Padavan,PandoraBox,Bootloader部分则使用H大的Breed,这些固件使用起来体验极好,接下来浅谈一下个人对这些固件的看法,若有不当之处,还请指出
Breed部分的介绍将在下文刷机过程中展示
PandoraBox是基于OpenWrt进行了大量国内路由适配的系统,其界面接近原生系统,并针对国情内置了不少实用的组件,通过opkg管理组件,全面汉化,翻译水平比原生系统高出不少,软件源在国内,所以下载速度较快,时区和信道都按照国内的标准预先修改了,所以对于大部分人来说,直接刷PandoraBox即可,不必费力刷原生OpenWrt,而且据说PandoraBox采用的无线驱动优于原生,对此没有太确定的消息,仅作参考
Padavan俗称老毛子,其界面友好度极高,非常适合新手入门,不过默认主题略丑,好在可以更换,而且看起来不错,同样针对国情加入了大量组件,对332支持极好,不过扩展性较OpenWrt略有不足,但对于新手来说足矣
我使用Padavan和PandoraBox近一年,但折腾的心是不会停止的,所以现在准备给R3G刷入原生OpenWrt,但根据OpenWrt官网上的资料和H大的某些回复来看,Breed刷OpenWrt略有困难,其原因在于给OpenWrt提交R3G支持的人,提交的flashlayout跟原厂的不兼容,而且使用了UBI,因此breed无法兼容,故breed不支持直接刷入mir3g的openwrt固件,且无法识别tar包
详情可见下方链接
https://www.right.com.cn/forum/forum.php?mod=viewthread&tid=267455&page=1
但此楼里有另一位大神提出了一种新的思路,见第三页aatest123的回复,其思路在于通过Breed先刷入initramfs-kernel.bin,这个文件集内核kernel和文件系统rootfs为一体,在引导期间将文件系统放在内存中,但由于内存断电后无法保存数据,所以该系统的所有设置无法保存,仅适用于不驱动flash的情况下使用,我们先通过Breed刷入该临时OpenWrt系统,重启路由器即可进入该临时系统,通过luci界面,选择系统更新,上传安装openwrt-18.06.4-ramips-mt7621-mir3g-squashfs-sysupgrade.tar(此为写此文时最新版本,可更换)
附件在此:https://pan.baidu.com/s/1SkF7WOt5GkIw6f68JP7viA 提取码: npp5
随后路由器会自动重启,但登录后会发现进入的仍然是临时OpenWrt,这是因为Breed在刷入临时OpenWrt时刷入的是路由器的kernel0,而我们通过临时OpenWrt安装正式系统刷入的是kernel1,接下来我们将路由器断电,进入Breed(具体进入方法见Breed安装),启用环境变量,添加环境变量xiaomi.r3g.bootfw,其值为2,其目的在于使Breed启动后从kernel1启动,接下来重启,即可进入正式版OpenWrt系统,折腾第一步结束
接下来是我当时安装时各种参考的资料分析,以及遇到的一些坑,毕竟我只能算是一位爱好者,没有接受过计算机技术教学,对于编译等东西一窍不通
首先说说OpenWrt官网上对于R3G安装的操作,官网上的操作是针对原厂Bootloader和原厂固件的,故对于安装了Breed的我们来说,照抄是万万不行的,官网上提供两个文件,分别是mir3g-squashfs-kernel1.bin和mir3g-squashfs-rootfs0.bin,官网上的命令为:
mtd write mir3g-squashfs-kernel1.binkernel1
mtd write mir3g-squashfs-rootfs0.binrootfs0
nvram set flag_try_sys1_failed=1
nvram commit
reboot
上述命令中nvram是uboot专有命令,Breed与uboot相互独立,参数不共用,根据国外论坛对于小米路由器原厂uboot的分析,小米路由器的kernel0包含的usb恢复的功能,就是将官方固件命名为miwifi.bin放入U盘内,断电时插入路由器,用硬物抵住reset键后插电,保持10秒左右,待黄灯快速闪动后可松手,可恢复至官方固件,这个功能可用于原厂固件损坏后的修复,也算是不错的功能,所以OpenWrt官网上的建议是将内核文件刷入kernel1
接下来说说Breed的参数,根据H大的回复,breed的启动流程如下:
如果kernel0存在kernel1不存在,那么启动kernel0
如果kernel1存在kernel0不存在,那么启动kernel1
如果kernel0和kernel1都存在,那么检查环境变量 xiaomi.r3g.bootfw的值,如果存在且值为2,那么启动kernel1,否则启动kernel0
关于操作前的备份指令
cat /proc/mtd:读取路由器内部分区
插入U盘(FAT/FAT32)
输入【df -h】查看查看U盘的分区路径
或者输入"cd /"回车,再输入"ls -a"查看到extdisks文件,再"cd extdisks"进入到extdisks文件里用"ls -a"就能查看到你的U盘路径,我的是sda4,以下以我自己U盘的路径为例:
备份(请自行修改回你自己的U盘路径):
dd if=/dev/mtd0 of=/extdisks/sda4/ALL.bin
dd if=/dev/mtd1of=/extdisks/sda4/Bootloader.bin
dd if=/dev/mtd2of=/extdisks/sda4/Config.bin
dd if=/dev/mtd3 of=/extdisks/sda4/Bdata.bin
dd if=/dev/mtd4of=/extdisks/sda4/Factory.bin
dd if=/dev/mtd5 of=/extdisks/sda4/crash.bin
dd if=/dev/mtd6 of=/extdisks/sda4/crash_syslog.bin
dd if=/dev/mtd7of=/extdisks/sda4/reserved0.bin
dd if=/dev/mtd8of=/extdisks/sda4/kernel0.bin
dd if=/dev/mtd9of=/extdisks/sda4/kernel1.bin
dd if=/dev/mtd10of=/extdisks/sda4/rootfs0.bin
dd if=/dev/mtd11of=/extdisks/sda4/rootfs1.bin
dd if=/dev/mtd12of=/extdisks/sda4/overlay.bin
dd if=/dev/mtd13of=/extdisks/sda4/ubi_rootfs.bin
dd if=/dev/mtd14 of=/extdisks/sda4/data.bin
备份到最后一个mtd14可以会出现如下出错提示:
dd: can't open '/dev/mtd14': Device or resourcebusy
该分区备份不成功无所谓,关键的mtd0-mtd4备份下来就行了。
如果还在官版的固件下想恢复的,可使用如下命令:
恢复(这里我们不需要该步骤,只是给有需要的人看的官版固件下的恢复步骤)
mtd write /extdisks/sda4/Bootloader.binBootloader
mtd write /extdisks/sda4/Config.bin Config
mtd write /extdisks/sda4/Bdata.bin Bdata
mtd write /extdisks/sda4/Factory.binFactory
mtd write /extdisks/sda4/crash.bin crash
mtd write /extdisks/sda4/crash_syslog.bincrash_syslog
mtd write /extdisks/sda4/reserved0.binreserved0
mtd write /extdisks/sda4/kernel0.binkernel0
mtd write /extdisks/sda4/kernel1.bin kernel1
mtd write /extdisks/sda4/rootfs0.binrootfs0
mtd write /extdisks/sda4/rootfs1.binrootfs1
mtd write /extdisks/sda4/overlay.binoverlay
mtd write /extdisks/sda4/ubi_rootfs.binubi_rootfs
mtd write /extdisks/sda4/data.bin data
Breed
https://www.right.com.cn/forum/thread-161906-1-1.html
这是一个非常易用的Bootloader,针对刷机主流型号进行了适配,内置DHCP服务,拥有Web图形化界面,小白也能轻松刷机,并且支持Telnet,wget等功能,可以通过TTL进行操作,具体介绍可见上述网址,选择仅看楼主,里面包含绝大多数关于Breed的资料,就不在此赘述
如何在R3G内刷入Breed
首先小米路由器需要开启ssh,此类教程在网上极多,是基本功,在此不多说了
首先需要下载支持小米路由器3G的Breed,可从H大搭建的服务器https://breed.hackpascal.net/ 内下载,其型号是breed-mt7621-xiaomi-r3g.bin
接下来通过WinSCP将文件上传至路由器内部,注意将文件协议选择为SCP,我通常将文件上传至/tmp目录下,建议将文件改名为Breed.bin,便于后续操作
输入mtd write /tmp/breed.bin Bootloader,将Breed刷入Bootloader
若输入mtd -r write /tmp/breed.bin Bootloader,-r意味着刷入后直接重启,一旦刷错难以补救,所以建议不要加入-r,待完 全确认后再手动断开电源
在接入电源线之前用硬物顶住路由的reset键再接电,等到路由器的指示灯狂闪的时候,松开reset键,电脑上在浏览器中输入192.168.1.1,即可进入Breed控制台
小米路由器R3G用Breed安装原生OpenWrt详解 - 飞天雉&&小雉视频系统