Android构建boot.img(二):kernel的拷贝与打包
上文已經(jīng)對boot.img其中組成部分之一ramdisk.img做了分析,boot.img另外一個(gè)重要的組成部分就是kernel了,
這里所說的kernel,可以只理解為位于out/target/product/tcc8800/中的kernel文件,本文主要分析kernel的拷貝
過程以及如何被打包到boot.img中。經(jīng)過分析得知位于out/target/product/tcc8800/中的kernel文件其實(shí)就是內(nèi)核
編譯后的Image文件,位于kernel/arch/arm/boot目錄下,線索就是這個(gè)Image文件,經(jīng)過搜索發(fā)現(xiàn)一處定義:
LOCAL_KERNEL :=? kernel/arch/arm/boot/Image
該定義位于devices/telechips/tcc88xx-common/BoardConfigCommon.mk中,緊接著,在同目錄的Android.mk中
有以下一段定義:
PRODUCT_COPY_FILES += \
?????? $(LOCAL_KERNEL):kernel
意在將Image文件拷貝且重命名為kernel,隨后的拷貝設(shè)置是在build/core/Makefile中完成的,在此略掉。
那么,拷貝完成后,kernel文件如何被打包到boot.img中呢?同樣在build/core/Makefile中有以下一段內(nèi)容:
INTERNAL_BOOTIMAGE_ARGS := ... --kernel $(INSTALLED_KERNEL_TARGET)
現(xiàn)在的問題就是查看 INSTALLED_KERNEL_TARGET的定義,該宏位于build/target/board/Android.mk中:
INSTALLED_KERNEL_TARGET := $(PRODUCT_OUT)/kernel
內(nèi)容很明顯了,至此,內(nèi)核Image算是到位了。
?另外INSTALL_KERNEL_TARGET定義在build/target/board/Android.mk中有點(diǎn)怪怪的,
build/target/board/Android.mk在main.mk中通過subdir_makefiles抽取得到,并包含進(jìn)main.mk中
總結(jié)
以上是生活随笔為你收集整理的Android构建boot.img(二):kernel的拷贝与打包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android构建boot.img(一)
- 下一篇: Mtk Android 打包解包*.im