Android構建boot.img(二):kernel的拷貝與打包 – Android移動開發技術文章_手機開發 Android移動開發教學課程

上文已經對boot.img其中組成部分之一ramdisk.img做瞭分析,boot.img另外一個重要的組成部分就是kernel瞭,

這裡所說的kernel,可以隻理解為位於out/target/product/tcc8800/中的kernel文件,本文主要分析kernel的拷貝

過程以及如何被打包到boot.img中。經過分析得知位於out/target/product/tcc8800/中的kernel文件其實就是內核

編譯後的Image文件,位於kernel/arch/arm/boot目錄下,線索就是這個Image文件,經過搜索發現一處定義:

LOCAL_KERNEL :=  kernel/arch/arm/boot/Image

該定義位於devices/telechips/tcc88xx-common/BoardConfigCommon.mk中,緊接著,在同目錄的Android.mk中

有以下一段定義:

PRODUCT_COPY_FILES += \

       $(LOCAL_KERNEL):kernel

意在將Image文件拷貝且重命名為kernel,隨後的拷貝設置是在build/core/Makefile中完成的,在此略掉。

那麼,拷貝完成後,kernel文件如何被打包到boot.img中呢?同樣在build/core/Makefile中有以下一段內容:

INTERNAL_BOOTIMAGE_ARGS := … –kernel $(INSTALLED_KERNEL_TARGET)

現在的問題就是查看 INSTALLED_KERNEL_TARGET的定義,該宏位於build/target/board/Android.mk中:

INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel

內容很明顯瞭,至此,內核Image算是到位瞭。

 另外INSTALL_KERNEL_TARGET定義在build/target/board/Android.mk中有點怪怪的,

build/target/board/Android.mk在main.mk中通過subdir_makefiles抽取得到,並包含進main.mk中

 作者“Weike的博客”
 

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。