文件系統根目錄結構分析
Android文件系統根目錄結構如下:
cache:是緩存臨時(shí)文件夾,據說(shuō)是除了T-mobile的OTA更新外,別無(wú)用處。
sdcard:是Android手機中SD卡的文件夾路徑。
etc:指向 /system/etc ,眾所周知的配置文件存放目錄。
sys:用于掛載 sysfs文件系統。 在設備模型中,sysfs文件系統用來(lái)表示設備的結構。將設備的層次結構形象的反應到用戶(hù)空間中,用戶(hù)空間可以修改sysfs中的文件屬性來(lái)修改設備的屬性值 。
sbin:只放了一個(gè)用于調試的adbd程序。
proc:/proc 文件系統下的多種文件提供的系統信息不是針對某個(gè)特定進(jìn)程的,而是能夠在整個(gè)系統范圍的上下文中使用。
data:存放用戶(hù)安裝的軟件以及各種數據。
root:空。
dev:Linux系統常規文件夾,里面的文件很多都是設備模擬的文件系統,一般用戶(hù)無(wú)需理會(huì )。
system:是一個(gè)很重要的目錄,系統中的大部分東西都在這里了,以下是目錄結構:udisk/flash/udiskint:都是到/mnt相應目錄的軟鏈接(掛載目錄)。
sqlite_stmt_journals:一個(gè)根目錄下的tmpfs文件系統,用于存放臨時(shí)文件數據。(Android原生態(tài)系統下存在)
下面介紹非目錄的文件:
runme.sh用于 SD 卡中 EXT2文件系統的自動(dòng)掛載動(dòng)作的腳本。
init.trout.rc,init.rc,init.goldfish.rc 是初始化文件.
init是系統啟動(dòng)到文件系統的時(shí)候第一個(gè)運行的程序。
從以上的根目錄分析來(lái)看,Android的根文件系統并非標準的Linux文件系統,所以以后還得仔細分析一下啟動(dòng)過(guò)程,才能認識Android系統。
主要來(lái)分析一下Android文件系統的/system目錄的結構:
/system目錄是在A(yíng)ndroid文件系統占有及其重要的位置,基本上所有的工具和應用程序都在這個(gè)目錄下,我看來(lái)是一個(gè)真正的rootfs。
它在A(yíng)ndroid手機中存放在nandflash的mtd3中,是一個(gè)yaffs2文件系統,在啟動(dòng)時(shí)被掛載在root的/system目錄下,其中包含有:
xbin:下放了很多系統管理工具,這些工具不是到toolbox的鏈接,每個(gè)都是可執行程序。如果你看 到這些命令你會(huì )發(fā)現他們根本不常用,他們都是為系統管理員準備的,是一些系統管理和配置工具。這個(gè)文件夾的作用相當于標準Linux文件系統中的 /sbin。我的手機此目錄下有busybox,肯定是改過(guò)的,應該是破解者加上的。
modules:使用來(lái)存放內核模塊(主要是fs和net)和模塊配置文件的地方。
framework: 是Java平臺的一些核心文件,屬于JAVA平臺系統框架文件。里面的文件都是.jar和.odex文件。
(什么是odex文件? odex是被優(yōu)化過(guò)的JAVA程序文件,體積通常是.jar的4倍左右,執行效率比.jar高。)
fonts:很顯然,這是字體庫文件的存放目錄。
etc:這里存放了系統中幾乎所有的配置文件,根目錄下的/etc就鏈結于此。
build.prop:是一個(gè)屬性文件,在A(yíng)ndroid系統中.prop文件很重要,記錄了系統的設置和改變,類(lèi)似于/etc中的文件。
media:里面主要是存放了系統的鈴聲的,分為 notifications(通知)、ui(界面)、alarms(警告)和ringtones(鈴聲),里面都是.ogg音頻文件。
bin:眾所周知,是存放用戶(hù)常用的工具程序的,其中大部分是到toolbox的鏈接(類(lèi)似嵌入式Linux中的busybox)。toolbox應該是google簡(jiǎn)化版的busybox,我還沒(méi)深入研究過(guò)。
usr :用戶(hù)的配置文件,如鍵盤(pán)布局、共享、時(shí)區文件等等。您可以cat 來(lái)看看。
app:顧名思義,存放的是Android系統自帶的JAVA應用程序。
lost+found:yaffs文件系統固有的,類(lèi)似回收站的文件夾,只有是yaffs文件系統都會(huì )有。
lib:存放幾乎所有的共享庫(.so)文件。
sd:SD卡中的EXT2分區的掛載目錄。
init.rc:一個(gè)初始化腳本,用于將/system/modules和/system/xbin掛載為cramfs,避免系統被無(wú)意破壞。
其它:
media/audio:這里面保存著(zhù)安卓系統默認的鈴聲,alarms是鬧鈴提醒的,notification是短信或提示音,ringtones是來(lái)電鈴聲,而ui是一些界面音效,比如鍵盤(pán)敲擊聲。
data/data:這里是每個(gè)安裝過(guò)應用的用戶(hù)文件存儲位置,一般為設置文件、數據庫或臨時(shí)緩存文件,進(jìn)入后以每個(gè)軟件的package name包名來(lái)命名。
mnt/sdcard/dcim或/sdcard/dcim:這個(gè)DCIM文件夾是干什么用的,這里android123提示大家,一般數碼相機都有DCIM文件夾,其中進(jìn)入后Camera為手機攝像頭拍攝的照片或視頻存放位置。
針對RAM和ROM進(jìn)行分析:
一部Android手機存在不同的存儲空間類(lèi)型。512MB ROM和512MB RAM,還有一個(gè)SDHC的擴展槽,標配2G內存卡,最大可支持32G內存卡。那么這些數據都是什么意思呢?
RAM:
RAM是Random Access Memory的縮寫(xiě),中文名稱(chēng)是隨機存取存儲器。對于大多數的計算機和智能手機來(lái)說(shuō),RAM可以使一個(gè)軟件快速并直接地讀取和寫(xiě)入數據。當斷電的時(shí)候RAM中的內容就會(huì )丟失,比如手機關(guān)機。RAM的大小決定了你能同時(shí)運行幾個(gè)程序,也決定了你最大能加載多大的文件。當RAM不足的時(shí)候就會(huì )提示“Out of memory”錯誤。因為Android 2.2能提前預測當需要內存的時(shí)候,哪一個(gè)程序將要被從RAM中去除,所以RAM的信息并沒(méi)有顯示到“設置”菜單里。Android 2.2之前的版本最大只支持256MB內存,但是Android 2.2可以支持大容量?jì)却?,比?12MB RAM。
ROM:
ROM是Read-Only Memory的縮寫(xiě)。以前常用來(lái)表示一旦出廠(chǎng)后上面存儲的數據就不能被修改,同時(shí)即使沒(méi)有電,數據也不會(huì )丟失。后來(lái),一種新型的ROM——EEPROM,代替了原來(lái)的ROM。這種EEPROM允許用高一點(diǎn)的電壓改寫(xiě)數據以便用于升級。以后Flash Memory(閃存)代替了EEPROM,閃存可以很容易的修改內容?,F在我們說(shuō)智能手機中的ROM一般指的是Flash Memory了。
手機中的ROM一般被分成若干區域。在A(yíng)ndroid中,有一部分被分給了操作系統,分給操作系統的這部分通常被保護起來(lái),用戶(hù)不能向里面寫(xiě)入數據。通常我們說(shuō)Rooting指的就是獲得操作系統的最高權限,因此我們可以讀取和寫(xiě)入到這部分區域。比如替換系統默認的圖片。
另外ROM還分了一部分空間給用戶(hù)作為存儲數據用,用于存儲下載應用程序,保存用戶(hù)數據等。這部分區域已經(jīng)完全脫離了“Read-Only”,不再“只讀”。在A(yíng)ndroid 2.2版本中,這部分空間被掛載到/mnt/asec目錄下,我們可以進(jìn)入查看下載的應用程序的APK文件。這部分空間有時(shí)被稱(chēng)作“手機內部存儲”,想一下Windows中的C盤(pán),windows的文件夾是不可見(jiàn)的并且在系統分區。在我的LG Optimus中,最初有180MB可用,這些可用的空間隨著(zhù)安裝的程序的增多而變小。我們可以通過(guò)“設置”-“SD卡和手機內存”-“手機內部存儲”來(lái)查看剩余的空間大小。最后強調一點(diǎn),當可用空間變得非常小的時(shí)候,就不能再下載或者安裝應用程序了。
Micro SD/SDHC
這是增加手機存儲空間的唯一方法。他相當于一個(gè)計算機的外部硬盤(pán)。LG Optimus出廠(chǎng)的時(shí)候配置了一個(gè)2GB SD卡,我們用32GB及以下的內存卡替換掉他。SD卡目錄掛載到/mnt/sdcard目錄下,可以去“設置”-“SD卡和手機內存”-“SD卡”查看。
在SD卡上,你可以存儲任何的數據,電影,音樂(lè ),照片等隨你。如果你喜歡你可以把手機作為一個(gè)(非常昂貴的)讀卡器^_^。在A(yíng)ndroid 2.2手機中,一部分應用程序可以從手機內部存儲移動(dòng)到SD卡上,以便節約寶貴的內部存儲空間。不過(guò)你得記住,不是所有的程序或者程序的一部分能被移動(dòng)到SD卡上的。所以,如果你的手機內部存儲空間幾乎沒(méi)有空閑,通過(guò)一味的增大SD卡的容量,并不會(huì )對你有幫助。
當你想替換一個(gè)SD卡的時(shí)候,記得在摳下老的SD卡之前,先去“設置”-“SD卡和手機內存”-“SD卡”-“卸下SD卡”(別忘了Android是基于Linux的)。新插入的SD卡會(huì )自動(dòng)的被加載。
想要得到內存和存儲卡的更詳細信息,需要安裝第三方相關(guān)應用程序。
結合網(wǎng)絡(luò )上相關(guān)資料,初步概括了文件系統相關(guān)目錄說(shuō)明,后續會(huì )繼續添加,歡迎博友指點(diǎn)?。?!
聯(lián)系客服