将自定义内核闪存到Android手机中(像素)



我正在尝试修改Pixel 4a 5g手机的内核。为此,我从https://developers.google.com/android/images.我还有一个内核src代码(https://android.googlesource.com/kernel/common/+/refs/heads/android-4.19-stable(并对其进行编译。结果生成Image和Image.gz文件。

据我所知,我必须解压缩boot.img文件,用我的Image.gz替换它所包含的内核并打包它。使用unmkbootimg,我得到了zImage和initramfs.cpio.gz,但我认为它们已经损坏。以下是我得到的:

unmkbootimg version 1.2 - Mikael Q Kuisma <kuisma@ping.se>
Kernel size 11562794
Kernel address 0xd7719f
Ramdisk size 369099082
Ramdisk address 0x62c
Secondary size 0
Secondary address 0x0
Kernel tags address 0x0
Flash page size 0
Board name is ""
Command line ""
*** WARNING ****
This image is built using NON-standard mkbootimg!
OFF_KERNEL_ADDR is 0x00D7729F
OFF_RAMDISK_ADDR is 0x0000072C
OFF_SECOND_ADDR is 0x00000100
Please modify mkbootimg.c using the above values to build your image.
****************
Extracting kernel to file zImage ...
Extracting root filesystem to file initramfs.cpio.gz ...
%Premature end-of-file saving initramfs.cpio.gz.

有人能告诉我一个简单易行的方法吗?

这个github repo正是您所需要的:https://github.com/cfig/Android_boot_image_editor

主要步骤:

  1. 提取原液.img
cp <original_boot_image> boot.img
./gradlew unpack
  1. 用本地构建的内核替换内核,然后
  2. 重新打包boot.img
./gradlew pack

干杯!