Android系统 boot.img 结构

来源:互联网 发布:windows movie make 编辑:程序博客网 时间:2024/05/18 00:15

【前言】
  本文以我使用的 Intel x86 cherrytrail 平台为例进行说明,部分细节可能会与其它设备上看到的不同,比如 easyimage 是我们产品上自定义的分区,其它设备上如果没有是正常的。


【正文】
编译完成后我们可以在out/target/product/<ProductModelName>/obj/PACKAGING/target_files_intermediates/<ImageTypeName>/路径下找到打包前的 Android 各镜像文件的原始数据。该路径下包含了以下目录,对应设备上的各个实际分区:

BOOT/COUNTRY/DATA/EASYIMAGE/META/OTA/RADIO/RECOVERY/SYSTEM/

  boot.img 镜像是由 BOOT/ 目录中的数据打包而来。我们进入该目录,查看其中的文件有:

-rw-rw-r--  1  huangqd1 huangqd1     337 Jun 19 16:06 cmdline-rw-rw-r--  1  huangqd1 huangqd1 8514064 Jun 19 16:06 kerneldrwxrwxr-x  1  huangqd1 huangqd1    4096 Jun 19 16:06 RAMDISK

  其中cmdline文件中存放了 Linux Kernel 的启动参数,使用 file 命令查看文件类型为:cmdline: ASCII text, with very long lines
  而kernel就是可执行的 Linux Kernel 文件,使用 file 命令查看文件类型为:kernel: x86 boot sector(因为是 x86 平台,所以是 x86 启动扇区)
  RAMDISK/目录中存放的自然就是根文件系统的文件和目录,部分目录和文件列表如下:

acct/cache/config/country/data/dev/frp/lib/mnt/oem/proc/res/root/sbin/storage/sys/system/...

  在编译 Android 系统镜像时,最终会将 cmdline、kernel、RAMDISK/ 打包并添加上 header 组成我们看到的 boot.img。