元模块 metamodule 是什么——为什么装完 KernelSU 模块不生效
一个常见困惑的答案
「全新安装后模块不工作」是新版 KernelSU 最高频的问题,答案就四个字:缺元模块。KernelSU 把模块的挂载能力从核心剥离了出去——不装元模块,靠挂载生效的模块就只是躺在磁盘上的文件夹。
元模块是什么
元模块(metamodule)是一种特殊类型的模块,为其他常规模块提供核心基础设施:控制它们的安装与挂载方式。可以理解为「模块的模块」。
- 基础设施角色:常规模块依赖它完成挂载;
- 单实例:同一时刻只允许一个元模块运行,装第二个会被阻止;
- 优先执行:元模块自己的生命周期脚本总是先于常规模块执行;
- 三个专属钩子:metamount.sh(挂载)、metainstall.sh(安装钩子)、metauninstall.sh(清理钩子)。
为什么要这样设计
传统 root 方案把挂载逻辑内置在核心里,这使核心更容易成为检测点、也更难演进。元模块架构的好处:
- 减少检测面:KernelSU 本体不执行挂载;
- 稳定:核心不变,挂载实现可以独立迭代;
- 可替换:社区可以提供不同挂载策略——overlayfs、Magisk 兼容的 Magic Mount、FUSE 方案,乃至「无挂载」;
- 按需取舍:只用脚本类模块的用户可以完全不装元模块,零挂载开销。
用户需要知道的三件事
- 什么时候必须装:模块要修改
/system文件(带 system 目录)时。只用脚本、sepolicy、system.prop 的模块不需要; - 怎么装:与常规模块完全一样,管理器里刷入 zip、重启,见 安装 meta-overlayfs 元模块;
- 怎么卸:卸载元模块会影响所有模块——移除后所有模块不再被挂载,直到你装上另一个。切换元模块的正确顺序:卸载常规模块 → 卸元模块 → 重启 → 装新元模块 → 重装常规模块 → 再重启。
模块开发者视角的钩子与执行顺序属于进阶内容,见 模块开发入门。