Skip to content

Hybrid Mount - Rust 编写的 Android 混合挂载元模块 | 旋武社区 Rust 开源项目推荐

发表于:2026-10-29
Rust 新闻

摘要

本期给大家推荐一款用 Rust 实现的开源元模块 —— Hybrid Mount。它适配 KernelSU、APatch,启动时自动扫描系统内所有模块,根据自定义规则,把不同路径分流到 OverlayFS、Magic Mount、VFS 三大后端,将挂载控制粒度细化到单个模块乃至文件路径。

玩 Android Root 模块的朋友应该都有体会:换字体、修改系统配置、加载系统扩展,都离不开模块挂载。但多模块共存时痛点很明显:不同模块适合的挂载方式不一样,OverlayFS、Magic Mount 各有适用场景,甚至同一个模块内不同文件 / 目录,也需要分开采用不同挂载策略。

本期给大家推荐一款用 Rust 实现的开源元模块 —— Hybrid Mount。它适配 KernelSU、APatch,启动时自动扫描系统内所有模块,根据自定义规则,把不同路径分流到 OverlayFS、Magic Mount、VFS 三大后端,将挂载控制粒度细化到单个模块乃至文件路径。

图1

01 Hybrid Mount 到底解决了什么问题? ​

Hybrid Mount 的核心设计:一套统一规则,调度多种挂载后端。 你可以先设置全局默认挂载策略,再单独为某个模块覆盖配置;追求更精细控制时,还能针对单独文件、目录自定义路径规则。

规则优先级清晰:路径规则 > 模块默认策略 > 全局默认策略。 模块级、路径级规则支持设置 ignore,让指定内容跳过挂载注入,不参与挂载流程。

举个例子:全局默认全部模块使用 OverlayFS;单独指定 A 模块使用 Magic Mount;再针对 A 模块里某一条子路径,单独切回 OverlayFS。灵活按需分配挂载方案,具体选型可结合模块内容与你的设备内核环境。

冲突自动检测 ​

多后端混合挂载很容易出现文件路径冲突。Hybrid Mount 在挂载规划阶段就做校验:同一路径只能交给一个后端,文件类型冲突、.replace 冲突会提前报错。OverlayFS 和 Magic Mount 可以共用普通目录作为目录节点,但不会把同一个文件重复注入两套挂载系统。

三大挂载后端简介 ​

  • OverlayFS:以叠加文件系统的方式合并模块内容,支持 tmpfs、ext4 两种存储模式。
  • Magic Mount:依靠绑定挂载处理文件、目录、软链接,原生支持 .replace 和 whiteout,可实现目录替换、隐藏原有系统文件等经典模块需求。
  • VFS:不同于 OverlayFS,它会把规则通过 keyring 下发到 hybridmount 专属内核子系统,在内核层面完成注入,没有传统意义上的挂载点。该子系统由 NoMount 分支独立演进,和原版 NoMount 内核、命令行工具互不兼容。

VFS 能力强依赖内核支持。默认配置下,VFS 不可用时,对应规则自动降级为 ignore;如果开启严格模式且启用 VFS 规则,启动失败会直接报错。就算有预编译内核模块,也不代表所有设备都能完美兼容。

02 Rust 如何实现底层挂载流程? ​

Hybrid Mount 用户态主体使用 Rust 开发,WebUI 基于 Vue3,VFS 内核子系统使用 C 语言编写。对于 Rust 开发者来说,这是一个学习类型系统、错误处理、Linux 系统调用结合底层系统开发的优质实战项目。

先规划,再执行 ​

启动链路:读取配置 → 扫描模块 → 探测 VFS 可用性 → 构建挂载计划 → 准备存储 → 各后端执行挂载 → 保存运行状态。 所有模块内容会先统一生成挂载计划,跨后端冲突由规划器提前校验;执行器只负责落地计划。

优势:规则校验和系统调用执行解耦。新增路径规则时,可预先验证计划是否符合预期,区分「配置规则错误」和「设备底层执行异常」,排查问题更清晰。

