前言
一直觉得,修补boot居然要在手机上进行修补太过麻烦,于是照着官网的教程来了一遍,成功开机和root。
如果你看不懂这篇博客,直接去官网看即可。
https://apatch.dev/zh_CN/install.html#how-to-patch
善用tab键,他可以补全文件名。新版的powershell自带命令提示,如果看到提示,按右键即可补全。
但是这个提示只是历史记录,所以自己判断是否补全。
准备工具
magiskboot可执行文件(命令行)
https://github.com/svoboda18/magiskboot/releases
KernelPatch项目提供的kpimg-android和kptools
https://github.com/bmax121/KernelPatch/releases
推荐使用llvm版本。
如果你信任我,可以下载我提供的文件压缩包。
临时链接(可能失效)
蓝奏云https://yaboku.lanzoul.com/i51fg2gce9od
123网盘https://www.123865.com/s/EhW3jv-E4kMd
将这些可执行文件解压放到同一个目录下,其中kptools我们只保留本机架构的版本(家用PC一般都是64位的x86),然后把安卓手机当前系统的原厂boot.img也放在该目录。
图例:
正文
打开windows的终端命令行,我推荐powershell。
解包boot.img
./magiskboot.exe unpack boot.img
可以看到多出一个kernel内核文件
我们将它重命名为kernel-b,因为之后我们需要生成的内核名为kernel,所以这只是个临时名称,叫什么都无所谓,只是修补时需要使用。
mv .\kernel kernel-b
根据原厂内核修补成新内核
下面的root1234是我的内核密码,这个和Apatch软件里面设定密码的效果一样,不必多说,按自己的需求改就可以。
./kptools-x86_64-win.exe -p --image kernel-b --skey "root1234" --kpimg .\kpimg-android.kpimg-android --out kernel
这个命令执行后,会输出一大段,只要没报错信息就没问题。
比如成功时,会显示patch done
使用新内核kernel和boot.img打包成新的new-boot.img
./magiskboot.exe repack boot.img
此处的boot.img显然也只是个路径参数,而他肯定用到了新的内核,因此我猜测他把内核文件的路径写死了,就是本目录的kernel文件。不过猜测也没什么用,工具只要能达到目的就可以了,不必深思原理何如。
已经生成了new-boot.img,此时你可以将它放到其他路径保存下来,此时这篇文章的目的已经达成。
如果你要刷入,下面是刷入的命令。
(可选)刷入
手机进入fastboot模式(bootloader)后连接电脑
fastboot flash boot ./new-boot.img
(可选)将new-boot.img存储到其他路径备用,删除临时文件
选中四个临时文件,直接删了就是。
如果留着,下次生成内核时,可能会忘记哪个是新文件哪个是旧文件,引起不必要的麻烦。