AOSP内核下载和编译

环境:

虚拟机: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 

编译内核

make bootimage

编译完成,文件输出在out/target/product/angler/boot.img

刷入boot区

// 手机进入fastboot模式
fastboot flash boot boot.img

最后手机设置中查看内核版本是否匹配


device-2020-05-09-151800.png

参考:https://bbs.pediy.com/thread-246362.htm

你可能感兴趣的:(AOSP内核下载和编译)