[Android]构建boot.img(三):boot.img的生成与结构
2016-01-08 22:13
666 查看
在前两篇同一系列的文章中都提到了以下一段语句:
?
显然,boot.img中包含了Image和ramdisk.img文件,但boot.img中的内容远不只这么多,本文将介绍
boot.img中的其它参数,boot.img的生成以及最终boot.img的组成格式.
INTERNAL_BOOTIMAGE_ARGS还包含以下内容:
1.附加的内核命令行(cmdline): BOARD_KERNEL_CMDLINE
同样在build/core/Makefile中,有以下一段内容(strip起到去除空格的作用):
?
而BOARD_KERNEL_CMDLINE则在文件device/telechips/tcc88xx-common/BoardConfigCommon.mk中定义:
?
2.内核加载的基地址,BOARD_KERNEL_BASE
同样在build/core/Makefile中,有以下一段内容:
?
而BOARD_KERNEL_BASE也在device/telechips/tcc88xx-common/BoardConfigCommon.mk中定义。
?
3.映像的页面大小:BOARD_KERNEL_PAGESIZE
同样在build/core/Makefile中,有以下一段内容:
?
而BOARD_KERNEL_PAGESIZE 却在device/telechips/tcc8800/BoardConfig.mk中定义:
?
剩下的内容就是生成boot.img的关键语句,在 build/core/Makefile中,内容如下:
?
到此,我们可以知道 INTERNAL_BOOTIMAGE_ARGS的内容是:
?
而预知boot.img的格式,必须查看MKBOOTIMG这个程序,其实就是out/host/linux-x86/bin/mkbootimg中的mkbootimg程序。
mkbootimg程序由system/core/mkbootimg工程生成得到,为此我们来看看其中的mkbootimg.c文件,其中有这样一段:
?
可见boot.img是由文件头信息,内核数据以及文件系统数据组成,它们之间非页面对齐部分用0填充(可以
查看write_padding的代码),文件头信息的具体结构可以在system/core/mkbootimg/bootimg.h中看到:
?
其它成员也很明了,由此可知boot.img的大致组成结构了。
-----------------------------------------------------------------------------------------------------------------------------------------------
?
boot.img中的其它参数,boot.img的生成以及最终boot.img的组成格式.
INTERNAL_BOOTIMAGE_ARGS还包含以下内容:
1.附加的内核命令行(cmdline): BOARD_KERNEL_CMDLINE
同样在build/core/Makefile中,有以下一段内容(strip起到去除空格的作用):
?
?
同样在build/core/Makefile中,有以下一段内容:
?
?
同样在build/core/Makefile中,有以下一段内容:
?
?
?
?
mkbootimg程序由system/core/mkbootimg工程生成得到,为此我们来看看其中的mkbootimg.c文件,其中有这样一段:
?
查看write_padding的代码),文件头信息的具体结构可以在system/core/mkbootimg/bootimg.h中看到:
?
-----------------------------------------------------------------------------------------------------------------------------------------------
相关文章推荐
- [Android]构建boot.img(一):root目录与ramdisk.img的生成
- android132 360 05 手机定位
- android studio单元测试
- 【Android Studio】常用快捷键
- Android图片处理
- 【Android Studio】Gradle DSL method not found:'android()'
- Android SearchView设置与用法的那点事儿
- Android 的生命周期知识点问答
- 让多个fragment切换时不被实例化 android
- android 返回键的捕获
- Android Studio日志工具的使用
- 我在Ubuntu上安装Android Studio的全过程
- unregisterReceiver报错处理 android
- android基本控件学习-----ToggleButton&Switch
- Android Studio 1.5 正确导入so文件的方法
- 【Android】INSTALL_FAILED_UPDATE_INCOMPATIBLE
- [Android]代码实现ColorStateList及StateListDrawable
- Android学习之AsyncTask和AsyncTaskLoader
- AndroidStudio使用教程(第七弹)
- Android - AutoCompleteTextView (输入框动态匹配内容)