Android系統 boot.img 結構
阿新 • • 發佈:2019-02-17
【前言】
本文以我使用的 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 的啟動引數
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。