【android Framework 探究】pixel 5 内核编译
相关文章:
【android Framework 探究】android 13 aosp编译全记录
【android Framework 探究】android 13 aosp 全记录 - 烧录
一,环境
主机 -> Ubuntu 18.04.6 LTS
内存 -> 16GB
手机 -> pixel 5 代号redfin。kernel代号redbull
二,代码拉取
这里需要注意:
- 之前文章下载的aosp源代码是不包含kernel部分的,只有打包好的二进制镜像,重新编译需要单独拉取。
- kernel代码不用git clone,那样会缺少预编译文件和必要的编译工具,使用repo拉取。
- 代码优先从google源拉取,因为我开始从中科大源拉取的代码始终编译不过去,提示各种错误(一直各种怀疑环境有问题),困扰了很久,解决无果,最后搭梯子从google获取基本顺利的编译成功。
拉取代码
先搞清楚pixel 5 kernel的分支,参考官方文档: 构建 Pixel 内核,虽然官方支持的piex 5,最新支持android 14,它显示的分支是:
设备 | AOSP 树中的二进制文件路径 | 仓库分支 |
---|---|---|
Pixel 5 (redfin) | device/google/redbull-kernel | android-msm-redbull-4.19-android14-qpr3 |
但是我上次编译的版本是android 13,这样就能和我的源码匹配上,所以我找下对应的分支名,从这里查看:kernel manifest。
我要的分支是:android-msm-redbull-4.19-android13-qpr2,所以我的指令是:
repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-redbull-4.19-android13-qpr2
repo sync -j4
网络不好可能需要多次执行sync,最后下载成功!
编译
编译之前,首先看下手机kernerl的信息,把代码切换到对应的tag点:连接手机,执行adb shell cat /proc/version
Linux version 4.19.239-g248fa42a73b2-ab9062766 (build-user@build-host) (Android (7284624, based on r416183b) clang version 12.0.5 (https://android.googlesource.com/toolchain/llvm-project c935d99d7cf2016289302412d708641d52d2f7ee), LLD 12.0.5 (/buildbot/src/android/llvm-toolchain/out/llvm-project/lld c935d99d7cf2016289302412d708641d52d2f7ee)) #1 SMP PREEMPT Wed Sep 14 05:22:28 UTC 2022
对应的commit就是248fa42a73b2
cd private/msm-google
git checkout 248fa42a73b2
进入目录check下,其中build_redbull.sh是编译入口,各种预编译已经在这个文件提前引用好了。
├── build
├── build.config -> private/msm-google/build.config.redbull.no-cfi
├── build_redbull-gki.sh -> private/msm-google/build_redbull-gki.sh
├── build_redbull.sh -> private/msm-google/build_redbull.sh
├── build_sm7250.sh -> private/msm-google/build_sm7250.sh
├── build_sm8250.sh -> private/msm-google/build_sm8250.sh
├── out
├── prebuilts
├── prebuilts-master
├── private
└── tools
执行
./build_redbull.sh
成功会输出:
Files copied to /aosp-kernel-redbull/out/android-msm-pixel-4.19/dist
aosp-kernel-redbull/prebuilts/boot-artifacts/ramdisks/vendor_ramdisk-barbet.img is LZ4 compressed
boot image created at aosp-kernel-redbull/out/android-msm-pixel-4.19/dist/boot.img
Signing the boot.img...
vendor boot image created at aosp-kernel-redbull/out/android-msm-pixel-4.19/dist/vendor_boot.img
遇到的问题:
soong_zip: command not found
解决方法:找到aosp里面的soong_zip路径,设置环境变量
export PATH=$PATH:/xxx/aosp/prebuilts/build-tools/linux-x86/bin
烧录
烧录之前提前准备好恢复手段,一旦重启失败,及时恢复。两种方法:
1,提前下载原生系统刷机包
2,如果你已经下载并编译过aosp代码,可以在子目录out/target/product/redfin找到
怎么刷这篇文章都有讲:【android Framework 探究】android 13 aosp 全记录 - 烧录
现在开始烧录:
- cd out/android-msm-pixel-4.19/dist
- fastboot flash boot boot.img
- fastboot flash vendor_boot vendor_boot.img
- fastboot reboot
重启成功,至此可以自己在内核代码增加日志进行探索了!