为 Google Pixel 6 刷入 KernelSU

为 Google Pixel 6 刷入KernelSU

Google Pixel 稍微有点不一样,它的压缩方式是 legacy_lz4,GKI 模式不能通过官方提供的 boot 镜像,需要通过手动修补 boot.img 的方式刷入 KernelSU,其他设备其实也可以这样执行

下文会使用 KernelSU 文档的先进入临时 GKI 映像,再刷入 LKM 的方式

注意事项

版权与声明

本文部分技术核心取自以下文章,感谢这些文章的作者

  1. KernelSU 的官方安装文档:安装 | KernelSU

如果可能,请尽量阅读上方的原文章来学习

bootloader 锁

只有欧版的 Google Pixel 才能解除 bootloader 锁

防火长城

由于防火长城的存在,您不能直接访问android.comgoogle.com等域名(包括其子域名),所以请您自己想办法

下文注释

在下文代码块中,左上角写着#的为需要超级用户身份执行的权限;左上角写着$的只需要普通用户既可执行

以下代码只使用#$来表示权限等级,不再明文写sudo

危险

数据无价,请确保您已经备份好了您的重要数据,根据此文章执行产生的一切后果由您亲自承担

准备工具

一台电脑

您需要一台电脑才能完成该操作

Android Debug Bridge

简称 adb,请从 Android 调试桥 (adb) 下载,并添加到环境变量中

不多做解释和教程

驱动程序

Windows

若使用 Windows,则需要下载安装 USB 驱动程序:Get the Google USB Driver

请根据官方文档来完成安装操作

Unix

若使用 Linux 或 MacOS,则不需要也不应该下载安装 USB 驱动程序,请参阅在硬件设备上运行应用

解除 bootloader 锁

解锁 OEM

进入设置-关于本机-狂点Build 号7次以上-输入锁屏密码(如果有)-返回上一级-系统-开发者选项-开启OEM 解锁

进入 bootloader

$ bash
1
adb reboot bootloader

解除 bootloader 锁

警告:此操作将清除手机上的所有数据

$ bash
1
fastboot flashing unlock

随后在手机上通过上下音量键和锁屏键选择解除bootloader锁

下载并安装 KernelSU 管理器

下载 KernelSU 管理器

https://github.com/tiann/KernelSU/releases

下载并安装KernelSU_<版本>.apk

安装 KernelSU 管理器

$ bash
1
adb install KernelSU_<版本>.apk

下载 AnyKernel3

打开 KernelSU 管理器,查看内核版本,并从 releases 下载对应的 AnyKernel3

获取 Image 文件

解压出其中的Image文件

$ bash
1
unzip AnyKernel3-<内核版本>_<构建日期>.zip 

确认文件

将其传入手机内,至任意位置,下面以/data/local/tmp/为例

$ bash
1
adb push Image /data/local/tmp/

获取出厂映像

下载出厂映像

Nexus 和 Pixel 设备的出厂映像 将出厂映像下载下来,以 Google Pixel 6 的 Android 14 为例

提示:如果您是第一次访问该下载站,您可能需要将页面滑到最底端,同意“条款及条件”(即点击“确认”按钮)

注意:必须使用和 OTA 一样的版本的映像,否则将会导致手机无法开机,这需要您找到对应版本的映像重新刷入或将 OTA 升级为该版本。这种情况可能会因为需要您 Wipe data/factory reset 而丢失数据

解压出厂映像

下载应该会得到一个<设备代号>-<构建版本>-factory-<提交哈希值>.zip压缩包,将其解压

$ bash
1
unzip <设备代号>-<构建版本>-factory-<提交哈希值>.zip

获取映像文件

其内部应该还有一个image-<设备代号>-<构建版本>.zip,将其也解压

$ bash
1
unzip image-<设备代号>-<构建版本>.zip

确认文件

此时应该会有一个boot.img,将其传入手机内,至任意位置,下面以/data/local/tmp/为例

$ bash
1
adb push boot.img /data/local/tmp/

获取 magiskboot

我们需要magiskboot可执行程序来帮助我们修补boot.img

下载 Magisk

可以从 Magisk/releases 下载 .apk 文件

可以下载正式版(一般命名为Magisk-<版本>.apk),也可以下载 Pre release 版(一般命名为app-release.apk

下文以正式版示范

解压 .apk 文件

$ bash
1
unzip Magisk-<版本>.apk

提取 magiskboot

找到lib/arm64-v8a/libmagiskboot.so,将其重命名为magiskboot

$ bash
1
mv libmagiskboot.so magiskboot

确认文件

将其传入手机内,至一个可执行的位置,下面以/data/local/tmp/为例

$ bash
1
adb push magiskboot /data/local/tmp/

修补 boot.img

进入 shell

$ bash
1
adb shell

进入 magiskboot 所在目录

$ bash:adb shell
1
cd /data/local/tmp/

赋予 magiskboot 执行权限

$ bash:adb shell
1
chmod +x magiskboot

解包 boot.img

$ bash:adb shell
1
./magiskboot unpack boot.img

使用 Image 覆盖 kernel

此时应该会有一个名为kernel的文件,用我们刚刚的Image文件将其覆盖

$ bash:adb shell
1
mv Image kernel

重新打包 boot.img

$ bash:adb shell
1
./magisk repack boot.img

会生成一个new-boot.img文件

退出 adb shell

$ bash:adb shell
1
exit

准备刷写

拉取 boot.img

$ bash
1
adb pull /data/local/tmp/new-boot.img

这就是修补后的boot.img

进入 bootloader

$ bash
1
adb reboot bootloader

选择

现在你已经拥有了我们需要的文件,接下来你有两个选择,具体如何选择,请参阅 KernelSU 的文档安装介绍

  1. 直接使用 GKI 模式使用 KernelSU,请跳转GKI 模式
  2. 使用 LKM 模式使用 KernelSU,请跳转LKM 模式

GKI 模式

刷写映像

将刚刚修补的boot.img刷入 boot 分区,就是 GKI 模式

$ bash
1
fastboot flash boot new-boot.img

重启手机

重启手机,完成安装

LKM 模式

临时 GKI 模式

将刚刚修补的boot.img作为临时启动映像,进入临时 GKI 模式,获取临时 root 权限

$ bash
1
fastboot boot new-boot.img

刷写 LKM 模式

进入系统后,打开 KernelSU 管理器,进入安装页面,选择直接安装(推荐)

重启手机

重启手机,完成安装