Android文件系統的提取方法(一)

有不少方法能夠製做提取Android的文件系統,今天我給你們講一下如何從make完成的source code中把文件系統提取出來。linux

在編譯完成的android源碼目錄中,文件系統的存放位置是:source/out/target/product/generic/android

一、Android文件系統的結構c#

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目錄下。ide

二、分離Android文件系統出來spa

system.img,ramdisk.img,userdata.img映像文件是採用cpio打包、gzip壓縮的,能夠經過file命令驗證:code

root@linux-home:~/kernel/out/target/product/generic# file ramdisk.img
ramdisk.img: gzip compressed data, from Unixip

Android源碼編譯後除了生成system.img,userdata.img以外還生成system和 userdata文件夾,所以不須要解壓它們。Android源碼編譯後還生成root文件夾,其實root下的文件與 ramdisk.img 裏的文件是同樣的,不過這裏仍是介紹怎樣把 ramdisk.img解壓出來:get

將ramdisk.img複製一份到任何其餘目錄下,將其名稱改成ramdisk.img.gz,再用gunzip命令將其解壓,操做以下源碼

 

//將ramdisk複製到當前工做目錄qt

root@linux-home:~# cp kernel/out/target/product/generic/ramdisk.img ./
root@linux-home:~# ls
android2.3.6-source.tar.bz2  Documents  overview.png  qt-book-examples.tar.gz
android_fs_rjm.tar.bz2       Downloads  Pictures      ramdisk.img
bin                          kernel     Public        Templates
Desktop                      Music      qt-book       Videos

//將其命名爲ramdisk.img.gz
root@linux-home:~# mv ramdisk.img ramdisk.img.gz

//用gunzip解壓
root@linux-home:~# gunzip ramdisk.img.gz

 

 

接下來,創建一個叫ramdisk的文件夾,進入,輸入如下命令

cpio -i -F ../ramdisk.img

而後 ls

過程以下:

root@linux-home:~# cd ramdisk
root@linux-home:~/ramdisk# ls
root@linux-home:~/ramdisk# cpio -i -F ../ramdisk.img
456 blocks
root@linux-home:~/ramdisk# ls
data          dev   init.goldfish.rc  proc  sys     ueventd.goldfish.rc
default.prop  init  init.rc           sbin  system  ueventd.rc

 

至此咱們已經能夠看到文件系統的內容了。

 

 

最後,把Android源碼編譯後生成的system和 userdata裏的文件複製到 ramdisk/system和 ramdisk/userdata下。這樣就獲得一個文件系統了。你就能夠用nfs或者別的方式去掛載文件系統了。

相關文章
相關標籤/搜索