最近刷路由器圈子,发现一个挺明显的风向变化:晒固件的帖子变少了,晒"编译教程"的变多了。
B站今年1月一个"飞牛NAS本地编译ImmortalWrt"的保姆级教程,拿了270多个收藏。哔哩哔哩4月有个"告别IMG转换、绿联NAS直装25.12"的自动构建项目,1.4万播放。哔哩哔哩就在7月底,还有人放出京东云鲁班路由器的 GitHub Actions 自动编译,25.12.1 直接出货。哔哩哔哩知乎上也有人在晒 macOS 下搭编译环境、用 podman 起容器编译的记录。
为什么是现在?一个绕不开的背景:ImmortalWrt 5月底发了 25.12.0,7月初更到 25.12.1,这一代最大的变化是包管理器从 opkg 换成了 apk。哔哩哔哩换包格式这种事,上游生态要疼一阵:旧的 ipk 存货包失效,第三方整合固件的作者得重新做包、重新测兼容,更新节奏肉眼可见地慢下来。知乎上就有人吐槽,论坛上各种作者固件"不是功能缺就是太臃肿",干脆换回官方分支自己装插件。知乎"求人不如求己"的情绪一上来,编译教程自然就热了。
但先别急着收藏教程。我把 B站、知乎、微博上这波编译相关内容看了一圈,结论可能有点扫兴:真想自己动手编译的人,远没有看上去那么多。
先说三种最常见、但其实不用编译的情况。
第一种,“固件里插件太多/太少,不合我意”。这是编译教程底下出现频率最高的动机,但恰恰最容易解决。ImmortalWrt 官方固件本来就是极简风格,什么插件都不预装,它的核心优势就是内置了国内软件源,在 LuCI 里"系统-软件包"搜一下,依赖自动装好。知乎微博上有位老哥说得很直:软路由他只推荐 immortalwrt,没有之一,搜索需要的插件就能自动装好全部依赖,他通常3到6个月才重启一次。微博要装什么自己装,要删什么自己删,真不用为这个去编译。

第二种,“我在用的某某作者固件停更了”。这个更简单:换官方正式版。ImmortalWrt 的维护节奏一直在线,24.10 分支一路维护到 24.10.6,25.12.1 也在7月初放出来了。任何一个个人作者的更新稳定性,都很难跟官方比。从"某作者固件"迁到官方正式版,是一次换固件,不是一次编译。
第三种,“我就想在官方固件上加几个特定插件”。这条路很多人不知道:ImmortalWrt 官网有个固件选择器(firmware-selector.immortalwrt.org)。GitHub选好机型和版本之后可以自定义加包,由官方服务器在线编译出镜像,等几分钟就能下载。不用配环境,不用 GitHub 账号,这是"官方固件+自己的包列表"的最短路径。
那到底谁才真的需要自编译?大致是三种人。
一是设备官方不支持、或者刷法特殊的。比如京东云鲁班的 TF 卡版要单独构建、VisionFive 2 这种开发板要定制镜像、还有一些改过 uboot 的机器。你会发现每个月都有人在 GitHub 上放各种小众机型的专属构建——不是他们爱折腾,是没有现成的可刷。哔哩哔哩

二是有深度定制需求的。想把 docker、一堆插件、自己的主题和配置全部打进固件,或者反过来,想精简到极致。微博上有位折腾编译的感慨:“一个 docker 就占了 60MB”——固件里塞什么、不塞什么,只有编译的人才说了算。微博
三是更新要完全自己掌控的。评论区有位说得实在,源码编译的 24.10 已经运行几个月了,很稳定,本地化比 OpenWrt 好。哔哩哔哩这类人编译不是为了功能,是为了"每一行代码、每一次更新都过自己的手"。如果你不是这种心态,编译的维护成本其实不低。
确认自己真的需要编译之后,再看路线。现在主流是四条,门槛差别很大,我给排个序。
门槛最低的是前面说的固件选择器在线定制,适合"官方镜像+少量自选包",几乎零学习成本。
第二低的是 ImageBuilder,这是最被低估的一条路。它不编译内核,只是把官方预编译好的包组装成镜像,选好包列表几分钟就能出固件,特别适合"只改软件包、不动内核驱动"的需求。注意一点:ImageBuilder 本身要在 x86_64 的 Linux 环境里跑,给 ARM 机型出镜像也一样,所以一般是在 NAS 容器或虚拟机里运行。
第三条是 GitHub Actions 云编译,社区里最火的一条路。原理是 fork 一个现成的编译模板仓库,改一下 .config 里的包列表,剩下的交给 GitHub 免费构建资源,一小时左右出固件。哔哩哔哩适合 x86 软路由和热门机型,包列表固定之后每个月可以自动重编。缺点是纯云端,编译失败的时候排查比较折磨。
第四条是本地编译,也就是飞牛、绿联、PVE 那批教程走的路。官方文档给的门槛不算高:Debian 11 的 x86_64 环境、4GB 内存、25GB 空闲磁盘就够用。GitHub好处是过程可见、产物可控,坏处是第一次配环境最折腾,而且编译期间机器资源被吃满——NAS 还在生产环境跑服务的,掂量一下再动手。
最后说几个社区里真实踩过的坑,都是评论区和帖子里的血泪。
一是别赶 25.12 的热闹。apk 包格式还在过渡期:本地装第三方 apk 包要手动加 --allow-untrusted 参数。哔哩哔哩有玩家反馈解包工具还不完善,某些插件在新版 LuCI 里安装体验倒退。B站有位做编译教程的 UP 主直接建议,25.12 可能是个比较坎坷的中间版本,先留守 24.10 等一等更稳妥。哔哩哔哩第一次编译,选 24.10 这种成熟分支成功率高得多。

二是包列表宁少勿多。25.12 这代 nftables 相关工具链有调整,老工具包容易和新包起 install 冲突。哔哩哔哩塞得越满,编译失败和运行出问题的概率越高,先编一个最小可用版本,再往上加。
三是留好后路。.config 或 workflow 文件一定存档,不然下次更新又得从头再来;刷写之前备份配置、确认有 uboot 救砖手段——这条不是废话,评论区就有位凌晨三点升级变砖、半夜修网的中年老哥。
总结一下:现在固件用着没毛病的,原地不动;只是插件不合意的,先去官方固件选择器看看;确认要编译的,从云编译或 ImageBuilder 起步,版本先选 24.10。编译不是仪式,能解决问题才值得动手。
你现在用的是官方固件、别人的整合固件,还是自己编译的?什么机型?评论区聊聊。