KernelSU 模块改了 /system 没生效?装好 meta-overlayfs 元模块四步搞定
【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU
KernelSU 的模块要改 /system 文件,必须先装元模块。本文带你判断自己是否需要 meta-overlayfs,完整走完安装、验证和排错流程,重启后覆盖、删除、目录替换全部生效。
先自查:你的模块需不需要装元模块
🎯 先花一分钟对照下面的清单,别盲目装:
- 动了 /system 下的文件(替换预装应用、删广告组件、整目录替换):必须装。模块里的
system目录只有元模块挂上去之后才会叠到系统分区上,不装就白写。 - 只跑开机脚本(
post-fs-data.sh、service.sh之类):不用装。脚本由 KernelSU 内核按阶段调度执行,和挂载是两条独立路径。 - 只带
sepolicy.rule或system.prop:不用装。前者由内核直接加载,后者直接按系统属性载入,两者都绕开了挂载环节。
如果你只用后两类能力,可以跳过本文直接干活;模块目录的完整结构参考 模块指南。
开机时发生了什么:OverlayFS 是怎么盖到系统分区上的
KernelSU 核心本身不碰挂载这件事,它把活儿外包给一个可插拔的插件组件——元模块。官方参考实现meta-overlayfs在开机post-fs-data阶段执行metamount.sh(挂载处理脚本),用内核的 OverlayFS(叠加文件系统,可在表面叠加内容而不改原分区)把每个启用模块的system目录依次叠到/system、/vendor、product、system_ext、odm、oem这些分区上。
打个比方:相当于给系统分区盖了一层影子图层。读文件时优先命中影子层,写和删都发生在影子上,底层分区一个字节都不动。
三个高频操作,知道原理后就不难懂:
- 覆盖:同名文件放模块里,读到的是模块版本。
- 删除(whiteout):在模块里执行
mknod filename c 0 0生成同名空占位符,OverlayFS 就把原文件当"已删"处理。 - 整目录替换(opaque):对模块内同名目录执行
setfattr -n trusted.overlay.opaque -v y <TARGET>,该目录不再和底层合并,只保留模块自己的内容。
不想手写占位符的话,在customize.sh里声明REMOVE/REPLACE列表,KernelSU 会自动帮你完成上面两步。更多架构细节看 元模块指南。
四步装好 meta-overlayfs:从下载 ZIP 到重启
📦 全程在 KernelSU Manager 里完成,不需要 adb:
- 备好安装包:下载
meta-overlayfs.zip。同时确认设备上没有其他激活的元模块——KernelSU 同一时间只认一个,再装第二个会被直接拒绝。 - 进安装入口:打开 KernelSU Manager 应用。
- 点装:点页面上的悬浮按钮(➕),在文件选择器里选中刚下载的
meta-overlayfs.zip,确认安装。 - 重启:重启设备并等开机走完。开机过程中
metamount.sh已跑完,各模块的system目录这会儿已经叠到对应分区上了。
装完对号入座:5 个信号确认挂载已生效
- Module 页面里
meta-overlayfs出现在列表中,且带元模块专属标识 - 执行
ls -l /data/adb/metamodule,这个软链接指向元模块目录,是排查"当前到底是谁在挂载"的稳定路径 - 读模块里与系统同名的文件,拿到的是模块侧内容(覆盖生效)
- 你做过
mknod占位符的位置,原文件已不可见,而/system分区本身没被改动 - 标了 opaque 的目录里只剩模块自己的内容(整目录替换生效)
翻车自救:元模块不生效的四种典型场景
⚠️ 按"现象 → 原因 → 处理"顺序对号:
- 装第二个元模块被拒。原因:单实例限制,防止两套挂载方案互相打架。处理:卸载全部普通模块 → 卸载当前元模块 → 重启 → 装新元模块 → 重装普通模块 → 再重启。
- 卸载元模块后所有模块集体罢工。设备照常开机,但挂载能力随之消失,模块改动全部落空。处理:尽快装回一个元模块;没准备好替代品之前,别碰卸载按钮。
- 唯独某个模块挂不上。原因:该模块目录里躺着
skip_mount(跳过挂载)或disable(禁用模块)标记文件。处理:删掉对应标记,再重启一次。 - 装完也重启了,覆盖/删除还是没体现。先回 Module 页面确认
meta-overlayfs真在列表里,再按第 3 条查标记文件;FAQ 里"全新安装后模块不工作"的结论与此一致。
记住这一条主线:meta-overlayfs 元模块是模块改动 /system 的落地开关,装好它、确认它在列表里,覆盖、删除、整目录替换才算真正生效。
【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考