为红米AC2100编译OpenWRT
(封面图源小米商城)
TL;DR
在23年下半年的某一天,我一个室友给我安利了这台路由器,但我嫌他贵就没买。后来想象可惜,24年上半年想玩的时候发现下架了!淦,现在又想玩了,就上网上二手收了一台。这个机器是MIPS
架构的,RAM和硬盘都只有128MB
。对的,是MB,你没看错。确实能买更好的机器,但这个机器拿来练手还是很不错的。
思路
先给机器降级,然后利用旧版系统漏洞刷入Breed
,通过Breed来刷入OpenWRT。因为Breed这个bootloader会在你无法开机或手动进入的时候,起一个192.168.1.1
的webui用来让你救转/刷入新系统。
刷入Breed
我们先系统降级,下载固件包,再到路由器后台的手动升级里安装这个老版本系统就行。对的没错,小米这个路由器系统做的还算人性化,可以在系统更新里降级系统。
检查硬盘坏快情况(可选操作)
毕竟是二手收来的,成色全靠抽。我这台有三个坏快,淦。。
把电脑通过网线插到路由器的LAN口,进入路由器后台获取你的STOK,替换掉下面的CCCCCCCCCCC
,然后打开这个连接,等待一会儿,你的路由器名字会变成Toshiba
或者ESMT
,后面有可能会接上数字,这个数字就是坏快所在盘块:
1 |
|
刷入Breed
Breed我是在b站这个视频简介里获取到的。
这段链接是刷入Breed的:
1 |
|
这个刷入链接引用了外部URL,如果你家网络不是特别好,个人建议先下载下来然后部署一个web服务器,把固件传上去,然后获取内网链接,替换掉它刷入链接里的链接和sha256sum
值就行。
如果路由器在60秒内重启则代表刷BREED成功(灯会从蓝变橘,最终变蓝进入系统)。
如果没重启,可能是stok过期了。进入后台复制新的stok即可。也有可能下载的BREED损坏,重新运行代码,或考虑本地起一个web服务器。
手动进入Breed
拔掉电源,按住reset同时接上电源等10秒即可进入breed。需要注意的是如果闪蓝灯那就是BREED。
编译OpenWRT系统
装依赖
我的环境是Arch Linux
,所以只要下载一个AUR
里的包openwrt-devel
即可,或者也可以手动安装:
1 |
|
如果你是Debian系发行版,安装这些依赖:
1 |
|
准备源码并选择分支
下载官方源码:
1 |
|
查看所有分支:
1 |
|
切换到指定分支(以我现在用的24.10
为例):
1 |
|
更新feeds:
1 |
|
修改配置并编译
修改配置:
1 |
|
把前三行分别改成这样:
1 |
|
开始编译:
1 |
|
注意⚠️:
期间会联网下载依赖和部分源码包,请保证首次编译时网络畅通。
刷入系统
编译产物会放在/project_root/bin/targets/ramips/mt7621
下。
此时,我们将路由器重启到Breed
,在固件更新
界面里将闪存布局
选为小米 R3G OpenWRT
,然后上传kernel1
和rootfs0
即可。
注意⚠️:
刷机前记得做备份,在Breed
的固件备份
里。
后续
修改网段
在Network - Interfaces - LAN
里,点编辑,把IPv4 addres
改掉就行,记得遵循局域网ip段的规则哦~
无线中继
启用无线中继
在Network - Wireless
里,radio0
是2.4GHz
的,因为是802.11b/g/n
;radio1
是5GHz
的,因为是802.11ac/n
。根据你的需求,选择要中继网络的频段,点scan
,勾选Replace wireless configuration
和Lock to BSSID
,然后在WPA passphrase
里输入密码,随后一路Submit
和Save
即可,最后Save & Apply
。
停止无线中继
还是在Network - Wireless
里,把添加中继的网络全部Remove
掉,然后在radio_
右边点Add
,在Interface Configuration
里选择Network
为LAN
,配置好5GHz频段wifi的ESSID、密码等安全设置后,保存即可。
美化
进入菜单:System - Software
,先更新列表,然后下载并安装luci-theme-argon
即可,主题就会自动变好看。
Argon主题的管理面板:下载luci-app-argon-config
这个包即可,随后即可在System - Argon Config
里管理主题,比如登录页面背景。
或者直接编译进系统,这样可以免去开机再下载:
主题:LuCI > 4. Themes > luci-theme-argon
主题管理面板:LuCI > 3. Applications > luci-app-argon-config
常用工具补齐(直接编译进系统)
curl: Network > File Transfer > curl
openssh-sftp-server: Network > SSH > openssh-sftp-server
iptables-nft: Network > Firewall > iptables-nft
openssl: Utilities > openssl-util
如果你要运行tun
设备的话,还需要补全下面这几个模块,不过体积也大不到哪里去,就几个KB
kmod-inet-diag: Kernel modules > Network Support > kmod-inet-diag
kmod-nft-socket: Kernel modules > Netfilter Extensions > kmod-nft-socket
kmod-nft-tproxy: Kernel modules > Netfilter Extensions > kmod-nft-tproxy
kmod-tun: Kernel modules > Network Support > kmod-tun
ZRAM-SWAP
注意⚠️
需要你在编译时启用了kmod-zram
内核模块,不然会安装报错。
路径:Kernel modules > Other modules > kmod-zram
也是在System - Software
里,下载zram-swap
这个包并安装即可。
注意,他默认zram大小是内存的一半,对于这种小内存机器肯定不够用,我是搬的安卓上那一套,80%左右的zram,所以需要去修改配置文件。
编辑/etc/init.d/zram
这个文件,找到这一段:
1 |
|
看到那个2048
了吗?把它改成1280
,保存后重启,这样就能启用80%大小的zram,就跟安卓机一样
内网DNS
在Network - DHCP and DNS - DNS Records
里,然后就跟你的域名控制台里管理一样的操作,配置各种解析就行。
TTL 128
安装iptables-nft
这个包,以便方便兼容iptables语法修改防火墙规则。
创建/etc/nftables.d/12-mangle-ttl-128.nft
,并写入以下规则:
1 |
|
再重启防火墙:
1 |
|
然后就能在Status - Firewall
里看到这条新增的规则:
Traffic filter chain “mangle_prerouting_ttl128”
- Hook: prerouting (Capture incoming packets before any routing decision), Priority: 300
- Policy: accept (Continue processing unmatched packets
Rule matches | Rule actions |
---|---|
20.4 KB Traffic matched by rule: 191 Packets, 20.4 KBytes Any packet |
Set header field ip.ttl to 128 |
刷回原厂
在Breed
里的固件更新
,闪存布局选择小米 R3G 原厂
,只把miwifi_rm2100_firmware_d6234_2.0.7_breed.bin
上传到固件
里,刷入后等待重启,随后在小米系统里进行一次系统更新,就能把Breed清除,彻底回到小米系统。
注意⚠️:
如果上传固件后无法进入系统,回到breed,在环境变量编辑
页面里删除normal_firmware_md5
。
参考链接
OpenWRT官方页面
Techdata: Xiaomi Redmi Router AC2100
Xiaomi Redmi Router AC2100
Build System Setup (装依赖教程)
Build System Usage
Github页面
其他页面
小米商城 - 红米AC2100
恩山论坛 - 小米 红米【AC2100】一键刷BREED【30秒刷完】小白帅小伙专用 检查坏块 | 无需Telnet
哔哩哔哩 - 红米AC2100路由器一键刷入BREED刷入第三方openwrt+老毛子固件+能刷回小米官方固件
校园网防止多设备检测指北