【免费下载链接】BakaSU
A KernelSU based root solution for Android
BakaSU是一款基于 KernelSU 的 Android root 方案,它的最大特色之一就是基于 Metamodule(元模块)的可插拔模块系统。简单说:你可以不刷入任何"模块容器",而是通过安装一个 Metamodule 模块,把整个模块的挂载、安装、卸载流程变成可自定义的脚本——普通模块的生效方式由它接管。本文用新手能懂的方式,讲清楚 BakaSU 的 Metamodule 是什么、如何安装、如何管理,以及出问题时该怎么排查。
一、Metamodule 是什么?为什么需要它 🤔
传统 KernelSU 方案里,普通模块默认通过 OverlayFS(叠加挂载)方式修改系统文件。BakaSU 则把"模块怎么挂载、怎么安装"这件事抽象成了一个特殊模块——Metamodule(元模块):
- 它是一个标记为
metamodule=1的普通模块(写在module.prop里),存放在/data/adb/modules/{模块id},并通过/data/adb/metamodule软链接指向它; - 它可以自带三个"钩子脚本",接管普通模块的生命周期:
| 脚本 | 作用 |
|---|---|
metainstall.sh | 替代默认安装脚本,自定义普通模块的安装流程 |
metauninstall.sh | 在模块被删除前执行,可拿到环境变量MODULE_ID |
metamount.sh | 开机时执行,自定义所有模块的挂载方式 |
这样,像 Zygisk、ReZygisk 这类需要深度定制挂载逻辑的功能,就能以"一个模块"的形式存在,免刷内核、免刷 boot,装一个模块即可生效,删掉它即恢复默认行为。
相关源码:Metamodule 的识别、软链接与脚本调度都实现在 userspace/ksud/src/android/module/metamodule.rs。
二、BakaSU 模块系统的工作机制 🔍
理解下面三条规则,就理解了 BakaSU 模块系统:
- 默认路径:没有 Metamodule 时,模块安装走官方内置安装器 userspace/ksud/src/android/module/installer.sh(兼容 Magisk 风格,支持
customize.sh、SKIPUNZIP、$REPLACE、$REMOVE等约定)。 - 接管路径:存在启用状态的 Metamodule 且带
metainstall.sh时,普通模块安装会自动改用 Metamodule 的脚本,而不是默认安装器(见 get_install_script)。 - 安全机制:当 Metamodule 自身有待定的更新/删除/禁用操作(存在
update、remove或disable标记文件)时,BakaSU 会阻止安装新的普通模块,并提示"请先重启设备应用变更",避免两种安装逻辑混用导致系统异常(见 check_install_safety)。
另外要注意:同一时间只能有一个 Metamodule。安装新的 Metamodule 前,必须先卸载旧的、重启后再装(安装拦截逻辑)。
三、安装 Metamodule 模块:一键安装步骤 📦
安装入口有两种,任选其一:
方式 1:管理器 GUI 安装(推荐新手)
- 打开 BakaSU 管理器,进入"模块"页面;
- 点击"安装模块",选择 Metamodule 的 ZIP 包;
- 管理器会先解压并检查
module.prop中的id与metamodule标记,再执行安装脚本,完成后建立/data/adb/metamodule软链接; - 重启设备,让 Metamodule 正式接管模块系统。
管理器界面还会显示当前 Metamodule 状态(未安装 / 已移除 / 已禁用 / 生效中),见 ModulePage.kt。
方式 2:命令行安装
用 root shell 执行ksud(安装流程实现于 install_module_to_system):
ksud module install /storage/emulated/0/Download/mymetamodule.zip安装成功的标志:输出Module installed successfully!,且/data/adb/metamodule软链接已创建。
四、管理 Metamodule:启用、禁用与卸载 🧰
Metamodule 就是一个普通模块,所有模块命令同样适用(CLI 定义见 userspace/ksud/src/android/cli.rs):
# 列出所有模块(含 metamodule 模块) ksud module list # 禁用 Metamodule(模块目录生成 disable 标记,回退到默认安装器) ksud module disable <模块id> # 重新启用 ksud module enable <模块id> # 标记卸载(重启后真正删除,并自动清理软链接) ksud module uninstall <模块id> # 反悔:撤销卸载标记 ksud module undo-uninstall <模块id>几个实用细节:
- 禁用而非卸载:Metamodule 处于
disable状态时,系统会跳过它的metainstall.sh/metamount.sh并回退到默认安装器(check_metamodule_script),适合"临时关掉"的场景; - 卸载时会先回调 Metamodule:删除普通模块前,会先执行 Metamodule 的
metauninstall.sh(带上MODULE_ID环境变量),再执行模块自身的uninstall.sh(prune_modules),保证自定义挂载能被正确清理; - 卸载 Metamodule 本身时,软链接
/data/adb/metamodule会被自动移除。
五、开机执行顺序:Metamodule 何时生效 ⚙️
重启后,BakaSU 在启动早期按固定顺序处理模块,Metamodule 的钩子被安排在关键节点:
post-fs-data阶段:先执行 Metamodule 的post-fs-data.sh(优先级最高),再执行各普通模块的同名脚本;- 挂载阶段:执行 Metamodule 的
metamount.sh(环境变量MODULE_DIR指向模块目录); - 其余阶段(
service、boot-completed等)同样"Metamodule 优先"。
早期启动的调度见 init_event.rs,晚加载(LKM 模式)路径见 late_load/mod.rs。
这意味着:Metamodule 的脚本可以比普通模块更早介入系统,是它"免刷也能改系统"的关键。
六、常见问题排查清单 🛠️
| 现象 | 原因与解决 |
|---|---|
| 装普通模块时提示"Installation Blocked / 请先重启" | Metamodule 有待定的更新/删除/禁用标记。重启设备让变更落地后再装即可 |
| 提示"A metamodule is already installed" | 系统已存在其他 Metamodule。先卸载旧的、重启,再安装新的 |
| 自定义脚本没执行 | 确认 Metamodule 处于启用状态(无disable标记),脚本名为metainstall.sh/metauninstall.sh/metamount.sh且位于模块根目录 |
| 想看脚本执行日志 | 在/data/adb/ksu/下创建metamodule.debug标记文件,日志会写入/data/adb/ksu/log/(metamodule_mount.out.log等),路径定义见 defs.rs |
七、小结:BakaSU 模块系统一图流 🎯
- 装 Metamodule= 给模块系统换一个"可自定义的引擎";
- 三大脚本各司其职:
metainstall.sh(安装)、metauninstall.sh(卸载回调)、metamount.sh(开机挂载); - 所有操作遵循"标记 + 重启"的安全模型,禁用/卸载/更新都可回退,对新手非常友好;
- 核心源码集中在 userspace/ksud/src/android/module/ 目录:metamodule.rs、mod.rs、installer.sh,感兴趣的进阶用户可以深入阅读。
只要掌握"安装 → 重启 → 管理 → 排障"这四步,你就能用 BakaSU 的 Metamodule 模块系统,在不刷 boot、不刷内核的前提下灵活定制自己的模块环境了。
【免费下载链接】BakaSU
A KernelSU based root solution for Android
相关推荐
如何高效管理AtlasOS模块系统:扩展与优化Windows性能的完整指南
如何高效管理AtlasOS模块系统:扩展与优化Windows性能的完整指南 AtlasOS是一款开源轻量级Windows优化工具,旨在通过模块化系统提升系统性能
操作系统隐私合规KernelSU Metamodule(元模块)完全指南:模块系统基础设施的插件化架构与开发实战
KernelSU Metamodule(元模块)完全指南:模块系统基础设施的插件化架构与开发实战 Metamodule 是 KernelSU 引入的一种插件化扩
操作系统驱动开发palera1n 越狱 iPad mini 4:手把手完整操作指南
palera1n 越狱 iPad mini 4:手把手完整操作指南 palera1n 是专为 A8~A11 老设备打造的开源越狱工具,利用 bootROM 里的
CLI固件
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考