<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Gki on LiaoKE</title>
        <link>https://blog.liao-ke.com/tags/gki/</link>
        <description>Recent content in Gki on LiaoKE</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh</language>
        <lastBuildDate>Thu, 05 Mar 2026 22:34:39 +0800</lastBuildDate><atom:link href="https://blog.liao-ke.com/tags/gki/index.xml" rel="self" type="application/rss+xml" /><item>
            <title>Android Root 的演进与抉择</title>
            <link>https://blog.liao-ke.com/p/android-root/</link>
            <pubDate>Tue, 09 Dec 2025 00:00:00 +0000</pubDate>
            <guid>https://blog.liao-ke.com/p/android-root/</guid>
            <description>&lt;h1 id=&#34;android-root-发展历程和方案分析&#34;&gt;Android Root 发展历程和方案分析&#xA;&lt;/h1&gt;&lt;p&gt;Android Root 顾名思义即给安卓系统获取根权限，让用户拥有系统级权限，极大提升系统可玩性。&lt;br&gt;&#xA;一般来说，Root 需要先解锁 bootloader（BL），解锁的目的，是让用户有权限刷写各个分区，从而能：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;更换系统（system / vendor / product 等）&lt;/li&gt;&#xA;&lt;li&gt;更换内核（boot ）&lt;/li&gt;&#xA;&lt;li&gt;注入 Root / 模块方案&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;注意：解锁 BL ≠ 必然 Root&lt;/strong&gt;，也可以只刷机不 Root。&lt;br&gt;&#xA;主流 Root 方案按时间大致可以排成这样：&lt;/p&gt;&#xA;&#xA;    &lt;blockquote&gt;&#xA;        &lt;p&gt;&lt;strong&gt;KingRoot → SuperSU → Magisk → SKRoot（小众） → KernelSU → APatch&lt;/strong&gt;&lt;/p&gt;&#xA;&#xA;    &lt;/blockquote&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;一root-实现思路按技术路线分类&#34;&gt;一、Root 实现思路：按技术路线分类&#xA;&lt;/h2&gt;&lt;h3 id=&#34;用户态-rootuser-space-root&#34;&gt;用户态 Root（User-space Root）&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;不直接修改内核代码&lt;/li&gt;&#xA;&lt;li&gt;修改 &lt;strong&gt;boot.img → ramdisk → init 脚本&lt;/strong&gt;，在早期启动阶段插入自己的用户态 root 程序&lt;/li&gt;&#xA;&lt;li&gt;通过 &lt;strong&gt;用户态守护进程&lt;/strong&gt; 管理权限（例如 &lt;code&gt;magiskd&lt;/code&gt;）&lt;/li&gt;&#xA;&lt;li&gt;一般依赖一个 &lt;strong&gt;管理 App&lt;/strong&gt; 配合使用（授权弹窗、模块管理等）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;代表方案：Magisk&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：对内核无强依赖，兼容面最广&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;缺点&lt;/strong&gt;：本质不在内核，某些内核安全策略/厂商定制下会有局限&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;内核态-rootkernel-space-root&#34;&gt;内核态 Root（Kernel-space Root）&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;直接在内核中 &lt;strong&gt;Hook 权限相关函数 / LSM / syscall&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;在内核层修改 &lt;code&gt;cred&lt;/code&gt;、&lt;code&gt;capabilities&lt;/code&gt; 等结构，获得最高权限&lt;/li&gt;&#xA;&lt;li&gt;部分方案需要内核源码（早期 KernelSU），部分不需要（APatch、SKRoot）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;代表方案：KernelSU、APatch、SKRoot&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：权限层级最高，可做更“隐蔽”和细粒度的控制&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;缺点&lt;/strong&gt;：与内核版本/厂商定制强相关，适配成本较高&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;漏洞-rootexploit-based-root&#34;&gt;漏洞 Root（Exploit-based Root）&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;利用系统或内核漏洞临时/半永久获取 Root&lt;/li&gt;&#xA;&lt;li&gt;通常依赖特定 Android / 内核版本，系统一更新就失效&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;代表方案：KingRoot 等一键 Root 工具&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;优点&lt;/strong&gt;：用户体验简单，历史上对锁 BL 的机器也有机会&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;缺点&lt;/strong&gt;：完全吃漏洞红利，维护性差，安全风险高&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;二按时间线看典型方案&#34;&gt;二、按时间线看典型方案&#xA;&lt;/h2&gt;&lt;h3 id=&#34;kingroot漏洞驱动的早期-root&#34;&gt;KingRoot：漏洞驱动的早期 Root&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;主要活跃在 &lt;strong&gt;Android 4.4 ~ 6.0&lt;/strong&gt; 时代&lt;/li&gt;&#xA;&lt;li&gt;通过 &lt;strong&gt;内核 / 系统漏洞&lt;/strong&gt;（如提权漏洞）获得 Root&lt;/li&gt;&#xA;&lt;li&gt;多为 &lt;strong&gt;临时或半永久 Root&lt;/strong&gt;，重启或 OTA 后经常失效&lt;/li&gt;&#xA;&lt;li&gt;随着漏洞不断被修复，这类方案很快被淘汰&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：&lt;br&gt;&#xA;完全基于漏洞的时代产物，如今更多是历史意义。&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;supersusystem-分区注入-su-的经典方案&#34;&gt;SuperSU：system 分区注入 su 的经典方案&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;思路：直接修改 &lt;code&gt;system.img&lt;/code&gt;，在 &lt;code&gt;/system/bin&lt;/code&gt; 或 &lt;code&gt;/system/xbin&lt;/code&gt; 注入 &lt;code&gt;su&lt;/code&gt; 二进制&lt;/li&gt;&#xA;&lt;li&gt;通过 &lt;code&gt;su&lt;/code&gt; 的 setuid 机制实现提权&lt;/li&gt;&#xA;&lt;li&gt;典型适用 &lt;strong&gt;Android 4.x ~ 6.x&lt;/strong&gt;，system 还比较“好改”的时代&lt;/li&gt;&#xA;&lt;li&gt;随着：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;system 分区逐渐只读 / 受更严格完整性保护&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Magisk 引入 systemless Root&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;SuperSU 很快失去优势。&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;定位&lt;/strong&gt;：&lt;br&gt;&#xA;传统“改 system.img 注入 su”的代表&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;magisk用户态-systemless-root-的时代&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/topjohnwu/Magisk&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;Magisk&lt;/a&gt;：用户态 systemless Root 的时代&#xA;&lt;/h3&gt;&lt;p&gt;Magisk 把 Root 方式拉到了一个新高度。&lt;/p&gt;&#xA;&lt;h4 id=&#34;核心实现&#34;&gt;核心实现&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;修改 &lt;strong&gt;boot.img → ramdisk → init&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用 &lt;code&gt;magiskinit&lt;/code&gt; 接管早期启动，作为“第一个用户态进程”&lt;/li&gt;&#xA;&lt;li&gt;启动 root 守护进程 &lt;code&gt;magiskd&lt;/code&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/system/bin/su&lt;/code&gt; 在 Magisk 中 &lt;strong&gt;只是前端/中转&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;解析参数 → 连接 &lt;code&gt;magiskd&lt;/code&gt; → 由 &lt;code&gt;magiskd&lt;/code&gt; 以 root fork/exec 真正的命令&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;提权的决策和执行&lt;/strong&gt;在 &lt;code&gt;magiskd&lt;/code&gt; 中完成，而不是在 &lt;code&gt;su&lt;/code&gt; 本身&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;不在 system 分区直接写入文件，做到 &lt;strong&gt;systemless&lt;/strong&gt;&lt;br&gt;&#xA;（实际上是用挂载/覆盖的方式“虚拟出”修改过的系统视图）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;关键特点&#34;&gt;关键特点&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;首创 magic mount 模块系统&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;在不实际修改系统文件的情况下，实现对 &lt;code&gt;/system&lt;/code&gt;、&lt;code&gt;/vendor&lt;/code&gt; 等目录的文件覆盖&lt;/li&gt;&#xA;&lt;li&gt;极大提升“玩机模块生态”&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;强兼容性&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;只要能改 boot.img中的init脚本，大多数内核版本都能使用&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;依赖管理 App&lt;/strong&gt;（Magisk App）：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;管理模块、处理 su 授权弹窗、升级/卸载&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;局限&#34;&gt;局限&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;纯用户态方案，需要搭配app&lt;/li&gt;&#xA;&lt;li&gt;模块生态与内核态模块（如 APatch 的 KPM ）相比，在&lt;strong&gt;内核能力利用上&lt;/strong&gt;略逊一筹&lt;/li&gt;&#xA;&lt;li&gt;不支持kernelsu后来的模块webui功能,需要额外安装app解决&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;skroot早期内核-root--su-环境注入的探索者&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/abcz316/SKRoot-linuxKernelRoot&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;SKRoot&lt;/a&gt;：早期“内核 Root + su 环境注入”的探索者&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;时间上早于目前主流内核 Root（KernelSU / APatch）&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;无需内核源码&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;离线分析目标内核镜像（ELF/镜像格式）&lt;/li&gt;&#xA;&lt;li&gt;找到如 &lt;code&gt;do_execve&lt;/code&gt; 等关键函数与 &lt;code&gt;task_struct/cred/seccomp&lt;/code&gt; 的偏移&lt;/li&gt;&#xA;&lt;li&gt;插入自定义 shellcode 实现内核级提权&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;号称“&lt;strong&gt;隐藏性很强&lt;/strong&gt;”：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;没有模块系统&lt;/li&gt;&#xA;&lt;li&gt;常见用法是：针对&lt;strong&gt;单个或少数进程&lt;/strong&gt;注入 su 环境&lt;/li&gt;&#xA;&lt;li&gt;通过 PATH / so 寄生等方式，让特定 APP 获得 su，而不是全局暴露&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;适配范围：&lt;strong&gt;大致 3.10 ~ 6.6 内核&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;优点&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;不依赖内核源码，适配范围相对广&lt;/li&gt;&#xA;&lt;li&gt;su 环境可以“定向注入”，对其他进程很隐蔽&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;&lt;strong&gt;缺点&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;没有完整的模块系统，操作较繁琐&lt;/li&gt;&#xA;&lt;li&gt;生态小众，文档和社区支持相对较弱&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;kernelsu主流内核态-root--overlayfs-模块&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tiann/KernelSU&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;KernelSU&lt;/a&gt;：主流内核态 Root + overlayfs 模块&#xA;&lt;/h3&gt;&lt;h4 id=&#34;基本定位&#34;&gt;基本定位&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;代表性的 &lt;strong&gt;内核态 Root&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;在内核中安装 hook（LSM / cred 修改等）&lt;/li&gt;&#xA;&lt;li&gt;在执行 &lt;code&gt;/system/bin/su&lt;/code&gt; 时，内核直接修改进程 cred 实现提权&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;/system/bin/su&lt;/code&gt; 在 KernelSU 中是真正的 &lt;strong&gt;提权入口&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;它触发内核 hook&lt;/li&gt;&#xA;&lt;li&gt;提权是在内核里完成的，而不是转发给某个守护进程（区别于 Magisk）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;技术路径演进&#34;&gt;技术路径演进&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;早期：通过 &lt;strong&gt;谷歌GKI 内核（已被官方淘汰） / 内核源码集成（已被官方淘汰）&lt;/strong&gt; 集成 KernelSU&lt;/li&gt;&#xA;&lt;li&gt;现在主流：&lt;strong&gt;LKM（ko 模块）方式&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;把修改封装成内核模块加载进 GKI 内核&lt;/li&gt;&#xA;&lt;li&gt;同一大版本Gki内核编译出来的ko模块具有一定通用性,所以安装体验上不需要内核源代码&lt;/li&gt;&#xA;&lt;li&gt;但 &lt;strong&gt;ko 的编译仍依赖内核的源码&lt;/strong&gt;，只是这部分由项目方/维护者完成&lt;/li&gt;&#xA;&lt;li&gt;对用户体验来说“不需要自己改源码”&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;模块系统元模块支持overlyfsmagic-mount或者自定义挂载方式&#34;&gt;模块系统：元模块（支持overlyfs/magic mount或者自定义挂载方式）&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;默认使用 &lt;strong&gt;overlayfs&lt;/strong&gt; 实现模块系统(首创)：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;支持对 &lt;code&gt;/system&lt;/code&gt; 等只读分区做“上层覆盖”(模块安装后通常需要 &lt;strong&gt;重启才能生效对/system的修改&lt;/strong&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;对比 Magisk 的 magic mount：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;overlayfs 是内核特性，语义更标准&lt;/li&gt;&#xA;&lt;li&gt;但实时性稍差，多数变更需要重启&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;特点与限制&#34;&gt;特点与限制&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;特点&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;内核态 su：安全模型清晰，可做细粒度 App profile（按 UID/GID 控制权限大小）&lt;/li&gt;&#xA;&lt;li&gt;官方overlayfs 模块系统：结构正规，可与 GKI 思路统一&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;限制&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;对低版本 / 非 GKI 内核兼容性差&lt;/li&gt;&#xA;&lt;li&gt;一些魔改了内核且不开源的gki设备对谷歌官方gki内核支持差,刷了可能开不了机&lt;/li&gt;&#xA;&lt;li&gt;官方更推荐搭配 &lt;strong&gt;5.10以上的 GKI 内核搭配ko模块使用&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;hr&gt;&#xA;&lt;h3 id=&#34;apatch无需源码的-kpimg-内核-root--kpm-模块&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/bmax121/APatch&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;APatch&lt;/a&gt;：无需源码的 kpimg 内核 Root + KPM 模块&#xA;&lt;/h3&gt;&lt;p&gt;在内核 Root 方案中，APatch 的技术路线是目前&lt;strong&gt;最“工程化 + 通用”的一类&lt;/strong&gt;。&lt;/p&gt;&#xA;&lt;h4 id=&#34;核心实现方式&#34;&gt;核心实现方式&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;仍然是 &lt;strong&gt;内核态 Root&lt;/strong&gt;，但：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;不需要内核源码&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;使用 KernelPatch 工具链解析并 patch 目标内核镜像&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;通过在内核镜像中注入 &lt;strong&gt;&lt;code&gt;kpimg&lt;/code&gt;&lt;/strong&gt;：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;修改内核启动入口 / early init 流程&lt;/li&gt;&#xA;&lt;li&gt;把自定义 hook 注入到内核的启动过程&lt;/li&gt;&#xA;&lt;li&gt;重启后，&lt;code&gt;kpimg&lt;/code&gt; 会在早期阶段接管部分逻辑，实现：&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Root 提权&lt;/li&gt;&#xA;&lt;li&gt;内核 hook（supercall / inline hook）&lt;/li&gt;&#xA;&lt;li&gt;启动用户态守护/事件（&lt;a class=&#34;link&#34; href=&#34;cci:7://file:///c:/Users/Administrator/Documents/github/APatch/apd:0:0-0:0&#34; &gt;apd&lt;/a&gt; 等）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;兼容性&#34;&gt;兼容性&#xA;&lt;/h4&gt;&lt;ul&gt;&#xA;&lt;li&gt;内核版本范围广：&lt;strong&gt;3.18 ~ 6.12&lt;/strong&gt;&lt;/li&gt;&#xA;&lt;li&gt;不依赖 GKI，不要求厂商公开内核源码&lt;/li&gt;&#xA;&lt;li&gt;对各家定制内核更友好（因为是直接对内核二进制镜像做符号分析与 patch）&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;特点&#34;&gt;特点&#xA;&lt;/h4&gt;&lt;ol&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;KPM 内核模块&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;在已经被 kpimg 接管的内核里，动态加载 KPM 模块&lt;/li&gt;&#xA;&lt;li&gt;支持对内核函数进行 hook，部分 hook 即时生效&lt;/li&gt;&#xA;&lt;li&gt;无&lt;code&gt;/system/bin/su&lt;/code&gt;文件，通过监听拦截&lt;code&gt;/system/bin/su&lt;/code&gt;或&lt;code&gt;su&lt;/code&gt;指令来实现提权&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;模块系统 + Lua 脚本&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用户态 &lt;a class=&#34;link&#34; href=&#34;cci:7://file:///c:/Users/Administrator/Documents/github/APatch/apd:0:0-0:0&#34; &gt;apd&lt;/a&gt; 管理模块目录、事件（post-fs-data / boot-completed 等）&lt;/li&gt;&#xA;&lt;li&gt;最新版本中可以用 &lt;strong&gt;Lua&lt;/strong&gt; 替代传统 shell 脚本，增强复杂逻辑可维护性&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;不依赖内核源码的工程化链路&lt;/strong&gt;：&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;用 &lt;a class=&#34;link&#34; href=&#34;cci:7://file:///c:/Users/Administrator/Documents/github/APatch/1/KernelPatch/tools/kallsym.c:0:0-0:0&#34; &gt;tools/kallsym.c&lt;/a&gt;、&lt;a class=&#34;link&#34; href=&#34;cci:7://file:///c:/Users/Administrator/Documents/github/APatch/1/KernelPatch/tools/patch.c:0:0-0:0&#34; &gt;tools/patch.c&lt;/a&gt; 等做符号解析、patch&lt;/li&gt;&#xA;&lt;li&gt;用 &lt;a class=&#34;link&#34; href=&#34;cci:7://file:///c:/Users/Administrator/Documents/github/APatch/1/KernelPatch/kernel/patch/android/user_init.sh:0:0-0:0&#34; &gt;kernel/patch/android/user_init.sh&lt;/a&gt; 等把 apd 接到系统启动阶段&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;支持kernelsu的元模块挂载方案(2026.1.12补)&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;hr&gt;&#xA;&lt;h2 id=&#34;三综合对比与结论&#34;&gt;三、综合对比与结论&#xA;&lt;/h2&gt;&lt;h3 id=&#34;技术路线对比简表&#34;&gt;技术路线对比（简表）&#xA;&lt;/h3&gt;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;方案&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;类型&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;是否改内核代码&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;是否需源码&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;是否依赖 App&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;su 角色&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;模块系统&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;KingRoot&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;漏洞 Root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;需要&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;各家自定义&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;无 / 简单补丁&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;SuperSU&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;system 注入 su&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;可选&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;传统 setuid su&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;无&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Magisk&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;用户态 Root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;间接（不改内核）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;强依赖&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/system/bin/su&lt;/code&gt;中转到 &lt;code&gt;magiskd&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;magic mount&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;SKRoot&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;内核 Root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;是（patch 镜像）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;有工具/库&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;隐藏 su + 进程定向注入&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;无完整模块系统&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;KernelSU&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;内核 Root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;是（源码/GKI/LKM）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;技术层面上需要&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;App 非必须&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/system/bin/su&lt;/code&gt; 触发内核提权&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;元模块&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;APatch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;内核 Root&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;是（kpimg patch）&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;否&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;App 非必须&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;内核 hook su/execve 等&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;APM/KPM + Lua&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h3 id=&#34;目前最主流的三款root方案分析&#34;&gt;目前最主流的三款root方案分析&#xA;&lt;/h3&gt;&lt;ul&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;Magisk&lt;/strong&gt;：&lt;br&gt;&#xA;适合追求 &lt;strong&gt;广泛兼容 + 成熟模块生态&lt;/strong&gt; 的用户，一般设备能解锁 boot.img 就能用。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;KernelSU&lt;/strong&gt;：&lt;br&gt;&#xA;适合有 &lt;strong&gt;GKI 内核&lt;/strong&gt;，且希望在内核层面细控 Root 权限（App profile）的人，&lt;br&gt;&#xA;更偏“官方化”的内核模块方案，但对旧机型支持有限&#xA;可以自定义挂载&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;li&gt;&#xA;&lt;p&gt;&lt;strong&gt;APatch&lt;/strong&gt;：&lt;br&gt;&#xA;从技术理念上最“硬核”，不依赖源码、支持广泛内核版本，&lt;br&gt;&#xA;内核模块 hook + Lua 模块系统，对研究者 / 高级玩家非常友好。&lt;/p&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</description>
        </item><item>
            <title>GKI 内核不完全编译实战</title>
            <link>https://blog.liao-ke.com/p/android-gki-kernel-compile/</link>
            <pubDate>Fri, 05 Dec 2025 00:00:00 +0000</pubDate>
            <guid>https://blog.liao-ke.com/p/android-gki-kernel-compile/</guid>
            <description>&lt;h1 id=&#34;android内核编译&#34;&gt;Android内核编译&#xA;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;以编译5.10以上的内核为例,所需资源:&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;一台配置较好的电脑&lt;/li&gt;&#xA;&lt;li&gt;linux系统&lt;/li&gt;&#xA;&lt;li&gt;内核源代码&lt;/li&gt;&#xA;&lt;li&gt;编译链工具&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;linux系统&#34;&gt;linux系统&#xA;&lt;/h2&gt;&lt;ul&gt;&#xA;&lt;li&gt;各大Linux系统(Ubuntu系/arch系/fedora系/Wsl2)都可以，网上教程多以Ubuntu lts版本为例(&lt;strong&gt;便于找依赖和教程&lt;/strong&gt;)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;内核源代码&#34;&gt;内核源代码&#xA;&lt;/h2&gt;&lt;p&gt;从github上搜索自己机型的内核源代码&lt;br&gt;&#xA;如&lt;code&gt;https://github.com/Evolution-X-Devices/kernel_xiaomi_sm8450&lt;/code&gt;(&lt;strong&gt;项目名一般采用   kernel_厂家名_芯片组代号   的形式,5.10之后都是gki内核,所以内核名称基本是以芯片组命名如sm8450,有些项目也可能是按机型代号命名，而不是芯片组&lt;/strong&gt;)&lt;/p&gt;&#xA;&lt;h2 id=&#34;编译链工具&#34;&gt;编译链工具&#xA;&lt;/h2&gt;&lt;p&gt;5.10以上的内核一般采用纯clang/llvm进行编译(低版本内核也可尝试，但有可能能成功编译但会开不了机)&lt;/p&gt;&#xA;&lt;h3 id=&#34;clangllvm&#34;&gt;Clang/llvm&#xA;&lt;/h3&gt;&lt;p&gt;Clang 一般情况下采用的是&lt;a class=&#34;link&#34; href=&#34;https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/&amp;#43;/refs/heads/main&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;google&lt;/a&gt;的正式分支,也可以采用&lt;a class=&#34;link&#34; href=&#34;https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86/&amp;#43;/refs/heads/mirror-goog-main-prebuilts&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;测试分支&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;编译过程&#34;&gt;编译过程&#xA;&lt;/h2&gt;&lt;h3 id=&#34;更新环境依赖&#34;&gt;更新环境依赖&#xA;&lt;/h3&gt;&lt;p&gt;以Ubuntu24.04为例,执行以下命令安装依赖&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc tar xz-utils cpio findutils&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;克隆内核源代码和编译链工具&#34;&gt;克隆内核源代码和编译链工具&#xA;&lt;/h3&gt;&lt;p&gt;内核:&lt;code&gt;git clone https://github.com/Evolution-X-Devices/kernel_xiaomi_sm8450.git --depth=1&lt;/code&gt;&lt;br&gt;&#xA;编译链工具:&lt;code&gt;git clone https://android.googlesource.com/platform/prebuilts/clang/host/linux-x86.git --depth=1&lt;/code&gt;&lt;br&gt;&#xA;&lt;strong&gt;depth=1&lt;/strong&gt;只拉取文件，不拉取历史提交，可以极大减少下载时间&lt;br&gt;&#xA;如果想拉取其他的测试分支，也可以在后面加&lt;code&gt;-b 测试分支名字&lt;/code&gt;&lt;br&gt;&#xA;如拉取测试版的编译链则添加&lt;code&gt;-b mirror-goog-main-prebuilts&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h3 id=&#34;设置环境变量&#34;&gt;设置环境变量&#xA;&lt;/h3&gt;&lt;p&gt;注:&lt;code&gt;以下操作需要在同一个终端环境下执行，因为添加的变量是临时变量&lt;/code&gt;&lt;br&gt;&#xA;此时在你的工作目录下面应该会有两个文件夹，一是&lt;code&gt;内核文件夹&lt;/code&gt;，二是&lt;code&gt;编译链工具文件夹&lt;/code&gt;&lt;br&gt;&#xA;打开终端,执行&lt;code&gt;cd 编译链工具文件夹路径&lt;/code&gt;,当前目录下应该会有若干个&lt;code&gt;clang-rxxxx&lt;/code&gt;子文件夹，选择后缀数字最大的最新版本即可,将它下面的/bin添加到环境变量中&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;PATH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$PATH&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;:/../../编译链工具文件夹/clang-rxxxx/bin&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;然后再&lt;code&gt;cd 内核源代码文件夹&lt;/code&gt;&lt;br&gt;&#xA;设置编译环境变量&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;ARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;arm64&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;SUBARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;arm64&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;clang&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LLVM&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LLVM_IAS&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;HOSTCC&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;clang&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;ld.lld&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;CLANG_TRIPLE&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;aarch64-linux-gnu-&amp;#34;&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;如果电脑的内存不太够，可以额外设置&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nb&#34;&gt;export&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;LTO&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;thin&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;h3 id=&#34;执行编译命令&#34;&gt;执行编译命令&#xA;&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;&#xA;&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1&#xA;&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2&#xA;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&#xA;&lt;td class=&#34;lntd&#34;&gt;&#xA;&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make &lt;span class=&#34;nv&#34;&gt;ARCH&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;arm64&amp;#34;&lt;/span&gt; gki_defconfig&#xA;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make -j&lt;span class=&#34;k&#34;&gt;$(&lt;/span&gt;nproc --all&lt;span class=&#34;k&#34;&gt;)&lt;/span&gt;&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&#xA;&lt;/div&gt;&#xA;&lt;/div&gt;&lt;p&gt;第一行命令是加载配置文件gki_defconfig,他所在的目录是&lt;code&gt;/内核源代码/arch/arm64/configs/gki_defconfig&lt;/code&gt;（可以自行修改里面的配置项）&lt;br&gt;&#xA;编译出来的内核二进制文件会在&lt;code&gt;/内核源代码/arch/arm64/boot/Image&lt;/code&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;打包内核&#34;&gt;打包内核&#xA;&lt;/h2&gt;&lt;p&gt;由于没有编译kernel-devicetree,也没ramdisk,所以无法和内核二进制文件打包成boot.img刷入手机分区(也可以用magiskboot把手机原本的boot.img进行解包，把其中的内核二进制文件替换之后,再打包就行了)&lt;br&gt;&#xA;这个时候就需要&lt;a class=&#34;link&#34; href=&#34;https://github.com/osm0sis/AnyKernel3&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;AnyKernel3&lt;/a&gt;对内核二进制文件进行打包&lt;br&gt;&#xA;详细教程参考&lt;br&gt;&#xA;&lt;a class=&#34;link&#34; href=&#34;https://github.com/tiann/KernelSU/discussions/952&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;&#xA;    &gt;https://github.com/tiann/KernelSU/discussions/952&lt;/a&gt;&lt;/p&gt;&#xA;&lt;h2 id=&#34;刷入内核&#34;&gt;刷入内核&#xA;&lt;/h2&gt;&lt;p&gt;可以在twrp或一些用于刷写内核的app中刷入打包后的AnyKernel3.zip&lt;/p&gt;&#xA;&lt;h2 id=&#34;注意&#34;&gt;注意&#xA;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;不同型号内核以及不同版本的编译器，可能对依赖和代码语法要求也有所不同，需要自行解决。&lt;/strong&gt;&lt;/p&gt;&#xA;</description>
        </item></channel>
</rss>
