Android 檔案系統分析

來源:互聯網
上載者:User

文章出處http://code.google.com/p/androidteam/wiki/AndroidFileSystemAnalysis1Android 檔案系統分析
  • 系統內容: ubuntu9.10
  • Date: 03/09/2010

將Android源碼編譯後會在/home/zhaoruijia/zhaoAndroid/out/target/product/generic目錄下發現編譯後產生的3個鏡像檔案:system.img,ramdisk.img,userdata.img,其中system.img包括了主要的包、庫等檔案,userdata.img包括了一些使用者資料,模擬器載入這3個映像檔案後,會把
system和data分別載入到ramdisk檔案系統中的system和data目錄下ramdisk.img是模擬器的檔案系統,我們可以通過輸入:

zhaoruijia@zhaoruijia-ubunut:~$ androidemu zhaoruijia@zhaoruijia-ubunut:~$ adb shell
# lssqlite_stmt_journalsconfigcachesdcarddetcsystemsyssbinprocinit.rcinit.goldfish.rcinitdefault.propdatarootdev

觀察到在模擬器的shell雷根檔案系統結構,如果要進行核心移植,根檔案系統是必不可少的,目前有兩種方法獲得一個根檔案系統,一種方法是將模擬器中的檔案系統通過打包的方式拖出來,然後以此為基礎通過busybox重新定製一個根檔案系統,還有一種方法就是我們可以把ramdisk.img裡的所有檔案複製出來,system.img和userdata.img分別解壓到ramdisk檔案系統中的system和data目錄下,這裡由於Android源碼編譯後除了產生system.img,userdata.img之外還產生system和
data檔案夾,因此不需要解壓它們。只需將他們拷貝出來即可,然後使用網路檔案系統方式掛載Android檔案系統,具體步驟如下:

1、將ramdisk.img複製到/home/zhaoruijia/workspace1目錄下並將其名稱改為ramdisk.img.gz

 zhaoruijia@zhaoruijia-ubunut:~/workspace1$ mv ramdisk.img ramdisk.img.gz

並使用命令

zhaoruijia@zhaoruijia-ubunut:~/workspace1$ gunzip ramdisk.img.gz zhaoruijia@zhaoruijia-ubunut:~/workspace1$ lsramdisk  ramdisk.img

2、建立一個ramdisk檔案夾然後輸入如下:

zhaoruijia@zhaoruijia-ubunut:~/workspace1$ mkdir ramdiskzhaoruijia@zhaoruijia-ubunut:~/workspace1$ cd ramdiskzhaoruijia@zhaoruijia-ubunut:~/workspace1/ramdisk$ cpio -i -F /home/zhaoruijia/workspace1/ramdisk.img494 塊

3、然後把Android源碼編譯後產生的system和data裡的檔案複製到 ramdisk/system和 ramdisk/data下。這樣就得到一個檔案系統了。

zhaoruijia@zhaoruijia-ubunut:~/workspace1/ramdisk$ ls -l總用量 152drwxrwx--x  2 zhaoruijia zhaoruijia   4096 2010-03-10 17:42 data-rw-r--r--  1 zhaoruijia zhaoruijia    118 2010-03-10 17:42 default.propdrwxr-xr-x  2 zhaoruijia zhaoruijia   4096 2010-03-10 17:42 dev-rwxr-x---  1 zhaoruijia zhaoruijia 103184 2010-03-10 17:42 init-rwxr-x---  1 zhaoruijia zhaoruijia   1677 2010-03-10 17:42 init.goldfish.rc-rwxr-x---  1 zhaoruijia zhaoruijia  12215 2010-03-10 17:42 init.rcdrwxr-xr-x  2 zhaoruijia zhaoruijia   4096 2010-03-10 17:42 procdrwxr-x---  2 zhaoruijia zhaoruijia   4096 2010-03-10 17:42 sbindrwxr-xr-x  2 zhaoruijia zhaoruijia   4096 2010-03-10 17:42 sysdrwxr-xr-x 10 zhaoruijia zhaoruijia   4096 2010-03-10 17:52 system

4、我們要使用網路檔案系統方式掛載Android檔案系統因此,我們需要建立/nfsroot目錄,再建立/nfsroot/Androidfs目錄,把剛才的Android檔案系統改名為Androidfs,並連結到/nfsroot/Androidfs

5、Android核心掛載/nfsroot/Androidfs之後,根據init.rc,init.goldfish.rc來初始化並裝載系統庫、程式等直到開機完成。init.rc指令碼包括了檔案系統初始化、裝載的許多過程。至於具體啟動過程我會在下一篇文章中結合init.c源碼來分析。

遺留問題:由於核心移植沒有成功能否通過網路檔案系統方式掛載還是未知數,本文只是一個參考,個人更看好從模擬器中獲得根檔案系統後通過busybox定製,做到後面再看了

http://home.eeworld.com.cn/my/space.php?uid=181697&do=blog&id=42953

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.