編譯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

   

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