KPM 格式模块加载——APatch 独有能力
什么是 KPM
KPM 全称 Kernel Patch Module,是一种内核级补丁模块格式。它由 APatch 项目引入,与普通 root 模块不同:
- 普通模块:在用户态工作,修改系统文件、注入 prop、启动脚本
- KPM 模块:在内核态工作,直接对内核代码进行热补丁修改
KPM 模块可以实现普通模块做不到的事情——比如绕过内核的某些限制、修改内核参数、加载内核驱动等。
KPM 的应用场景
常见的 KPM 模块:
- KPatch-Next:内核热补丁框架,允许在运行中修改内核函数
- 性能调优模块:直接修改内核调度器行为
- 兼容性补丁:修复某些设备的内核 bug
KsuWebUI 中的 KPM 支持
KsuWebUI 对 KPM 模块的支持主要体现在:
- 列表显示:KPM 模块和普通模块在同一个列表中,但会有特殊标识区分
- 加载 / 卸载:通过 KsuWebUI 的界面触发 KPM 模块的加载和卸载
- 状态显示:可以看到 KPM 模块当前是否已加载到内核中
KPM 与普通模块的区别(KsuWebUI 视角)
| 特性 | 普通模块 | KPM 模块 |
|---|---|---|
| 加载时机 | 系统启动时 | 可运行时加载 |
| 需要重启 | 启停通常需要重启 | 可热加载 / 热卸载 |
| 运行层级 | 用户态 | 内核态 |
| KsuWebUI 操作 | 开关 + 重启 | 加载 / 卸载按钮 |
使用注意
KPM 模块直接操作内核,风险比普通模块大得多:
- 加载不兼容的 KPM 可能导致内核 panic(手机直接重启)
- KPM 模块通常不支持热卸载——卸载需要重启
- 安装多个 KPM 模块时要注意它们之间的兼容性
建议对内核级操作不太熟悉的用户谨慎使用 KPM 模块,先用普通模块试试看能不能满足需求。
查看 KPM 模块状态
在 KsuWebUI 中,KPM 模块详情页会显示:
- 当前是否已加载到内核
- 内核日志中的相关输出
- 模块版本和适配的内核版本
这些信息对于排查 KPM 模块问题很有帮助。