
KernelSU 模块不生效meta-overlayfs 元模块安装与 systemless 覆盖 /system 完全指南【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSUKernelSU 装好之后不少新手会撞上同一个现象模块装上了、也重启了可/system里的文件纹丝不动。十有八九卡点不在模块本身而在于你的设备还没有安装元模块——最典型的就是官方参考实现meta-overlayfs。这篇指南带你搞懂元模块的来龙去脉、用五步装好meta-overlayfs并讲清重启后如何验证、模块system目录的覆盖规则以及换装、排错时的正确姿势。动手前先判断你的模块真的需要元模块吗KernelSU 的架构和传统方案有个关键差异模块挂载逻辑被从内核核心剥离出来放进了可插拔的元模块里。打个白话比方——普通模块负责改什么元模块负责怎么盖上去。没装元模块时KernelSU 根本不会执行挂载动作于是所有依赖system目录的模块装完等于白装涉及/system文件修改的部分自然无法生效。但并不是每个模块都得依赖它。如果你的模块只用到下面这些能力开机脚本post-fs-data.sh、service.sh等sepolicy.rule追加 SELinux 策略system.prop注入系统属性那么这些功能由 KernelSU 核心直接处理不装元模块也能照常工作。换句话说模块不生效是否要归咎于元模块先看模块是不是要动/system里的文件。更多边界说明可参考模块指南。meta-overlayfs 凭什么能动 /system 又不动 /system先解释一下systemless不往分区里写任何字节而是在系统启动时把一层挂载盖在/system之上你看到的文件是模块版本磁盘上的分区却原封不动。meta-overlayfs正是干这件事的官方参考实现它基于内核自带的 OverlayFS完成叠加挂载而不是自己发明一套文件系统支持把模块的实际文件存放在 ext4 镜像modules.img中用镜像承载内容、目录承载元数据节省空间也便于管理生效时机在开机的post-fs-data 阶段该阶段元模块执行挂载脚本把每个已启用模块的system目录逐一分区叠加上去。覆盖范围不止system还包括vendor、product、system_ext、odm、oem五个分区。简单说只要模块处于启用状态重启进桌面时你已经在盖好层的/system上运行了。️ KernelSU 元模块怎么装五步装好 meta-overlayfs元模块的安装路径和普通模块完全一样不需要任何额外命令下载元模块的 ZIP 包例如meta-overlayfs.zip——和普通模块的安装包是同一物种打开 KernelSU Manager 应用——就是你平时管理模块、审批授权的那个应用点击界面右下角的悬浮按钮➕——这是手动安装模块的统一入口在文件选择器中选中刚才下载的 ZIP——确认后内核侧会自动完成安装重启设备——挂载动作发生在启动流程里不重启就永远等不到它生效。重启之后怎么确认元模块真的在工作确认动作都在应用内完成无需翻命令行日志进入 Manager 的Module 页面当前激活的元模块会出现在模块列表里并带有专门的元模块标识——你看到它就说明挂载职责已经有人接管了。另外有一条命令行线索可以交叉验证元模块安装后KernelSU 会创建一个符号链接/data/adb/metamodule - /data/adb/modules/metamodule_id这个固定路径指向的就是当前激活的元模块不管它的 ID 叫什么排查时看一眼链接落在哪个目录即可。模块 system 目录的 4 种行为覆盖 /system 前必懂装好元模块后模块system目录里的内容与系统分区之间会发生下面四种关系做模块或核对效果时都要心里有数你想要的效果模块里怎么做重启后的结果覆盖同名文件在system/下放一个同名文件系统里的同名文件被模块版本取代合并同名目录放一个同名目录两侧目录合并呈现互不丢失删掉原系统文件执行mknod filename c 0 0生成同名占位OverlayFS 将其 whiteout视同已删除/system分区本身不变整目录换掉对目录执行setfattr -n trusted.overlay.opaque -v y 目标路径或在customize.sh中声明REMOVE/REPLACE变量由 KernelSU 自动完成对应的占位或 opaque 设置该目录被模块版本整体替换换句话说验证装没装对最直接的办法就是看模块声明的这些覆盖、删除、替换在重启后是否逐一兑现。⚠️ 一台设备只容得下一个元模块换装与卸载的规矩唯一性是硬约束KernelSU 同一时间只允许存在一个元模块。若你尝试安装第二个会被直接拦截避免两套挂载逻辑打架。卸载的副作用要掂量清楚元模块一旦移除所有模块都不会再被挂载——所有模块修改集体失效。设备本身照常开机只是改动静默退场在换上新的元模块之前这个状态会一直持续。所以想换元模块时不要图省事直接覆盖安装走下面的完整切换流程步骤操作1卸载所有普通模块2卸载当前元模块3重启设备4安装新的元模块5重新安装普通模块6再次重启顺序的意义在于先让旧挂载关系彻底消失再让新元模块从干净状态接管最后把普通模块放回来中间用两次重启保证每一层都落到正确状态。装好了还是不生效按顺序查这两处如果你已经走完上面的流程、也重启过模块修改却依然缺席按这个顺序排查回 Module 页面看元模块在不在列——激活的元模块应当带着标识出现在列表里。看不到它说明安装环节就没成功一切挂载无从谈起检查目标模块目录里有没有skip_mount或disable标记文件——这两个标记只要存在其一该模块的system目录就会被跳过不会被挂载。确认无误后移除对应标记再重启。这两步走完仍不解决的话FAQ 里全新安装后模块不工作一条的结论和本文一致要改/system文件的模块必须依赖元模块其余能力则不依赖先把模块类型和元模块状态对应上再谈后续。延伸方向元模块并非只有一种玩法除meta-overlayfs外还存在无挂载纯脚本型模块设备可以完全跳过挂载开销、Magic MountMagisk 兼容风格、以及完全自定义的实现。各自取舍与开发要求见元模块指南。如果你想自己开发元模块指南里还覆盖了识别属性metamodule1、钩子脚本metamount.sh挂载处理器等完整机制。装好元模块后如何组织模块目录、编写customize.sh、配置各类脚本与属性文件继续对照模块指南 逐项落地即可。【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考