1. 程式人生 > >android system.img,ramdisk.img,boot.img 分析

android system.img,ramdisk.img,boot.img 分析

android 原始碼編譯後得到system.img,ramdisk.img,userdata.img映像檔案。其中, ramdisk.img是emulator的 檔案系統,system.img包括了主要的包、庫等檔案,userdata.img包括了一些使用者資料,emulator負責載入這3個映像檔案後,會 把system.img和userdata.img分別載入到 ramdisk檔案系統中的system和 userdata目錄下(會發覺有相似性)。

我們會發覺編譯生成的root資料夾內容與android執行時根目錄內容相似,ramdisk根檔案系統中包含一些對於啟動android的很重要的文 件,比如核心啟動完後加載的第一個程序init、一些重要的配置檔案等,總之它控制著整個android的啟動。根據 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快取大小

生成的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 ,我們可以學習怎麼樣把 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下。這樣就得到一個檔案系統了。

還會發現,根檔案系統下的sys就是一個linux。

=============================================================

在android 1.5 模擬器上載入 android 2.1 的系統:

本 文編譯出來的3個img檔案是2.1版的。可以用system.img和ramdisk.img 替換1.5的版本:

命 令如下:

打 開android 1.5的模擬器 ,同時載入system.img和ramdisk.img

emlator -avd sdk_1_5 -ramdisk [ramdisk.img路徑] -system [system.img的路徑]

啟 動後可以看到設定中的手機版本變成了2.1版。

=============================================================

對於android系統資料夾,比如out/target/prod t/smdk6410/system目錄,說明如下:

system/app 這個裡面主要存放的是常規下載的應用程式,可以看到都是以APK格式結尾的檔案。在這個資料夾下的程式為系統預設的元件,自己安裝的軟體將不會出現在這 裡,而是/data/資料夾中。

system/bin 這個目錄下的檔案都是系統的本地程式,從bin資料夾名稱可以看出是binary二進位制的程式,裡面主要是Linux系統自帶的元件。

system/etc 從資料夾名稱來看儲存的都是系統的配置檔案,比如APN接入點設定等核心配置。

system/fonts 字型資料夾,除了標準字型和粗體、斜體外可以看到檔案體積最大的可能是中文字型檔,或一些unicode字型檔。

system/framework 主要是一些核心的檔案,從字尾名為jar可以看出是是系統平臺框架。

system/lib lib目錄中存放的主要是系統底層庫,如平臺執行時庫。

system/media 鈴聲音樂資料夾,除了常規的鈴聲外還有一些系統提示事件音

system/usr 使用者資料夾,包含共享、鍵盤佈局、時間區域檔案等。

轉自:

 http://blog.csdn.net/cx968968/archive/2010/08/17/5817662.aspx

相關推薦

android system.img,ramdisk.img,boot.img 分析

android 原始碼編譯後得到system.img,ramdisk.img,userdata.img映像檔案。其中, ramdisk.img是emulator的 檔案系統,system.img包括了主要的包、庫等檔案,userdata.img包括了一些使用者資料,emu

android系統映象:boot.img kernel.img ramdisk.img system.img userdata.img cache.img recovery.img

boot.img(kernel.img+ramdisk.img) ramdisk.img(/) system.img(/system) userdata.img(/data) cache.im

android解析 ramdisk.img boot.img system.img

img解析: ramdisk.img:android根檔案系統,在android編譯系統生成的out/target/product/root目錄中 結構: ./init.trout.rc ./default.prop 儲存一些除錯引數,對於開發者相當重要 ./proc ./dev ./init.rc

Android構建boot.img:root目錄與ramdisk.img的生成

以TCC88XX為例,當在Android頂層原始碼目錄使用make編譯完成後,會生成這樣一個目錄:out/target/product/tcc8800,該目錄內部有我們需要的boot.img和system.img,boot.mg使用kernel和out/target/prod

Android構建boot.img(一):root目錄與ramdisk.img的生成

以TCC88XX為例,當在Android頂層原始碼目錄使用make編譯完成後,會生成這樣一個目錄: out/target/product/tcc8800,該目錄內部有我們需要的boot.img和system.img,boot.mg 使用kernel和out/targe

