本文是在上文1. 编译安卓(AOSP)10.0.0的基础上进行的,虚拟机环境就是上文结束时的环境。

上文中编译的安卓源码中并不包含内核的源码,只有一个编译好的内核镜像。因此,要研究安卓内核,首先需要下载和编译安卓内核。


下载内核源码

1)查看内核版本

首先需要看一下内核的版本,在上文编译AOSP10源码并刷入手机后,可以在手机中看到内核版本

 2)下载该内核版本对应的源码

cd ~/Documents
git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/msm.git
cd msm
git checkout 83bee1dc48e8

 这里的分支"83bee1dc48e8"就是上面的手机截图中内核版本里g后面的数字

编译

 3)安装libssl(不装编译的时候会报错)

sudo apt install libssl-dev

 4)去掉内核校验(不然重刷内核后触屏没有反应)

 

5)将编译工具链加入到环境变量中并编译

cd msm
export PATH=$PATH:/home/test/Documents/aosp10/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin
export PATH=$PATH:/home/test/Documents/aosp10/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin
export PATH=$PATH:/home/test/Documents/aosp10/prebuilts/misc/linux-x86/dtc
export PATH=$PATH:/home/test/Documents/aosp10/prebuilts/misc/linux-x86/libufdt
export PATH=$PATH:/home/test/Documents/aosp10/prebuilts/misc/linux-x86/lz4
export ARCH=arm64
export CROSS_COMPILE=/home/test/Documents/aosp10/prebuilts/gcc/linux-x86/aarch64/aarch64-linux-android-4.9/bin/aarch64-linux-android-
export CROSS_COMPILE_ARM32=/home/test/Documents/aosp10/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/bin/arm-linux-androideabi-
export CC=/home/test/Documents/aosp10/prebuilts/clang/host/linux-x86/clang-3289846/bin/clang
make wahoo_defconfig
make -j16

报错

 解决:修改"drivers/thermal/thermal_core.c"文件

修改前

修改后

 继续编译

make -j16

编译成功

打包并刷入手机 

6)打包

cd ~/Documents/aosp10
export TARGET_PREBUILT_KERNEL=/home/test/Documents/msm/arch/arm64/boot/Image.lz4-dtb
source build/envsetup.sh
lunch
aosp_walleye-userdebug
time make bootimage

7)刷入手机

新开一个terminal

cd ~/Documents/aosp10
sudo su
source build/envsetup.sh
lunch
aosp_walleye-userdebug
adb reboot bootloader
cd out/target/product/walleye/
fastboot flash boot boot.img
fastboot reboot

 成功刷入手机

本文涉及到的知识主要和Android架构中的linux内核层相关

参考

[原创]编译内核(Pixel 2)-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

[原创]实操篇- pixel 2 刷8.0.0/8.1.0 AOSP +4.4 Kernel (重点解决刷完触屏失灵问题)-Android安全-看雪论坛-安全社区|安全招聘|bbs.pediy.com

《来自高纬的对抗:定制安卓内核过反调试》

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