编译Android 9.0内核源码并刷入手机

目的:修改内核源码,并刷入手机

步骤如下:

1.获取手机对应的内核下载地址

 参考https://source.android.com/setup/build/building-kernels

我的设备是pixel sailfish,所以对应的源码地址是kernel/msm,编译配置是marlin_defconfig

使用git下载:

git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm.git

 

2.获取手机对应的内核版本

使用如下命令查看:

adb shell cat /proc/version
Linux version 3.18.100-g4212e6b8dac58 (gcc version 4.9.x 20150123 (prerelease) (GCC) ) #42 SMP PREEMPT Sat Dec 29 19:19:56 CST 2018

其中4212e6b8dac58便是这台手机内核的git commit id,通过git切换到对应的id处:

git checkout 4212e6b8dac58

 

3.编译前的准备

    a.先下载32位的编译工具链:

git clone https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9

   b.在内核源码目录下依次执行以下几个命令:

export CROSS_COMPILE=${NDK_PATH}/toolchains/aarch64-linux-android-4.9/prebuilt/linux-x86_64/bin/aarch64-linux-android-
export CROSS_COMPILE_ARM32=${NDK_PATH_32}/arm-linux-androideabi-4.9-master/bin/arm-linux-androideabi-
export ARCH=arm64
export SUBARCH=arm64
make marlin_defconfig

其中${NDK_PATH}是ndk的路径,${NDK_PATH_32}是刚下载的32位工具的路径

执行make marlin_defconfig后会在根目录下产生一个.config文件,如果想修改某些编译选项可以直接修改这个文件.

 如同的手机可能对应的配置文件不同,参考上图1即可.

 

4.开始编译

    直接在根目录执行make即可

  

 

5.编译成功:

Image.lz4-dtb便是编译好的内核文件

 

6.生成新的boot.img

    需要生成boot.img才能输入手机,在aosp目录下执行如下命令:

export TARGET_PREBUILT_KERNEL=/home/yanchen/Dev/android-source/kernel/msm_pixel_9.0_sailfish/arch/arm64/boot/Image.lz4-dtb
rm out/target/product/sailfish/boot.img &&  make bootimage

  TARGET_PREBUILT_KERNEL指向刚编译好的内核文件.

  by the way,如果想要替换boot.img中的default.prop,可以在build/core/Makefile中做如下修改:

   

 

7.刷入手机

      执行如下命令即可:      

fastboot flash boot boot.img

   

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章