提取OTA固件包内核

为什么要提取内核

如果你刷入第三方内核,对内核不满意,就需要回到官方内核,因此需要提取官方内核。

有哪些工具可用于提取内核

FKM/EXKM都是Android上的APP,都是需要Root的安卓设备才可使用。

payload dumper是python脚本,需要安装python和pip才能使用,可用于提取卡刷包中payload.bin的内核映像文件。

使用FKM/EXKM是最简单的提取内核方式,使用payload dumper比较费时费事。

利用FKM/EXKM提取内核

适用对象:以Root的一加手机。

下载:

Play商店:FKMEXKM

其他途径:我的百度网盘也有提供EXKM。

提取/备份内核映像

EXKM提取内核步骤如图所示:

还原内核

利用payload dumper提取OTA固件包内核

下载payload_dumper

进入GitHub - vm03/payload_dumper: Android OTA payload dumper后,点击"Code",然后点击"Download ZIP"

为什么要使用payload dumper

一加8P卡刷包的文件结构如下:

可以看到大部分数据都在payload.bin中,因此我们需要从payload.bin提取官网内核。

复制必备文件到手机存储根目录

  1. 解压刚才下载的压缩包,然后将payload_dumper-master命名为payload_dumper

  2. 复制payload_dumper文件夹到手机外部存储根目录。

  3. 将payload.bin放到手机中的payload_dumper文件夹。

Android端进行提取

点击查看Android端进行提取教程

让Termux科学上网,然后依次在Termux运行以下命令

1
2
3
4
5
6
7
pkg install python -y
pip install --upgrade pip
apt update && apt upgrade -y
termux-setup-storage
cd /storage/emulated/0/payload_dumper
pip install -r requirements.txt
python payload_dumper.py payload.bin

部分运行截图:

相关参考

Windows端进行提取

大侠阿木提供payload_dumper-win64.zip - 免费高速下载

下载payload dumper-win64.zip后解压。

安装Python。

将卡刷包中的payload.bin放入payload_input文件夹里,双击payload dumper.exe运行即可。

payload_output存放提取的映像。

刷回官方内核

官方内核需要通过OTA固件包提取出来,提取的映像文件为boot.img。因此刷入boot.img到boot分区就完成了官方内核的恢复了。

什么是boot.img

boot.img包含内核和RAM驱动器(安卓系统将RAM视为一个磁盘),其中RAM驱动器包含用于启动和控制系统基础层的指令集和二进制运行库,比如挂载点,内存管理和开机启动服务等。

以下为英文释义:

What is the boot.img?
-> basically it contains the kernel & the ramdisk. But let’s hear what the pros have to say:

“The boot.img is a small(ish) file that contains 2 main parts, the kernel (the brain of the Android system) and the ramdisk (a core set of instructions and binaries that begins the boot process and controls base aspects of the system, such as mountpoints, memory management and startup services)” Source

Further information can be found here.

如何刷入boot.img

Reference:
[Tutorial] How to flash a new boot.img via Fastboot | XDA Developers Forums

[MAGISK][ROOT][BOOT.IMG] How to patch the Oneplus 8, 8T and 8 Pro stock Boot Image (boot.img) from the currently installed Stock ROM | XDA Developers Forums

1
fastboot flash boot boot.img

你可以先输入

1
fastboot flash boot 

注意boot后面有一个空格,然后将文件拖到命令行窗口。

如果你怕fastboot flash刷入的boot.img后问题,可以试试临时挂载boot.img

1
fastboot boot boot.img

这样一加8P会以安全模式状态开启,你可以看看内核版本是否有变化,确认有变化,重启进入刷机模式使用fastboot flash刷入官方内核。

刷入内核

有哪些方式内核的方式

卡刷

如果你下载的内核文件是以.zip结尾的,那么就需要使用卡刷的方式,可以先刷入临时TWRP,在恢复模式贴文中有介绍。

刷入临时TWRP

#为注释

1
2
3
4
5
6
#确认设备是否接入
adb devices
#重启进入bootloader模式
adb reboot bootloader
#刷入TWRP
fastboot boot twrpname.img

fastboot boot twrpname.img执行后,等待一会,自动进入临时TWRP

刷入内核文件,以Kirisakura内核为例

进入TWRP恢复模式

选择"Kirisakura_InstantNoodle_1.2.4.zip"刷入。

然后TWRP中Wipe Dalvik。

Wipe Dalvik不会清空用户数据,而是清除.apk和.jar文件产生的.DEX预编译文件

Flash方式刷

如果你下载的内核文件是以.img结尾的,那么就需要通过Flash方式刷入

1
fastboot flash boot 内核文件.img

你可以先输入

1
fastboot flash boot 

注意boot后面有一个空格,然后将文件拖到命令行窗口。

如果你怕fastboot flash刷入的boot.img后问题,可以试试临时挂载boot.img

1
fastboot boot boot.img

这样一加8P会以安全模式状态开启,你可以看看内核版本是否有变化,确认有变化,重启进入刷机模式使用fastboot flash刷入官方内核。

第三方内核源

大部分内核都来自XDA,这里我只提供8P的链接

Kirisakura Kernel

[Kernel][20.09.2020][Android 10] Kirisakura 1.2.4 for OnePlus 8 Pro aka InstantNoodle | XDA Developers Forums

Horizon Kernel

[Kernel][4.19.139][CAF-Rebased] Horizon Kernel [preview] | XDA Developers Forums

FrankenKernel

[Kernel]FrankenKernel🧟[oos]11[custom][8/8pro][13.1][clang 11.0.4] | XDA Developers Forums

ElementalX Kernel

[KERNEL] [Aug 2] OnePlus 8 Pro ElementalX 1.08 (Android 10) | XDA Developers Forums

Omega Kernel

[KERNEL] [OOS] Omega Kernel OOS11 [March 4, 2021] | XDA Developers Forums

CleanSlate kernel

[KERNEL] CleanSlate 🚀 R 2.6.3 |KCal|Dimmer|AdBlock|SafetyNet|FlashLight|Dtap [Jan 31] | XDA Developers Forums

RADIOACTIVE KERNEL

[KERNEL]Radioactive Kernel V1.0.5 [2020.07.13][UNIFIED OP8/OP8Pro] | XDA Developers Forums

内核刷入疑问

常见疑问的回答来自Kirisakura Kernel作者。

刷入内核后root是否还在?

对任何内核文件刷入后都会保持原来的权限不变,若有root,root维持不变。

Question: Is root preserved when flashing this kernel?
Answer: Yes, the AnyKernel.zip will detect root and keep it.

刷内核需要准备什么

解锁设备(即解锁了Bootloader)

开启USB调试模式

安装最新的adb和fastboot运行库并对他们进行环境设置

手机已root(即刷入magisk root)