Android構建boot.img(二):kernel的拷貝與打包

來源:互聯網
上載者:User

上文已經對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的部落格”
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.