修改Android映象檔案 ramdisk.imgsystem.img、userdata.img獲取root許可權

        首先,介紹一下這三個檔案。         ramdisk.img 是你make android原始碼後,生成的/out/target/product/generic/root目錄下經過打包壓縮而成的。         system.img 是你make a

android系統備份----即提取system.imgboot.img的方法!(轉載)

操作條件: 1.安裝好手機的USB驅動2.需要root許可權3.adb環境正式開始提取:1.解壓adbs,放到任意目錄下,比如放到C盤根目錄下2.在windows下開啟cmd命令列,進入到adbs目錄下,即C:\adbs>3.在當前游標下輸入adb devices,

如何掛載android system.img

    android開發的同志,有沒有遇到一些問題需要對比一下兩個版本img的區別是啥?比如一個功能,A版本功能正常,B 版本功能異常,而兩者是在同一原始碼環境編譯的,那麼就得確認一下這倆版本的img到底區別在哪裡?比如system.img。 首先使用simg2i

Android boot.img與recovery.img的解包中瞭解其資料組成

從Android boot.img與recovery.img的解包中瞭解其資料 又到了忙碌的季節,一次要處理N多事情。最近需要從boot.img中取出ramdisk。不同的專案中kernel是一樣的,ramdisk中的資源不一樣,直接取ramdisk與新編譯的kernel打包在一起,方便

使用fastboot工具刷入recovery.imgboot.imgsystem.img

解壓FastBoot工具.zip ,將解壓得到的 FastBoot資料夾複製到任意盤如:D盤,,將要刷入手機的recovery.img、recovery.img等放到FastBoot資料夾 安裝好手機型號對應的USB驅動,手機進入fastboot模式 開啟cmd,進

boot.img recovery.img ramdisk.img ramdisk-recovery.img 解壓方法

1、下載工具 wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

android 手機中boot.img基址的計算方法(zz)

boot.img基址 base的計算方法 如果您看這個帖子,沒有耐心的話,我只能對你說,出現任何問題都是你自己的錯,有點耐心繼續 看吧,雖然在文章最後有點邪惡,大家原諒一下!我在工具包中給了一個引數,對於我的GT540肯定沒有什麼問題,但是對於其他手機我不敢保證,所以可能還

快速編譯system.imgboot.img的方法

快速編譯system.img,可以使用這個命令: #make systemimage  快速編譯boot.img,可以使用以下命令: #make bootimage  快速編譯userdata.img,可以使用以下命令: # make userdataimage-nodeps 但是,對於bootimage,

boot.img分析

3 boot.img的載入  在lk 中, smem_ptable_init 函式中會初始化 smem_apps_flash_start ,它通過讀share memory ,也就是ARM9端傳入的0:APPS   這樣在targe_init函式中,會將offset = smem_apps_flash_st

通過分析mkbootimg原始碼瞭解boot.img檔案結構

平臺:Android 4.4.2 原始碼路徑:/system/core/mkbootimg /* ** +-----------------+ ** | boot header     | 1 page ** +-----------------+ ** | kernel

Android boot.img的由來

boot.img是主要由以上kernel和ramdisk.img生成得到的,具體可參考build/core/Makefile檔案;另外boot.img還包括一些必須的檔案頭資訊,它們之間非頁面對齊部分用0填充。 mkbootimg程式由system/core/mkbootimg工程生成得到,為此我們來看看其

android boot.img

android在啟動時uboot判斷有沒有組合健按下或者cache分割槽的升級檔案來決定進入哪個系統(可能還有別的判斷方式) 有組合健按下或者cache分割槽有升級檔案,則載入recovery.img進入升級系統。否則載入boot.img進入正常系統 此次記錄3個要點: 1

Cubietruck---8. u-bootboot.img簡略分析

一. u-boot的編譯與連結1. lichee下編譯命令[email protected]:/work/ct/lichee$  ./build.sh -p sun7i_android -m ubootu-boot的編譯是用指令碼lichee/u-boot/bui

imx平臺,通過fastboot燒寫boot.img system.img recovery.img映象

1.在串列埠上,進入u-boot模式,輸入fastbootMX6Q SABRESD U-Boot > fastbootfastboot is in init......flash target i

Android系統 boot.img 結構

【前言】   本文以我使用的 Intel x86 cherrytrail 平臺為例進行說明,部分細節可能會與其它裝置上看到的不同,比如 easyimage 是我們產品上自定義的分割槽,其它裝置上如果沒