☰
3 步装好 meta-overlayfs 元模块:KernelSU 模块挂载从原理到排错的完整指南
2026/9/28 3:52:39 网站建设 项目流程

3 步装好 meta-overlayfs 元模块:KernelSU 模块挂载从原理到排错的完整指南

【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU

KernelSU 的模块挂载能力由名为meta-overlayfs 元模块的官方参考实现提供。它让模块里的system目录以 systemless 方式叠加到/system分区之上,无需真正改动系统分区。本文按"先看懂原理 → 照做安装 → 验证生效 → 排错避坑"的路径带你走完整个流程,并给出换装、卸载的限制说明。

装好之后,你的模块会发生什么变化

先看清楚目标状态,操作时心里才有底:

  • 重启后,元模块在启动流程的post-fs-data 阶段执行挂载,把所有已启用模块的system目录以 OverlayFS 叠加到系统分区;
  • 支持system、vendor、product、system_ext、odm、oem共 6 个分区的覆盖;
  • 官方实现meta-overlayfs还支持用 ext4 镜像(modules.img)存放模块文件,节省存储空间;
  • 模块声明的文件替换、目录合并、文件"删除"都会在开机后按预期体现出来。

哪些模块能力依赖元模块?只有"修改/system文件"这一项。模块里的启动脚本(post-fs-data.sh、service.sh等)、sepolicy.rule、system.prop都不需要元模块就能工作。如果你的模块只用这三类能力,可以跳过安装。详见 模块指南 和 FAQ。

一分钟看懂元模块机制

普通 root 方案把挂载逻辑写死在核心里,而 KernelSU 把这部分抽成了可插拔的元模块(metamodule):

对比项核心(KernelSU 本体)元模块
职责提供 root 与模块管理基础决定模块"如何被安装和挂载"
安装数量只有一份同一时间仅允许一个
脚本优先级普通模块脚本元模块脚本先于普通模块脚本执行

这样做的好处是:核心保持精简、不易被检测,同时社区可以自行实现不同的挂载策略(无挂载、Magic Mount、自定义 VFS 等)。对普通用户来说,装一个meta-overlayfs就够用。

元模块的判定依据是其module.prop中的metamodule=1属性,并可携带metamount.sh(挂载处理器)、metainstall.sh(安装钩子)、metauninstall.sh(清理钩子)三个钩子脚本。开发向的细节参见 元模块指南。

安装 meta-overlayfs:照做即可的 5 步流程

元模块的安装方式和普通模块完全相同,全程在 KernelSU Manager 应用内完成:

  1. 下载元模块的 ZIP 包(例如meta-overlayfs.zip)到手机存储;
  2. 打开 KernelSU Manager 应用;
  3. 点击右下角的悬浮按钮(➕);
  4. 在弹出的选择器中选中刚才下载的 ZIP 文件;
  5. 等待安装完成后重启设备。

重启这一步不能省:挂载逻辑只在启动时执行,装完不重启等于没装。

如何确认元模块真的生效了

验证分两层:先看"装没装上",再看"干没干活"。

第一层:应用内确认身份。打开 Manager 的Module 页面,当前激活的元模块会出现在模块列表中,并带有专属的元模块标识。如果列表里看不到它,说明安装未成功,回到上一步重来。

第二层:观察system目录的实际行为。装好meta-overlayfs后,模块里system目录的规则如下(完整说明见 模块指南):

你的诉求模块里该做什么
替换同名文件放入同名文件即可,自动覆盖
合并同名目录目录自动合并,无需额外操作
"删除"系统文件用mknod <filename> c 0 0生成同名占位,由 OverlayFS 做 whiteout,/system分区本身不动
整目录替换创建同名目录并执行setfattr -n trusted.overlay.opaque -v y <TARGET>;或在customize.sh中声明REMOVE/REPLACE变量交给 KernelSU 自动处理

所以最直接的验证方式是:挑一个你模块里声明的覆盖/删除/替换项,重启后确认它是否按预期出现。

注意事项:限制、副作用与标记文件集中说明

这一节把容易踩的坑全部收拢在一起,操作前扫一眼能省不少返工时间。

⚠️同一时间只能装一个元模块。若设备上已有元模块(例如迁移配置带来的),再装第二个时 KernelSU 会直接阻止安装以避免冲突。需要切换时,按官方给出的顺序操作:

  1. 卸载所有普通模块;
  2. 卸载当前元模块;
  3. 重启;
  4. 安装新的元模块;
  5. 重新安装普通模块;
  6. 再次重启。

⚠️卸载元模块的副作用波及所有模块。卸载后、换装新元模块之前,没有任何模块会被挂载——涉及/system修改的内容全部失效,设备本身仍可正常开机。如果你只是临时卸载,请对"模块集体静默"有心理准备。

排查用的小知识:

  • 元模块安装后,KernelSU 会建立符号链接/data/adb/metamodule -> /data/adb/modules/<metamodule_id>,这条与 ID 无关的稳定路径可以随时用来确认当前激活的是哪个元模块;
  • 模块目录里若存在skip_mount或disable标记文件,该模块的system目录就不会被挂载。模块"装了没反应"时,先检查这两个标记是否存在。

重启后仍不生效?按这个顺序排查

FAQ 对"全新安装后模块不工作"的结论与本文一致:需要改/system文件的模块必须依赖元模块,其余能力不依赖。据此按顺序过一遍:

  1. 进 Module 页面确认元模块出现在列表里且带元模块标识;
  2. 确认目标模块目录中没有skip_mount、disable标记文件;
  3. 确认确实执行了安装后的重启(挂载只在开机时发生);
  4. 若以上都满足仍不生效,检查模块system目录结构本身是否符合 模块指南 的规范。

元模块的其他实现(无挂载、Magic Mount、自定义方案)以及开发所需的钩子脚本,参见 元模块指南;模块目录结构、启动脚本等安装后配置,继续参考 模块指南。

【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询