天天看點

android system.img userdata.img

android system.img userdata.img

1、android 文 件系統的結構

android 源 碼編譯後得到system.img ,ramdisk.img,userdata.img 映像檔案。其中, ramdisk.img是emulator的檔案系統,system.img 包括了主要的包、庫等文 件,userdata.img包括了一些使用者數 據,emulator加載這3個映像檔案後,會把 system和 userdata分别加載到 ramdisk檔案系統中的system和 userdata目錄下。是以,我們可以把ramdisk.img裡的所有檔案複制出來,system.img 和 userdata.img分别解壓到 ramdisk檔案系統中的system和 userdata目錄下。

2、分離android 文 件系統出來

system.img ,ramdisk.img,userdata.img 映像檔案是采用cpio打包、gzip壓縮的,可以通過file指令驗 證:

file ramdisk.img,輸出:

ramdisk.img: gzip compressed data, from Unix, last modified: Wed Mar 18 17:16:10 2009

Android 源 碼編譯後除了生成system.img ,userdata.img 之外還生成system和 userdata檔案夾,是以不需要解壓它們。Android 源碼編譯後還生成root檔案夾,其實root 下的檔案與 ramdisk.img 裡的檔案是一樣的,不過這裡還是介紹怎樣把 ramdisk.img解壓出來:

将ramdisk.img複制一份到任何其他目錄下,将其名稱改為ramdisk.img.gz,并使用指令

gunzip ramdisk.img.gz

然後建立一個檔案夾,叫ramdisk吧,進入,輸入指令

cpio -i -F ../ramdisk.img

這下,你就能看見并操作ramdisk裡面的内容了。

然後把Android 源 碼編譯後生成的system和 userdata裡的檔案複制到 ramdisk/system和 ramdisk/userdata下。這樣就得到一個檔案系統了。

3、使用網絡檔案系統方式挂載android 檔案系統

是以,我們需要建立/nfsroot目錄,再建立/nfsroot/androidfs目錄,把剛才的android 檔案系統改名為 androidfs,并連結到/nfsroot/androidfs

4、android 内 核引導檔案系統

android 内 核挂載/nfsroot/androidfs之後,根據init.rc,init.goldfish.rc來初始化并裝載系統 庫、程式等直到開機完成。init.rc腳本包括了檔案系統初始化、裝載的許多過程。init.rc的工作主要是:

1)設定一些環境變量

2)建立system、sdcard、data、cache等目錄

3)把一些檔案系統mount到一些目錄去,如,mount tmpfs tmpfs /sqlite_stmt_journals

4)設定一些檔案的使用者群組、權限

5)設定一些線程參數

6)設定TCP緩存大小