OpenClash 更新 Mihomo 内核教程:OpenWrt 手动替换 + 架构匹配避坑 2026
OpenClash 的 Mihomo 内核不会跟着插件一起更新,节点支持 Hysteria 2 却在日志里报 unsupported protocol 时,十有八九是内核版本太旧。这篇给出从确认架构、下载对应版本、替换赋权到验证成功的完整流程,重点避开 mips-softfloat 和 amd64-compatible 两个选错高发区。
操作步骤速查
SSH 登录路由器并确认 CPU 架构
在电脑上打开终端(macOS / Linux)或 PowerShell(Windows),输入 ssh [email protected](把 IP 换成你的路由器管理地址),输入密码后登录。登录成功后先跑 uname -m,屏幕上输出的字符串就是你的路由器 CPU 架构标识:x86_64 代表 64 位 x86 软路由,aarch64 代表 64 位 ARM(如 R4S / R5S / R2S),mips 代表 MIPS(如 MT7621 芯片的路由器)。记下这个值,下一步下载文件全靠它。
预期结果:uname -m 输出类似 x86_64、aarch64 或 mips 的架构标识。如果输出包含 aarch64 或 armv7l 等 ARM 变体,按下面表格对应到正确的 Mihomo 文件名。
如果不知道路由器管理 IP,在 OpenWrt LuCI 后台左侧菜单找到「网络 → 接口 → LAN」,IPv4 地址就是管理 IP。SSH 端口默认 22,如果改过端口记得加 -p 参数。
从 Mihomo Release 页面下载对应架构的内核文件
在电脑浏览器打开 https://github.com/MetaCubeX/mihomo/releases,找到最新版本(页面最上面带 Latest 标签的那个)。点开 Assets 展开文件列表,按你的架构选择对应的 .gz 文件。在文件链接上右键「复制链接地址」。回到 SSH 终端,cd /etc/openclash/core/ 进入内核目录,然后用 wget -c '粘贴下载链接' 下载。注意:如果下载速度极慢或连接超时,说明 GitHub CDN 访问受限,可以先在电脑上下载好 .gz 文件,再用 WinSCP(协议选 SCP)上传到路由器的 /etc/openclash/core/ 目录。
预期结果:ls /etc/openclash/core/ 可以看到刚下载的 .gz 压缩包,文件名类似 mihomo-linux-amd64-v1.18.10.gz 或 mihomo-linux-arm64-v1.18.10.gz。
Mihomo Release 文件名里的 compatible-go120 后缀表示用 Go 1.20 编译,兼容旧版 glibc。如果你的 OpenWrt 内核比较老(低于 5.10),优先选带 compatible 后缀的版本,否则可能报 glibc version not found。
解压、重命名并放到正确路径
在 /etc/openclash/core/ 目录下,先解压下载的 .gz 文件:gzip -d mihomo-linux-*.gz。解压后会得到一个去掉 .gz 后缀的二进制文件。把它重命名为 clash_meta(OpenClash 只认这个文件名):mv mihomo-linux-* clash_meta。注意:如果 /etc/openclash/core/ 下已经有一个旧版 clash_meta,先做个备份:cp clash_meta clash_meta.backup,再覆盖。最后给新内核加执行权限:chmod 755 /etc/openclash/core/clash_meta。
预期结果:ls -la /etc/openclash/core/clash_meta 输出的权限列显示 -rwxr-xr-x,文件大小约 10-20 MB。执行 /etc/openclash/core/clash_meta -v 应打印 Mihomo 版本号,类似 Mihomo v1.18.10 linux/amd64。
gzip -d 解压后原 .gz 文件会被删除,只留解压后的文件。如果想保留源文件,用 gzip -dk 代替 gzip -d。WinSCP 用户可以在电脑上先解压再上传,上传后在 WinSCP 中右键文件 → 属性 → 权限设为 0755。
重启 OpenClash 并验证内核生效
回到 OpenWrt LuCI 网页后台,点左侧菜单「服务 → OpenClash」。先在「插件设置 → 版本更新」里确认 [Meta] 当前内核版本显示为你刚替换的版本号。然后回到「运行状态」页面,点击「重启 OpenClash」。等待约 10-15 秒状态变为「运行中」。打开「运行日志」标签,确认没有 critical 或 fatal 级别的错误,日志里应该能看到 Mihomo 版本号和配置文件加载成功的提示。用局域网内的任意设备访问一个 HTTPS 网站,确认代理正常工作。
预期结果:OpenClash 状态显示「运行中」;运行日志中首行打印了 Mihomo 内核版本号;局域网设备能正常通过代理访问外网。如果日志出现 segmentation fault 或 illegal instruction,说明内核架构选错,需要回到第二步重新下载。
替换成功后,建议在 OpenClash 的「配置管理」里导出当前配置做一次备份,下次恢复或迁移路由器时直接导入即可。
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 盘路径。
相关阅读
常见问题
- OpenClash 里的「检查并更新」能更新 Mihomo 内核吗?
- 部分新版 OpenClash 可以,但经常因为 GitHub 连接问题失败。更可靠的是手动下载后覆盖:从 MetaCubeX/mihomo Releases 拿 .gz 包,解压放到 /etc/openclash/core/clash_meta。替换完成后不要再点「检查并更新」,否则可能被自动覆盖回旧版。
- 替换内核后节点全部超时怎么办?
- 先跑 /etc/openclash/core/clash_meta -v 确认版本号打印正常,没有 segment fault。如果版本正确但节点超时,检查 OpenClash 日志里是否有 dns resolve 失败或 proxy group 解析报错。新版 Mihomo 对 YAML 语法更严格,删掉配置文件里废弃的 fallback-filter 字段。
- 我的路由器是 MT7621,应该选哪个架构文件?
- MT7621 是 MIPS 架构,uname -m 显示 mips。Mihomo Release 里 MIPS 有两种:mips64-softfloat 和 mips64。MT7621 / MT7981 这类 OpenWrt 设备一般选 mips64-softfloat 版本。不确定时两种都下载试试,能跑起来的那个就是正确的。
- 怎么知道当前 OpenClash 用的是什么内核版本?
- 两种方法:SSH 进去跑 /etc/openclash/core/clash_meta -v,直接打印版本号;或者在 OpenWrt 网页后台打开 OpenClash → 插件设置 → 版本更新,看 [Meta] 当前内核版本那一行。如果那一行显示「内核不存在」,说明 clash_meta 文件还没放进去或路径不对。
- 替换内核后 OpenClash 启动不了,日志显示 permission denied
- 忘记 chmod +x 赋权了。SSH 进去跑 chmod 755 /etc/openclash/core/clash_meta,然后在 LuCI 页面重新启动 OpenClash 即可。如果还有问题,跑 ls -la /etc/openclash/core/clash_meta 确认文件权限是 -rwxr-xr-x。
来源与时间
本文最后查看时间:2026-05-29。操作路径会随客户端版本变化,遇到按钮名称不一致时,优先按同义菜单和官方文档查看。