环境:
虚拟机:VM
主机OS:Ubuntu 14
手机型号:Nexus 6P
源码版本:AOSP 8.1.0
目标编译内核版本:Linux version 3.10.73-g309d642
android系统源码下载编译中已经介绍了系统的编译和刷机
官网流程:https://source.android.com/source/building-kernels.html#downloading-sources
下载源码
在aosp源码目录
执行git同步内核源码:
//同步源码 谷歌镜像
git clone https://android.googlesource.com/kernel/msm
//同步源码 清华镜像
#git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/msm.git
cd msm //进入目录
查看版本列表建议利用grep过滤自己需要内容
git branch -a | grep angler
image.png
这里有很多版本选择,根据手机当前使用的内核版本查看是
3.10.73-g309d642
或者adb shell
进入手机执行cat /proc/version
查看image.png
感觉版本同步分支检出代码:
git checkout 3.10.73-g309d642
//或者
git checkout -b android-msm-angler-3.10-oreo-r6 origin/android-msm-angler-3.10-oreo-r6
编译内核
// 将工具集加入到路径中
export PATH=$PATH:~/aosp/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
// 设置目标架构
export ARCH=arm64
// 设置编联合编译方式,
export CROSS_COMPILE=aarch64-linux-android-
// 编译
# make angler_defconfig
# make
image.png
编译成功后内核镜像就存放在
./arch/arm64/boot/
目录下,Image.gz-dtb
文件就是内核镜像。
拷贝内核镜像
设置系统编译是使用的内核,两种方式:
- 1.将
Image.gz-dtb
文件复制到angler-kernel
目录。 - 2.在使用
make bootimage
或者编译启动镜像的任何其他make
命令行时,添加TARGET_PREBUILT_KERNEL
变量:
例如:
// 进入Android 源码目录
# cd ~/asop/
// 设置刚刚编译完成 Image.gz-dtb 文件变量
# export TARGET_PREBUILT_KERNEL=~/aosp/k/msm/arch/arm64/boot/Image.gz-dtb
# source build/envsetup.sh
# lunch <angler>
编译内核
make bootimage
编译完成,文件输出在out/target/product/angler/boot.img
刷入boot区
// 手机进入fastboot模式
fastboot flash boot boot.img
最后手机设置中查看内核版本是否匹配
device-2020-05-09-151800.png
网友评论