本文转载自:Miao's Blog:GL.iNet MT3600BE 路由器折腾备忘,整理记录如下。
在帝都读博需要租房装网,借此理由买了一个 OpenWrt 路由器折腾。在比较之后,我选了最新发布的 GL-MT3600BE,基于联发科的 MT7981B Dual-core CPU,还有 WiFi 7 可以战未来。一直以来对 GL.iNet 广联智通这个品牌都很有好感,因为它的路由器都是基于 OpenWrt,开放系统可玩性强,可以自行编译定制,出海做得也很好,属于是在国外比国内名气大得多。
这台机器很小巧精致,也很有分量。用了一段时间,总体来说非常满意,但是运行内存只有 512M 就实在有点吝啬了,不过也不是不能用。本文记录对 GL.iNet MT3600BE 路由器进行的一系列深度定制操作,包括修改地区代码以解锁功率和频段限制、安装 ZRAM 压缩内存、手动部署 PassWaXX、OpenClaXX 以及优化 AdGuard Home 的存储限制,给自己以后折腾留个操作备忘。
1. 修改地区为 US
GL.iNet 的 CN 版本固件在特殊网络软件、无线功率和频段上存在限制。通过修改底层工厂数据中的地区代码,可以解锁 US 区域限制。
风险提示: 此部分涉及直接读写 /dev/mtdblock 分区。操作具有设备特异性,错误的偏移量可能导致设备变砖。执行前务必核对设备型号及分区表,并做好备份。
首先确认当前代码位置。如果输出不包含 CN 或其他预期代码,请勿继续执行:
dd if=/dev/mtdblock3 bs=1 count=2 skip=16520 2>/dev/null | hexdump -C确认无误后,将 US 写入对应偏移量并强制同步数据:
echo -n "US" | dd of=/dev/mtdblock3 bs=1 seek=16520 conv=notrunc
sync再次读取检查,确认输出已变为 US,随后重启设备生效:
dd if=/dev/mtdblock3 bs=1 count=2 skip=16520 2>/dev/null | hexdump -C
reboot2. 软件源与依赖准备
切换为 US 地区后,GL.iNet OpenWrt 的默认镜像源会指向海外服务器 fw.gl-inet.com,在国内网络环境下速度极慢,所以需要将其切回国内:
sed -i 's/fw.gl-inet.com/fw.gl-inet.cn/g' /etc/opkg/distfeeds.conf
opkg updatePassWaXX 依赖 luci-compat 以及特定的 OpenSSL 和 Lua 运行时环境,先安装系统源中的兼容层:
opkg install luci-compat接着下载并安装两个特定的 IPK 包(来自 wukongdaily/gl-inet-onescript 仓库):
wget https://github.com/wukongdaily/gl-inet-onescript/raw/master/theme/libopenssl3.ipk
wget https://github.com/wukongdaily/gl-inet-onescript/raw/master/theme/luci-lua-runtime_all.ipk
opkg install libopenssl3.ipk luci-lua-runtime_all.ipk3. 安装 ZRAM 压缩内存
对于只有 512MB 内存的设备,启用 ZRAM 可以有效缓解内存压力。ZRAM 会在内存中创建一个压缩的交换分区,通过牺牲少量 CPU 资源换取更多可用内存。
opkg update
opkg install zram-swap安装完成后,系统通常会自动启动一个默认容量(内存的一半)和默认算法(lzo)的 zram 设备。更换算法前,先确认内核支持哪些算法:
cat /sys/block/zram0/comp_algorithm可以得到类似 lzo lzo-rle lz4 zstd 的输出,方括号 [] 中的是当前正在使用的算法。zstd 效果应该最好,但实测在 GL-MT3600BE 上无法初始化,会报 write error: Out of memory,因为 zstd 初始化时申请的内存较大,最终使用平衡的 lzo-rle。
由于 GL.iNet 设备将 ZRAM 配置集成在主系统配置文件中,使用 uci 工具修改:
# 设置压缩算法(推荐 lzo-rle,平衡型,OpenWrt 官方默认)
uci set system.@system[0].zram_comp_algo='lzo-rle'
# 设置 zram 容量大小(例如 256MB)
uci set system.@system[0].zram_size_mb='256'
# 保存配置
uci commit system重启服务使配置生效:
/etc/init.d/zram restart验证最终状态:
# 查看内存挂载情况,确认 Swap 栏的 total 数值与设置的大小接近
free -m
# 查看详细压缩统计,确认算法和容量是否正确
/etc/init.d/zram status4. 手动安装 PassWaXX
由于官方源通常不包含此类插件,需要下载适配架构(aarch64_cortex-a53)的安装包并解压:
wget https://github.com/OpenWrt-Passwall/OpenWrt-passwall/releases/download/26.1.13-1/passwall_packages_ipk_aarch64_cortex-a53.zip
unzip passwall*.zip安装透明代理模块前,先确保系统安装了 TProxy 相关内核模块和 iptables 扩展:
opkg update
opkg install kmod-ipt-tproxy iptables-mod-tproxy执行命令安装核心组件,精简掉非必要组件以节省空间:
opkg install \\
chinadns-ng*.ipk \\
dns2socks*.ipk \\
microsocks*.ipk \\
tcping*.ipk \\
sing-box*.ipk \\
luci-app-passwall*.ipk \\
luci-i18n-passwall*.ipk压缩包内的其他插件可根据实际需求按需安装。
5. 优化 AdGuard Home 存储限制
非 CN 版本固件虽然内置 AdGuard Home,但受限于部分设备的内存/存储策略,其过滤器规则存储镜像(Image)大小被硬编码限制在 5MB。规则稍多就无法保存,因此需要手动扩容镜像文件。
首先停止服务并清理旧镜像,必须先卸载挂载点并删除旧的 .img 文件,否则系统不会重新创建:
/etc/init.d/adguardhome stop
umount /etc/AdGuardHome/data/filters/
rm /etc/AdGuardHome/data.img编辑初始化脚本,将创建镜像的大小从 5M 修改为 10M:
sed -i 's/5M/10M/g' /etc/init.d/adguardhome重启路由器,系统在启动 AdGuard Home 时会自动创建新的 10MB 镜像文件:
reboot虽然存储空间扩大到了 10MB,但在内存较小的设备上(如 512MB RAM),加载过多拦截规则(几十万条)极易触发 OOM(Out Of Memory),导致进程崩溃或系统重启。
6. 安装 OpenClaXX
后来作者将内存升级到了 2GB,于是把 PassWaXX 换成了更好用的 OpenClaXX。
OpenClaXX 的安装更方便,可参考项目说明。首先安装依赖:
# 首先移除默认安装的精简版 Dnsmasq(如果有)
opkg remove dnsmasq
opkg install bash iptables dnsmasq-full curl ca-bundle ipset ip-full iptables-mod-tproxy iptables-mod-extra ruby ruby-yaml kmod-tun kmod-inet-diag unzip luci-compat luci luci-base然后去 OpenClaXX 仓库的 Release 页面选择对应版本进行下载和安装:
wget https://cdn.gh-proxy.org/https://github.com/vernesong/OpenClash/releases/download/v0.47.055/luci-app-openclash_0.47.055_all.ipk -O openclash.ipk
opkg install openclash.ipk安装完成后重启 OpenWrt 并重新登录控制台,就可以在菜单中看到 OpenClaXX 了。
OpenClaXX 对内核的更新检测有些偏差,安装完毕后最好手动上传最新的 MihoXX 内核,不使用内置自动更新:
rm -f /etc/openclash/core/clash_meta
wget -O mihomo.gz https://cdn.gh-proxy.org/https://github.com/MetaCubeX/mihomo/releases/download/v1.19.20/mihomo-linux-arm64-v1.19.20.gz
gunzip -c mihomo.gz > /etc/openclash/core/clash_meta
chmod +x /etc/openclash/core/clash_meta
rm -f mihomo.gz结语
折腾完毕,这台小路由器终于被调教成了差不多理想中的样子。512MB 内存虽然捉襟见肘,但胜在稳定够用;内存大了用得还是更爽。GL.iNet 的开放性确实名不虚传,希望能尽快适配新的 OpenWrt 版本,如果能升级内存大小就更好了,主要是当前版本的联发科驱动占用内存太大。这应该不会是最后一台 GL.iNet。