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