1. 程式人生 > >Android系統 boot.img 結構

Android系統 boot.img 結構

【前言】
  本文以我使用的 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 kernel
drwxrwxr-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。