1、ramdisk介紹
ramdisk經過直面意思就大概能理解意思,ram disk虛擬內存盤,將ram模擬成硬盤來使用的文件系統。對於傳統的磁盤文件系統來講,這樣作的好處是能夠極大提升文件訪問速度;但因爲是ram,因此 在掉電後,這部份內容不能保存。ramdisk文件系統是在系統上電後直接從磁盤一次性加載到內存,在整個運行期間都不會有寫回操做,因此,任何修改都掉 電後丟失。android
2、ramdisk.img介紹
ramdisk.img是android打包生成的,解壓ramdisk.img後對比root根目錄很類似,因此ramdisk是虛擬文件系統。這裏主要講解如何解壓ramdisk.img。spa
file ramdisk.img --ramdisk.gz: gzip compressed data, from Unix -----可知ramdisk.img是gz的文件 mv ramdisk.img ramdisk.gz -----更改後綴名 gunzip ramdisk.gz -----解壓,會生成ramdisk文件 file ramdisk --ramdisk: ASCII cpio archive (SVR4 with no CRC) cpio -i -F ramdisk
3、ramdisk、boot.img、recovery.img之間的關係
ramdisk.img會被打包到boot.img和recovery.img中(不是同一個ramdisk.img).3d
ramdisk.img中比較重要的文件是"init","init.rc",其中init是system/core/init/init.c編譯而來,boot.img中ramdisk裏的init.rc位於system/core/init/init.rc,而recovery.img中ramdisk裏的init.rc位於bootable/recovery/etc/init.rc。code
kernel加載結束之後第一個進程是執行init,init會解析init.rc文件,並起相應的服務。由此能夠知道正常開機和進入recovery模式起的進程是不一樣的。blog
下面的代碼位於bootable/recovery/etc/init.rc,由此可知,進入recovery模式後會執行sbin/recovery,此文件是bootable/recovery/recovery.cpp生成(可查看對應目錄的Android.mk查看)。進程
service recovery /sbin/recovery seclabel u:r:recovery:s0