boot.img
aosp源码中的boot.img制作工具——mkbotimg,路径system/core/mkbootimg
可以boot.img包括kernel和ramdisk两部分
mkbootimg程序的各参数是由INTERNAL_BOOTIMAGE_ARGS和BOARD_MKBOOTIMG_ARGS来指定的。这两者分别取决于其他makefile中的定义。如BoardConfig.mk中定义的BOARD_KERNEL_CMDLINE在默认情况下会作为--cmdline参数传给mkbootimg;BOARD_KERNEL_BASE则作为--base参数传给mkbootimg。
android系统以“.img”为后缀名,这种类型的文件最初用来表示某个disk的完整复制
boot header
存储内核启动“头部”——内核启动参数等信息,占一页(4K)。参数内容在Mkbootimg.c中的main函数定义,对应boot_img_hdr结构体
使用UltraEditor或WinHex打开boot.img,查看参数信息,与结构体boot_img_hdr吻合
kernel
占据大小:n page=(kernel_size + page_size -1) / page_size,页对齐
ramdisk.img
占据大小:m pages=(ramdisk_size + page_size -1) / page_size
#查看ramdisk内容
$ file ramdisk.img
echo gzip file
$ mv ramdisk.img ramdisk.img.gz
$ gzip -d ramdisk.img.gz
$ file ramdisk.img
echo cpio file
$ cpio -i -F ramdisk.img
second stage
占据大小:o page=(second_size + page_size -1) / page_size
system.img
android系统的运行程序包(framwork等),挂载到设备中的/system节点下。
# 查看system.img内容
· simg2img 可执行文件位于源码out/host/linux-x86/bin中 源代码位于system/extras/ext4_utils
$ ./simg2img --h
Usage:simg2img <sparse_image_file><raw_image_file>
$ ./simg2img system.img system.img.step1
#将system.img.step1挂载
$ mkdir system_extracted
$ sudo mount -o system.img.step1 system_extracted