OpenClash 更新 Mihomo 内核教程:OpenWrt 手动替换 + 架构匹配避坑 2026
OpenClash 的 Mihomo 内核不会跟着插件一起更新,节点支持 Hysteria 2 却在日志里报 unsupported protocol 时,十有八九是内核版本太旧。这篇给出从确认架构、下载对应版本、替换赋权到验证成功的完整流程,重点避开 mips-softfloat 和 amd64-compatible 两个选错高发区。
OpenClash 的内核不会跟着 LuCI 插件一起更新。当你在配置里加了一条 Hysteria 2 节点,日志却反复打印 unsupported protocol,或者 VLESS Reality 节点测速全部 timeout——不用怀疑配置,先查内核版本。
更新分三步:确认当前内核版本 → 下载匹配路由器 CPU 架构的 Mihomo 内核 → 替换文件并重启 OpenClash。整个过程在 SSH 里完成,不需要重装插件,也不会影响已有配置。
我当前的内核是什么版本?
动手替换之前,先搞清楚你手里这个内核有多旧。两种查法,挑你顺手的一种。
方法一:SSH 命令行。 登录路由器后直接跑:
/etc/openclash/core/clash_meta -v
输出类似 Mihomo v1.14.0 linux/amd64,版本号、操作系统和架构一目了然。如果终端返回 -ash: /etc/openclash/core/clash_meta: not found,说明这个路径下还没有 Mihomo 内核文件,或者你当前用的是 OpenClash 自带的其他内核(dev / TUN / Premium),可以跳过版本检查直接下载新内核。
方法二:OpenWrt 网页后台。 在侧栏点「服务 → OpenClash → 插件设置 → 版本更新」,找到 [Meta] 当前内核版本 那一行。如果显示「内核不存在」,确认路径是同一个意思。
什么时候该更新?如果你的 Mihomo 版本低于 v1.16.0,Hysteria 2 和 VLESS Reality 大概率不支持。v1.14.x 及更早版本连 TUN 混合堆栈的 DNS 劫持逻辑都和老版不同,继续用下去遇到配置兼容问题的概率会越来越高。
你的路由器是什么架构?选错一个字母就白下
Mihomo Release 页面上的文件名长这样:mihomo-linux-arm64-v1.18.10.gz。中间那一段 arm64 / amd64 / mips64-softfloat 决定了文件能不能在你的路由器上跑。选错的结果通常是两种:segmentation fault(内核直接崩溃)或者 illegal instruction(CPU 不认指令集)。
先用 uname -m 确认架构,再按下表对应:
| 路由器型号 / CPU | uname -m 输出 | Mihomo 文件名关键词 | 备注 |
|---|---|---|---|
| 软路由 J4125 / N5105 / N100 | x86_64 | mihomo-linux-amd64 | 如果 OpenWrt 内核版本较老(< 5.10),选带 compatible-go120 后缀的版本 |
| R4S / R5S / R6S(Rockchip RK3399 / RK3568 / RK3588) | aarch64 | mihomo-linux-arm64 | 直接选不带 compatible 的标准版本 |
| 树莓派 4B / CM4 | aarch64 | mihomo-linux-arm64 | 同上 |
| 树莓派 3B / 3B+ | armv7l | mihomo-linux-armv7l | 不要选 arm64,3B 是 32 位 ARM |
| 红米 AX6000 / 小米 AX3600(IPQ807x) | aarch64 | mihomo-linux-arm64 | 部分固件需确认 FPU 支持 |
| Newifi D2 / 歌华链 / 红米 AC2100(MT7621) | mips | mihomo-linux-mips64-softfloat | MT7621 没有硬件浮点单元,必须 softfloat 版本 |
| GL.iNet MT-3000 / AX1800(MT7981) | aarch64 | mihomo-linux-arm64 | 虽然是联发科芯片但 ARM 架构 |
最容易踩的坑是 MT7621 设备——误选 mips64(hardfloat)内核能启动,但跑几分钟就 CPU 100% 然后僵死。认准 mips64-softfloat。
从 GitHub 下载内核:wget 超时了怎么办?
OpenWrt 自带的 wget 在直连 GitHub 时经常超时,因为路由器上的 DNS 解析和 HTTPS 握手多走一层延迟。三种方式把文件送到路由器上。
wget 直连(最快但看运气):
cd /etc/openclash/core/
wget -c https://github.com/MetaCubeX/mihomo/releases/download/v1.18.10/mihomo-linux-amd64-v1.18.10.gz
如果 -c 断点续传也救不了——等了 3 分钟还在 0%,那就换下面的方式。
电脑下载 + SCP 上传: 在电脑浏览器打开 Release 页面,点开 Assets,右键下载对应的 .gz 文件。然后用 scp 上传:
scp ~/Downloads/mihomo-linux-amd64-v1.18.10.gz [email protected]:/etc/openclash/core/
Windows 用户用 WinSCP:新建连接时协议选 SCP(不是 SFTP),主机填路由器 IP,用户名 root,密码填登录密码。左边拖拽本地文件到右边的 /etc/openclash/core/ 目录即可。
路由器上走代理下载: 如果你已经在用配套订阅线路,OpenClash 正在运行的话,可以让 wget 走本地代理端口:
export https_proxy=http://127.0.0.1:7890
wget -c '下载链接'
下载完成后记得 unset https_proxy 关掉代理变量。
替换、赋权、验证:四步走完不能省
假设你已经把 .gz 文件放到了 /etc/openclash/core/ 目录下,余下操作一气呵成。
第一步,备份旧内核:
cd /etc/openclash/core/
cp clash_meta clash_meta.backup.$(date +%Y%m%d)
加了日期后缀,一个月后你还能找回今天替换前的版本。
第二步,解压并重命名:
gzip -d mihomo-linux-*.gz
mv mihomo-linux-* clash_meta
gzip -d 会把 .gz 删除,只留解压后的二进制文件。mv 重命名为 clash_meta——OpenClash 只认这个文件名。
第三步,赋权:
chmod 755 /etc/openclash/core/clash_meta
权限设成 755(owner 可读写执行,group 和 others 只读执行),不需要 777。
第四步,跑版本号验证:
/etc/openclash/core/clash_meta -v
看到 Mihomo v1.18.10 linux/amd64 go1.22.5 之类的输出就没问题了。如果报 -ash: /etc/openclash/core/clash_meta: Permission denied,说明第三步漏了。
回到 OpenWrt LuCI 后台,在「服务 → OpenClash → 运行状态」点击「重启 OpenClash」。等 10-15 秒状态变成绿色「运行中」后,点开「运行日志」确认没有红色报错,再用局域网里的设备打开一个 HTTPS 网页做最终确认。
替换之后注意两件事
不要在主控面板再点「检查并更新」。 OpenClash 自带的检查更新可能自动下载内置版本覆盖你刚放进去的 Mihomo,导致版本回退。如果你点了,需要重新走一遍上面第四步确认版本号有没有变。
Flash 空间不足时怎么办。 Mihomo 内核的解压后体积约 10-20 MB。如果你的路由器 flash 只有 128 MB 或更小,先跑 df -h /etc/openclash/core/ 确认剩余空间。空间不够时先删除旧的备份文件 rm /etc/openclash/core/clash_meta.backup.*,再执行解压。MT7621 设备的 overlay 分区通常只有几 MB,这类机器建议把内核放到外接 U 盘上,然后在 /etc/openclash/core/ 下建一个软链接指向 U 盘路径。
相关阅读
来源与时间
本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。