kptools 手动修补 — 内核更新后管理器还没更时的备用方案
什么时候需要手动修补
APatch 管理器内部封装了 KernelPatch 的修补逻辑,但有个时间差问题:当 KernelPatch 框架更新了(比如支持了新内核版本),APatch 管理器可能还没跟上更新。这种情况下你可以直接用 KernelPatch 发布的 kptools 命令行工具来手动修补。
另一个场景是你要批量处理多个 boot.img,或者要把修补流程集成到自动化脚本里——手动修补的 CLI 更适合程序化调用。
需要下载的文件
前往 KernelPatch 的 GitHub Releases 页面,下载:
kptools-msys2-win.7z(Windows)或kptools-linux(Linux)kpimg-android(内核补丁镜像)
解压后会得到 kptools.exe(Windows)或 kptools-linux(Linux)。
Windows 手动修补
步骤 1:准备文件
把原厂 boot.img、kptools.exe、kpimg-android 放在同一目录下(或记下它们的完整路径)。
步骤 2:解包 boot.img
kptools.exe unpack boot.img
执行后当前目录会多出一个 boot 文件夹,里面包含 kernel 和 ramdisk 等文件。
步骤 3:修补内核
把 kernel 文件改名为 kernel-b(这是 KernelPatch 的输入约定),然后执行:
kptools.exe -p --image kernel-b --skey "YourSuperKey" --kpimg kpimg-android --out kernel
参数说明:
--image:输入的未修补内核--skey:你的 SuperKey(替换引号里的内容)--kpimg:内核补丁镜像文件--out:修补后的内核输出文件名
命令执行后应该没有报错,当前目录会出现一个新的 kernel 文件。
步骤 4:重新打包 boot.img
kptools.exe repack boot.img
这会生成 new-boot.img,就是修补好的镜像。
步骤 5:验证输出
dir new-boot.img
文件应该比原厂 boot.img 稍大或差不多大小。
Linux 手动修补
和 Windows 流程完全一样,只是二进制不同:
# 下载并解压后
chmod +x kptools-linux
# 解包
./kptools-linux unpack boot.img
# 修补
mv kernel kernel-b
./kptools-linux -p --image kernel-b --skey "YourSuperKey" --kpimg kpimg-android --out kernel
# 打包
./kptools-linux repack boot.img
更推荐用 WSL
Windows 上手动修补,APatch 官方推荐用 WSL(Windows Subsystem for Linux) 运行 Linux 版本的 kptools,因为 Linux 二进制的兼容性更好。
wsl
# 在 WSL 里执行上面的 Linux 命令
在线修补
如果不想在本地装 kptools,可以试试 KernelPatch 提供的在线修补工具(kernelpatch-on-web.pages.dev)——上传 boot.img,填好 SuperKey,在线返回修补后的镜像。适合临时急用的场景。
常见错误
can't find CONFIG_KALLSYMS:内核没有开启符号表,APatch 用不了superkey is too weak:SuperKey 太简单,换个强度够的kernel patch failed:内核版本可能不兼容,换一个 kpimg-android 版本试试
补充:kptools --help
kptools 还有更多高级参数(指定内核架构、自定义补丁、嵌入 KPM 等),完整列表执行:
kptools.exe --help