ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

KernelSU:Android 内核级 Root 方案的兼容性、核心特性与源码架构解析

KernelSU:Android 内核级 Root 方案的兼容性、核心特性与源码架构解析 KernelSUAndroid 内核级 Root 方案的兼容性、核心特性与源码架构解析【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU本文以 KernelSU 官方概览文档为骨架系统梳理这一内核级 root 方案的定位与核心特性内核su、Metamodule 模块系统、应用画像逐条解释其 GKI 2.0 / 旧内核 / 双架构的兼容性边界并结合仓库中kernel/目录的 Kbuild、Kconfig 与userspace/用户态组件源码说明各特性在内核侧的真实落点帮助读者快速判断设备可玩性并深入源码。一、KernelSU 是什么KernelSU 是面向 Android 设备的内核级 root 方案a kernel-based root solution for Android。与传统在用户态挂载补丁的方案不同它把 root 能力的核心逻辑放在内核中实现以内核模块或编译进内核的形式存在通过 LSM hook、syscall hook 等机制拦截并授权 root 请求再由管理器应用KernelSU Manager在用户态完成授权界面、模块安装与配置。项目文档提供了多语言版本中文入口见 docs/README_CN.md英文入口见 docs/README.md印尼语版本即 docs/README_ID.md。二、三大核心特性官方文档将 KernelSU 的功能归纳为三点它们分别对应仓库中不同的源码子系统。1. 内核级su与 root 权限管理root 能力由内核直接提供管理器应用请求提权时内核侧完成校验并放行。对应源码集中在kernel/supercall/定义一套超级调用supercall通道管理器与内核之间通过它交换权限管理指令核心分发逻辑见 kernel/supercall/dispatch.ckernel/policy/allowlist.c允许列表管理内核据此判断哪些包名具备 root 资格kernel/hook/lsm_hook.c 与 kernel/hook/setuid_hook.cLSM 与 setuid 层面的权限决策入口。2. Metamodule可插拔的模块挂载基础设施KernelSU 的模块系统建立在Metamodule元模块之上模块的挂载/安装/清理逻辑不写死在内核核心里而是下沉到一个可插拔的特殊模块中。其特点是同一时间只能激活一个metamodule它被安装后内核会在/data/adb/metamodule建立指向其目录的符号链接它提供metamount.sh挂载处理器、metainstall.sh模块安装钩子、metauninstall.sh模块卸载钩子三类特殊脚本官方参考实现meta-overlayfs用 overlayfs ext4 镜像modules.img完成 systemless 挂载所有挂载操作的 source 必须标记为KSU内核的卸载逻辑依赖这一标识没有安装 metamodule 时模块不会被挂载——只跑脚本、sepolicy、system.prop 的模块可以工作但需要修改/system的模块必须依赖 metamodule。更完整的开发者规范钩子脚本、启动阶段执行顺序、meta-overlayfs 双目录架构见 website/docs/guide/metamodule.md。3. App Profile把 root 关进笼子App Profile应用画像允许按应用维度精细控制 root 行为——为单个应用指定独立的 root/非 root 策略而不是全局一刀切。内核侧实现见 kernel/policy/app_profile.c用户态接口定义在 uapi/app_profile.h。用户界面侧的配置流程见 website/docs/guide/app-profile.md。三、兼容性状态重要先判断再动手官方文档给出的兼容性边界非常明确逐条如下正式支持 Android GKI 2.0 设备内核 5.10。这是开箱即用的主场景。旧内核4.14也可用但需要手动编译内核。即老设备不能直接刷现成镜像必须自行把 KernelSU 编进/编成模块集成到设备内核中。正因为是内核级方案WSAWindows Subsystem for Android、ChromeOS、容器化 Android 都可以运行。当前支持arm64-v8a与x86_64两种架构。警告CAUTION近期某些内核版本引入了破坏性变更会导致 KernelSU 在x86_64上失效甚至触发 kernel panic官方提示需关注官网信息。设备自检管理器里的两种状态website/docs/guide/installation.md 说明的判定方法安装管理器应用后显示Unsupported说明你需要自己编译内核KernelSU 不提供也不会提供可刷的 boot.img可参考 website/docs/guide/unofficially-support-devices.md 中的社区支持设备列表显示Not installed设备被正式支持可直接走安装流程。GKI 2.0 时代的两种运行模式自 v0.9.0 起GKI 设备支持两种安装模式详见 website/docs/guide/installation.mdLKM 模式不替换原内核以可加载内核模块方式注入。优点是保留原内核/第三方内核、升级与 OTA 方便可安装到非活动槽位、临时加载不触发 AVB、可临时卸载免重启。注意 LKM 修改的是ramdiskAndroid 13 设备上要打init_boot分区。GKI 模式用 KernelSU 提供的通用内核镜像整体替换设备内核。通用性强如开启 KNOX 的三星设备只能用此模式不依赖官方固件更新。官方建议真机优先 LKM模拟器 / WSA / Waydroid 优先 GKI。刷写前务必了解KMIKernel Module Interface与安全补丁等级两个概念KMI 相同的内核互相兼容SubLevel 不属于 KMI而安全补丁等级回滚防护可能让过老的镜像直接 bootloop。老内核如何接入setup.sh对于需要手动编译的场景仓库提供了自动化脚本 kernel/setup.sh在 GKI 内核源码树中执行它会克隆 KernelSU 仓库、在drivers/下建立kernelsu符号链接并向drivers/Makefile与drivers/Kconfig追加obj-$(CONFIG_KSU) kernelsu/与source drivers/kernelsu/Kconfig两条入口从而让内核构建系统识别 KernelSU--cleanup参数可完整回滚上述修改。四、内核组件的源码布局从 Kbuild 看懂官方三大特性仓库的kernel/目录就是文档所述特性的实现载体。kernel/Kbuild 把整个模块划分为清晰的层次可直接对照阅读目录职责与文档特性的对应kernel/core/init.c模块入口与初始化su基础设施kernel/hook/LSM/setuid/syscall 挂钩含 arm64 与 x86_64 两套 patch 实现内核级su的拦截层kernel/policy/允许列表、应用画像、功能开关App Profilekernel/manager/管理器 APK 签名校验、包变化观察、王座追踪root 资格管理kernel/supercall/内核-用户态超级调用通道管理器通信kernel/selinux/SELinux 策略与 sepolicy 处理root 权限落地kernel/feature/可选特性adb root、内核卸载、隐藏 selinux、su 兼容层等附加能力kernel/infra/符号解析、事件队列、文件包装等基础设施通用支撑构建配置值得关注的细节架构分支kernel/Kbuild 中按CONFIG_ARM64/CONFIG_X86_64分别编译 kernel/hook/arm64/syscall_hook.c 或 kernel/hook/x86_64/syscall_hook.c这与文档x86_64 近期内核存在 panic 风险的警告相印证——两套架构的 hook 实现路径不同风险集中在 x86_64。版本号注入Kbuild 会读取 git 提交数计算版本30000 git 提交数无 git 环境时回退默认值并把管理器的预期签名尺寸与哈希EXPECTED_SIZE/EXPECTED_HASH编译进内核内核侧对管理器做签名校验。Kconfig可以关闭哪些能力kernel/Kconfig 暴露了 5 个配置项其中KSUtristate依赖KPROBES EXT4_FS是总开关其余为可裁剪项配置项作用默认KSU_DEBUG调试模式关KSU_DISABLE_MANAGER关闭管理器集成root 直接替代管理器专属功能关KSU_DISABLE_POLICY关闭应用画像提权一律走默认全 root 策略关KSU_X86_PATCH_SYSCALL_DISPATCHER动态修补 x86_64 加固后的 syscall dispatcher 以支持 syscall hookx86_64 LKM 模式替代内核源码 patch 的方案关这些开关对应 Kbuild 中的ccflags-y宏注入如-DCONFIG_KSU_DISABLE_MANAGER1说明特性裁剪在编译期就完成而非运行时配置。五、用户态组件ksud 与管理器应用内核模块之外仓库还包含完整的用户态部分userspace/ksud/Rust 编写的命令行工具负责 boot/init_boot 镜像修补、模块安装、模块管理、sepolicy 处理等。其安装脚本内嵌于 userspace/ksud/src/installer.sh模块与 metamodule 逻辑见 userspace/ksud/src/metamodule.rs。命令行安装的核心命令形如ksud boot-patch -b boot.img --kmi android13-5.10userspace/ksuinit/init 阶段的配套二进制。manager/app/管理器 Android 应用Kotlin Jetpack Compose双主题 Material/Miuix内嵌 JNI 层manager/app/src/main/cpp/ksu.cc通过 supercall 与内核通信其 UAPI 头文件与 uapi/ 保持同步。构建侧仓库根目录的 justfile 提供两个常用任务build_ksud通过 cross 交叉编译 aarch64-linux-android 的 release 版 ksud和build_manager编译 ksud 后拷贝为libksud.so并用 Gradle 构建管理器 APKscripts/ 下还有 CI 辅助脚本。六、许可证KernelSU 采用双许可结构这一点在文档中明确说明且与代码组织一致kernel/目录下的文件为GPL-2.0-only见 kernel/LICENSE——这与它必须遵循内核模块许可约束有关除kernel/外的其余部分为GPL-3.0-or-later见根目录 LICENSE。七、致谢与安全文档末尾的致谢列出 KernelSU 的技术来源理解这些渊源有助于把握设计取向Kernel-Assisted SuperuserKASKernelSU 核心思想的来源Magisk成熟的 root 工具其镜像修补生态magiskboot、AnyKernel3被 KernelSU 安装流程直接复用genuineAPK v2 签名校验能力对应 kernel/manager/apk_sign.c 的管理器签名验证Diamorphine部分 rootkit 反检测技术。安全漏洞报告流程见 SECURITY.md通过官方安全通告渠道或邮件向维护者披露。社区交流以官方 Telegram 频道为主要渠道文档同时说明翻译工作目前已改由 LLM 处理新语言支持可直接提 PR但不再接受对既有英文/中文翻译的修改。小结KernelSU 文档的主线可以浓缩为一句话内核里做 rootsupercall LSM/允许列表 应用画像挂载逻辑交给 metamodule兼容性覆盖 GKI 2.05.10并允许 4.14 手动编译接入支持 arm64-v8a 与 x86_64。判断设备能否使用先看管理器给出的Unsupported/Not installed状态与 KMI进入源码则从 kernel/Kbuild 的目录分层与 kernel/Kconfig 的裁剪开关两个入口读起即可把文档中的每一项特性对应到具体实现文件。【免费下载链接】KernelSUA Kernel based root solution for Android项目地址: https://gitcode.com/GitHub_Trending/ke/KernelSU创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进