只读源目录 + 事务式回滚 ​

模块原始目录全程只读,临时写入操作全部放在运行目录。 一旦挂载阶段发生失败,会触发事务回滚,同时保留故障快照,可在 WebUI 查看。保证出错后资源能干净清理,方便定位问题。

内核模块加载还加入熔断标记:加载前写入标记,加载成功则清除。如果加载过程内核崩溃,标记会保留,阻止后续自动重试,避免反复触发同一起内核故障。当然最终修复仍需要定位根本原因。

工程层面:强制规范错误处理 ​

项目大量使用 Rust Result + 自定义错误类型传递故障信息;工作区 lint 规则禁用 unwrap / expect 这类不安全写法。 格式检查、Clippy 静态检查、单元测试、Android 目标编译校验、WebUI 与模块脚本检查,多层保障代码质量。

Rust 的所有权、类型系统能有效管控用户态资源,但挂载、内核模块属于底层接口。CI 只能验证代码编译,真机内核 ABI、启动稳定性、模块兼容性,仍然需要真机实测。

03 Vue3 WebUI:可视化管理挂载规则 ​

项目自带 Vue3 WebUI,内置两套 UI 主题:Material Design 3、Miuix。 集成状态页、配置页、模块管理页、关于页,所有挂载规则与运行状态统一在网页端管理。

你可以直观查看后端统计、当前挂载点、启动报错;批量管理模块和自定义路径规则。 如果 VFS Provider 不可用,界面会自动隐藏相关选项与统计数据,已保存的规则不会丢失。修改配置后需要重启模块生效,保存配置后务必重启验证实际挂载效果。

图2

图3

04 上手体验:从简单配置开始 ​

Hybrid Mount 适合 KernelSU / APatch 用户,尤其需要精细化自定义挂载策略的玩家;同时也是 Android 系统、Rust 开发者的开源实践项目。

✅ 上手步骤 ​

  1. 在 GitHub Releases 下载模块 ZIP 包,阅读使用说明,在 KernelSU/APatch 管理器刷入;首次安装可通过音量键选择默认后端。
  2. 打开 WebUI,先给单个模块设置默认挂载方式,按需添加路径规则。
  3. 保存配置,重启设备,查看启动状态和模块生效情况;出现异常可导出 bugreport 排查。

架构支持:用户态二进制支持 arm64、armv7、x86_64、riscv64;预编译内核模块仅支持 arm64 目标,实际能力以文档和设备内核为准。

⚠️ 温馨提示 ​

使用前建议具备基础排障能力。遇到异常优先禁用 / 卸载模块后重启;提交反馈时带上版本号、KernelSU/APatch bugreport 和复现步骤。

05 开源共建,欢迎参与 ​

项目代码、文档、构建脚本全部开源维护。 许可证:Rust 核心代码与模块脚本 GPL-3.0-only;WebUI Apache-2.0;内核组件 GPL-2.0-only,详细信息可查看仓库第三方说明文档。

不同背景开发者都可以参与:

  • Rust 开发者:可参与规则规划、错误逻辑、回归测试开发
  • Android / 内核开发者:贡献设备兼容性测试、复现问题案例
  • 前端 / 普通用户:完善 WebUI 界面、翻译文档、补充使用教程 高质量故障日志、可复现路径规则、标注设备型号 + 内核版本的测试记录,对项目迭代价值巨大。 功能建议可以在 Issue 讨论;代码、测试、文档优化欢迎提交 PR。

项目地址:https://xuanwu.openatom.org/articles/project/hybrid-mount


旋武社区 Rust 开源项目推荐栏目,持续发掘国内优质 Rust 开源项目。Hybrid Mount 已收录至旋武社区项目库,欢迎大家前往社区官网项目页(https://xuanwu.openatom.org/project )查阅更多项目信息,也欢迎向我们投稿推荐有意思的 Rust 项目。

旋武开源社区: https://xuanwu.openatom.org

致力于在中国普及和发展 Rust 编程语言,培育中国 Rust 专家,繁荣 Rust 生态。