Ubuntu20编译Aosp内核

Ubuntu20编译Aosp内核


前言

目标机型:Pixel3 XL

AOSP版本:android-10.0.0_r2

内核版本:android-msm-crosshatch-4.9-android10

编译环境:Ubuntu20.04.5,CPU:8C,内存:8G,交换区:8G

问题记录:

​ 官方在android-msm-crosshatch-4.9-android10内核代码中彻底删除了build/build.sh编译,为给Pixel3 XL 编译Aosp10的内核源码,本博客拷贝android-msm-crosshatch-4.9-android12内核源码的build/build.sh文件使用,能编译成功。

一、下载内核

  • 根据官网链接 :https://source.android.google.cn/docs/setup/build/building-kernels?hl=zh-cn,目前Pixel3 XL支持推荐的内核版本是 android-msm-crosshatch-4.9-android12,低于该版本的内核,彻底删除了build/build.sh编译。
    在这里插入图片描述

  • 按如下步骤下载 Aosp10 的内核源码:

    mkdir asop10-kernel & cd asop10-kernel
    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > /usr/bin/repo
    chmod a+x /usr/bin/repo
    
    export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
    git config --global user.email "test@example.com"
    git config --global user.name "test"
    
    repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/kernel/manifest -b android-msm-crosshatch-4.9-android10-qpr1
    
    repo sync
    
  • 按上述步骤下载的 Aosp10 内核源码没有build/build.sh 编译文件,解决方法:先同步一份 Aosp12 的内核源码,拷贝 build/build.sh 文件到Aosp10 内核源码 build 路径。

    # repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/kernel/manifest -b android-msm-crosshatch-4.9-android12
    # repo sync
    # 拷贝一份 build/build.sh 文件到asop10-kernel/build
    

    在这里插入图片描述

二、编译目标机型内核

  • 查看目标机型内核版本,取g后的数字,版本号为:fff483291c07

    adb shell cat /proc/version
    

    img

  • 编译目标机型的 Aosp10 内核

    cd asop10-kernel/private/msm-google
    git checkout fff483291c07 # 修改内核为目标机型对应的版本
    cd asop10-kernel
    build/build.sh # 开始编译
    
  • 编译完成,编译结果在 out/android-msm-pixel-4.9/dist/out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot/路径。

    在这里插入图片描述

    在这里插入图片描述

三、打包boot.img并刷入目标机型

  • 感觉改内核代码太麻烦,此处采用源码编译的方式,参考博文:Ubuntu20编译Aosp10源码

  • 设置临时环境变量,编译boot.img,编译结果在/home/steptp/aosp1000r2/out/target/product/crosshatch/下。

    cd /home/steptp/aosp1000r2
    export TARGET_PREBUILT_KERNEL=/home/steptp/aosp10-kernel/out/android-msm-pixel-4.9/private/msm-google/arch/arm64/boot/Image.lz4-dtb
    source build/envsetup.sh
    lunch 14 # aosp_crosshatch-userdebug,目标机型是pixel3 xl
    make bootimage # 编译内核
    
    cd out/target/product/crosshatch/ # 编译成功后,boot.img文件路径
    

    在这里插入图片描述

  • 刷入内核

    adb reboot bootloader
    
    fastboot flash boot boot.img
    

四、解决触摸屏失灵问题

  • 方法:将内核编译生成的所有 ko 文件拷贝到目标机型 /vendor/lib/modules 下。

    # 解决触摸屏问题
    adb root
    adb disable-verity # 解锁DM-verity
    adb reboot #手机会重启,不用关闭cmd窗口,手机可能需要拔掉数据写重新连接
    adb root
    adb shell mount -o rw,remount /system 
    # 部分机型需要使用:adb shell mount -o rw,remount /
    adb shell remount # 重新加载文件系统
    
    adb push /home/steptp/aosp10-kernel/out/android-msm-pixel-4.9/dist/*.ko /vendor/lib/modules
    adb shell mount -o remount,ro /system #移动完之后记得把权限改回只读
    # 同上,部分机型需要使用:adb shell mount -o remount,ro /
    adb reboot
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值