1. 程式人生 > >Android ramdisk.img 分析、解壓和壓縮

Android ramdisk.img 分析、解壓和壓縮

一、ramdisk介紹

ramdisk通過直面意思就大概能理解意思,ram disk虛擬記憶體盤,將ram模擬成硬碟來使用的檔案系統。對於傳統的磁碟檔案系統來說,這樣做的好處是可以極大提高檔案訪問速度;但由於是ram,所以在掉電後,這部分內容不能儲存。ramdisk檔案系統是在系統上電後直接從磁碟一次性載入到記憶體,在整個執行期間都不會有寫回操作,所以,任何修改都掉電後丟失。

二、ramdisk.img介紹

ramdisk.img是編譯Android生成的一個映象檔案,最後和kernel一起打包生成boot.img映象。ramdisk.img中主要是存放android啟動後第一個使用者程序init可執行檔案和init.*.rc等相關啟動指令碼以及sbin目錄下的adbd工具。如下圖所示


ramdisk.img是將上圖目錄打包壓縮而來的,我們可以通過下面命令,來解壓出其中的內容
首先使用file命令檢視ramdisk.img檔案型別

file ramdisk.img
ramdisk.img: gzip compressed data, from Unix
看出為gzip壓縮過的檔案,將ramdisk.img重新命名為ramdisk.img.gz
mv ramdisk.img ramdisk.img.gz
再用file來看一下ramdisk.img,此時為
ramdisk.img: ASCII cpio archive (SVR4 with no CRC)
這時候使用cpio來提取ramdisk.img中的內容
mkdir temp
cp temp
cpio -i -F ../ramdisk.img



android的init.rc指令碼就是ramdisk一個例子,在板子上修改是沒有用的,重啟丟失,只有修改device/平臺/../init.rc然後重新make bootimage重新生產boot.img燒錄到板子上才能修改成功。