资讯详情

资讯详情

给 /system 动刀子:KernelSU meta-overlayfs 元模块三步装好并验证生效

给 /system 动刀子KernelSU meta-overlayfs 元模块三步装好并验证生效【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU你删掉一个预装应用重启它又原样复活。因为 /system 是只读分区文件根本没被动过。KernelSU meta-overlayfs 就是干这个的它把模块里的 system 目录叠加到 /system 等系统分区上覆盖、删除都能做而真实分区一个字节都不改。这篇把底层原理、三步安装、验证与排障一次讲清。先搞清楚它到底做了什么KernelSU 核心不亲自挂载这事交给元模块——负责模块挂载的插件组件。官方参考实现 meta-overlayfs 会在开机 post-fs-data 阶段以 systemless叠加在表面、不改动原始分区方式把所有启用模块的 system 目录叠加到 /system、/vendor、/product、/system_ext、/odm、/oem 等分区上。好比给分区贴了层可撕的膜随时撕掉底层还是原装。核心为什么不肯碰挂载理由简单内核里的挂载点越少被检测到的面越小。挂载策略全交给插件社区想换方案不用 fork KernelSU。元模块脚本的优先级还高于普通模块脚本保证它先跑完。更多架构细节见元模块指南。两个关键机制要记牢whiteout用空占位符让原文件看起来没了生成同名零字节占位符OverlayFS 会把原文件当作已删除。去预装就是靠它实现的。mknod filename c 0 0opaque标记目录不合并打上标记后系统里同名目录不再参与合并你看到的只有模块自己的文件整目录替换常这么干。setfattr -n trusted.overlay.opaque -v y TARGET内核侧判断一个模块挂不挂看的是模块挂载检查逻辑只要存在system目录且没有skip_mount就具备叠加资格。没有元模块的新装环境模块的 system 目录一个都不会被挂载——这是最容易被忽视的前提。我的模块到底需不需要它不是每个模块都得配元模块。判断很简单模块的改动最终要落到系统分区的文件上才需要全是脚本和属性就不需要。对照下表模块用到的能力是否需要为什么覆盖 /system 下的文件换应用、去预装、整目录替换需要system 目录必须靠元模块挂载才生效只用开机脚本post-fs-data.sh、service.sh 等不需要脚本独立执行与挂载无关sepolicy.rule不需要KernelSU 核心直接加载system.prop不需要直接作为系统属性载入一句话模块只用脚本、sepolicy.rule、system.prop 时可以跳过元模块安装。如果你拿不准就看模块目录里有没有 system 这一项有就装没有就省了。目录完整结构参考模块指南。动手三步装好1. 准备下载 meta-overlayfs 的 ZIP 包meta-overlayfs.zip官方参考实现还支持 ext4 镜像读写层。装前务必确认设备上没有其他激活的元模块——KernelSU 同一时间只允许一个激活装第二个会被直接拦下。⚠️2. 安装打开 KernelSU Manager点页面上的悬浮加号按钮选中刚下载的 ZIP确认安装。整个过程约十秒真正的等待在重启那一步。3. 重启重启设备等待开机完成。此时元模块的挂载脚本已在 post-fs-data 阶段执行完毕各模块的 system 目录已叠加到对应分区。装完别急着走确认它真的在工作挂载脚本跑过了可到底成没成逐项过下面六项全过才算数验证目标操作或查看位置预期结果元模块标识KernelSU Manager 的 Module 页面meta-overlayfs 在列表里且带元模块标识当前激活的是谁查看符号链接/data/adb/metamodule指向元模块目录实现见元模块管理同名覆盖读一个与系统同名的文件内容是模块侧的whiteout 删除mknod filename c 0 0生成的同名占位符处原文件不可见/system 分区未变opaque 整目录替换执行setfattr -n trusted.overlay.opaque -v y TARGET后该目录内容全部来自模块侧懒人做法在customize.sh里声明REMOVE/REPLACE列表占位符与 opaque 标记自动生成符号链接这项最实用不管元模块 ID 怎么变这条路径永远指向当前激活的那个排查问题时先看它。翻车了怎么办四个高频问题逐个拆装第二个元模块被拒现象安装第二个元模块时被直接拦下。 根因单实例限制防止两套挂载方案打架这是设计出来的保护。 处理卸载所有普通模块 → 卸载当前元模块 → 重启 → 装新的 → 重装普通模块 → 再重启。卸载元模块后全部模块罢工现象设备照常开机但模块做的改动全部失效。 根因卸掉的瞬间所有模块都丢掉叠加能力。 处理尽快装一个新的元模块不换就不轻易卸载。某个模块不挂载现象元模块在列只有这个模块的 system 文件夹没被叠上去。 根因模块目录里存在skip_mount跳过挂载或disable禁用模块标记文件。 处理删掉对应标记再重启。装完 meta-overlayfs 仍不生效现象重启了好几回覆盖和删除都没体现。 根因多半是元模块没进列表或踩了上一条的 skip_mount 标记。 处理先回模块页面确认元模块在列再查标记FAQ 里为什么全新安装后模块不工作的回答与此一致。元模块就是模块改动 /system 的开关。装好它、确认它在列挂载自然发生。【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →