pixel 3a xl android kernel内核源码编译并刷入(2)

前言

上一篇是编译farmworker代码,但是kernel内核代码并不包含在内,此篇编译内核
首先确定机型和rom版本
操作系统:Ubuntu 18.04
机型:pixel 3a xl
系统版本:android 11
rom版本:11.0.0 (RQ3A.211001.001, Oct 2021)
源码版本:android-11.0.0_r46
相关连接自备梯子

一、确定源代码版本

1.版本说明

$ git clone https://android.googlesource.com/kernel/common.git
$ git clone https://android.googlesource.com/kernel/hikey-linaro
$ git clone https://android.googlesource.com/kernel/x86_64.git
$ git clone https://android.googlesource.com/kernel/exynos.git
$ git clone https://android.googlesource.com/kernel/goldfish.git
$ git clone https://android.googlesource.com/kernel/msm.git
$ git clone https://android.googlesource.com/kernel/omap.git
$ git clone https://android.googlesource.com/kernel/samsung.git
$ git clone https://android.googlesource.com/kernel/tegra.git

#goldfish 项目包含适用于所模拟的平台的内核源代码。
#msm 项目包含适用于 ADP1、ADP2、Nexus One、Nexus 4、Nexus 5、Nexus 6、Nexus 5X、Nexus 6P、Nexus 7 (2013)、Pixel 和 Pixel XL 的源代码,可用作使用 Qualcomm MSM 芯片组的起点。
#omap 项目用于 PandaBoard 和 Galaxy Nexus,可用作使用 TI OMAP 芯片组的起点。
#samsung 项目用于 Nexus S,可用作使用 Samsung Hummingbird 芯片组的起点。
#tegra 项目用于 Xoom、Nexus 7 (2012)、Nexus 9,可用作使用 NVIDIA Tegra 芯片组的起点。
#exynos 项目包含适用于 Nexus 10 的内核源代码,可用作使用 Samsung Exynos 芯片组的起点。
#x86_64 项目包含适用于 Nexus Player 的内核源代码,可用作使用 Intel x86_64 芯片组的起点。
#hikey-linaro 项目用于 HiKey 参考板,可用作使用 HiSilicon 620 芯片组的起点。

2.pixel 3a xl 是高通的cpu,代号bonito,我们选择 android-msm-bonito-4.9-android11-qpr3
查找源码版本链接

kernel版本对应

3.如果不知道怎么选择源码版面可以用一下方法

#先连接手机
1.先刷入官方rom
2.查看内核版本
adb shell
bonito:/ $ cat /proc/version
Linux version 4.9.248 (build-user@build-host) (Android (6443078 based on r383902) clang version 11.0.1 (https://android.googlesource.com/toolchain/llvm-project b397f81060ce6d701042b782172ed13bee898b79)) #1 SMP PREEMPT Thu Jun 3 11:53:12 UTC 2021
通过git commit 可以看到代码所属版本,然后下载对应版本源码

二、下载代码

mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod a+x ~/bin/repo
#修改一下代码源
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
mkdir kernel11
cd kernel11
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/kernel/manifest -b android-msm-bonito-4.9-android11-qpr3 
repo sync -j4

三、编译代码,打包

1、安装环境
参考
https://source.android.com/setup/build/initializing?hl=zh-cn

sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

sudo apt install libssl-dev

2、编译内核代码

## build kernel
build/build.sh

3、重新生成boot.img
方法一:替换路径

#https://hqw700.github.io/2021/01/02/aosp-kernel-build/

adb root
adb remount
adb push ../kernel/out/android-msm-pixel-4.9/dist/*.ko /vendor/lib/modules

~/code/android11$ source build/envsetup.sh
~/code/android11$ lunch aosp_blueline-userdebug
~/code/android11$ export TARGET_PREBUILT_KERNEL=/home/huangqw/code/kernel/out/android-msm-pixel-4.9/dist/Image.lz4
~/code/android11$ make -j4 bootimage


adb reboot bootloader           ## 进入bootloader模式
fastboot boot boot.img          ## 从新内核启动,但不烧录,重启会失效
fastboot flash boot boot.img    ## 烧录新内核

fastboot flash dtbo dtbo.img

方法二:替换文件

#https://zhuanlan.zhihu.com/p/447282679
$ build/build.sh
$ cp out/android-msm-pixel-4.9/dist/Image.lz4 ~/work/aosp/device/google/crosshatch-kernel/
$ cp out/android-msm-pixel-4.9/dist/*.ko ~/work/aosp/device/google/crosshatch-kernel/
$ cp out/android-msm-pixel-4.9/dist/*.img ~/work/aosp/device/google/crosshatch-kernel/
$ cp out/android-msm-pixel-4.9/dist/*.dtb ~/work/aosp/device/google/crosshatch-kernel/
$ cd ~/work/aosp/
$ . build/envsetup.sh
$ lunch aosp_crosshatch-userdebug
$ adb reboot bootloader
$ make bootimage

方法三:手动解包,替换,此方法适用于其他手机

#https://blog.csdn.net/u012417380/article/details/73353670

三、刷入代码

$ adb reboot bootloader
$ fastboot flash boot
$ fastboot reboot

参考
https://source.android.com/setup/build/building-kernels
https://blog.csdn.net/u012417380/article/details/73353670
gcc编译器
https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/

你可能感兴趣的:(pixel 3a xl android kernel内核源码编译并刷入(2))