适合先明确的事项
芯片平台、Flash / RAM 容量、是否扩容、当前 Bootloader 状态、原厂分区方式。
ZN-M2 这类设备在自编译场景下,核心目标通常不是“功能全塞满”,而是先确定硬件条件、目标用途和可接受的风险,再做精简构建。 真正影响最终体验的,往往是 目标架构是否选对、驱动是否保留、软件包是否过多 以及 刷机方式是否安全。
芯片平台、Flash / RAM 容量、是否扩容、当前 Bootloader 状态、原厂分区方式。
做主路由、旁路由、轻量代理、ZeroTier 节点、多 WAN、纯转发或测试固件。
先做最小可启动版本,再逐步增加功能,而不是一开始就堆满插件。
在正式编译前,先把下面这些信息和条件准备好:
编译前先决定你打算基于哪一套源码:官方 OpenWrt、第三方发行版、还是你自己维护的 fork。 选择时优先考虑 机型支持是否成熟、补丁是否持续维护 和 插件生态是否与你目标一致。
结构稳定、文档多、长期维护更清晰,但某些插件需要自行补充源或补丁。
常见功能比较齐全,上手更快,但需要额外关注补丁质量和升级兼容性。
适合长期使用与反复迭代,成本是你自己要管理 feeds、补丁和回归测试。
# 典型思路(示意)
git clone <源码仓库>
cd <源码目录>
./scripts/feeds update -a
./scripts/feeds install -a
下面这条主线,基本就是 ZN-M2 自编译时最常见的工作顺序:
确保系统依赖、磁盘空间、网络拉源速度和终端工具都没问题。第一次编译时最容易卡在环境不完整或依赖缺失。
把主仓库和软件包源同步到本地,必要时再手动加入额外插件源或私有补丁。
在配置菜单中选对架构和设备型号,这是后续能否正常启动的基础。目标机型如果选错,后面的优化几乎都没有意义。
保留必要网络与存储驱动,按用途添加 LuCI、ZeroTier、多 WAN、代理类组件等。非必须的模块尽量先不加。
第一次构建建议先完整编译一次,确认 toolchain 和 target 都能过,再做增量调整。
make menuconfig
make -j$(nproc) V=s
确认生成的是你需要的镜像类型,例如 sysupgrade、factory 或 initramfs,并区分清楚刷入场景。
优先验证最小版能否稳定启动、联网和进入后台;功能固件建议在通过基础测试后再刷正式版本。
如果你的目标是 ZN-M2 精简固件,插件选择最好围绕用途来做,而不是看到什么都装。下面是一个偏实用的分层思路。
LuCI、SSH、基础网络工具、日志、时区、DNS 与 DHCP 相关组件。
ZeroTier、多 WAN、VPN、流量监控、计划任务、磁盘工具。
SSR / Passwall / OpenClash 同时堆叠时,依赖与体积会明显增加,建议分版本测试。
不需要的无线驱动、USB 驱动、打印支持、文件系统工具、蓝牙与调试包。
真正容易出事故的地方,往往不是编译,而是刷写前这一步没有核对清楚。
优先看依赖缺失、源拉取失败、补丁冲突、磁盘空间不足与线程数过高。
先砍代理类组件、语言包、无线 / USB 驱动、文件系统扩展与调试工具。
回头检查机型、内核、分区适配、引导方式、设备树与关键驱动是否正确。
重点看 feeds 是否安装完整、依赖包是否漏选、内核模块是否与用户态组件匹配。
# 常见清理与重编译思路(示意)
make defconfig
make clean
make -j$(nproc) V=s
# 如需更彻底清理,再按需使用更高级别的清理方式
不建议。先做最小可启动版本,再逐项增加功能,更容易定位问题。
也不建议。内存只是其中一个条件,Flash 容量、驱动兼容、CPU 性能和运行稳定性同样关键。
可以按需精简,但最好在确认启动链和网络基础功能正常后,再做较大幅度裁剪。
理论上可以,但建议分阶段叠加。越多功能堆在一起,依赖冲突与定位成本就越高。