今天要來分析一下Android檔案系統的/system目錄的結構。
/system目錄是在Android檔案系統佔有及其重要的位置,基本上所有的工具和應用程式都在這個目錄下,我看來是一個真正的rootfs。他在Android手機中存放在nand flash的mtd3中,是一個yaffs2檔案系統,在啟動時被掛載在root的/system目錄下,其中包含有:
# pwd && ls -a -l
/system
drwxr-xr-x root 208 1970-01-01 08:00 xbin
drwxr-xr-x root root 1970-01-01 08:00 modules
drwxr-xr-x root root 2008-08-01 20:00 framework
drwxr-xr-x root root 2008-08-01 20:00 fonts
drwxr-xr-x root root 2008-08-01 20:00 etc
-rw-r--r-- root root 2197 2008-08-01 20:00 build.prop
drwxr-xr-x root root 2008-08-01 20:00 media
drwxr-xr-x root shell 2008-08-01 20:00 bin
drwxr-xr-x root root 2008-08-01 20:00 usr
drwxr-xr-x root root 2008-08-01 20:00 app
drwxr-xr-x root root 2008-09-06 22:45 lost+found
drwxr-xr-x root root 2008-08-01 20:00 lib
drwxr-xr-x root root 2008-08-01 20:00 sd
-rw-r--r-- root root 145 2008-08-01 20:00 init.rc
下面逐個分析其中的目錄:
xbin :下放了很多系統管理工具,這些工具不是到toolbox的連結,每個都是可執行程式。如果你看到這些命令你會發現他們根本不常用,他們都是為系統管理員準備的,是一些系統管理和組態工具。這個檔案夾的作用相當於標準Linux檔案系統中的/sbin。My Phone此目錄下有busybox,肯定是改過的,應該是破解者加上的。
modules:使用來存放核心模組(主要是fs和net)和模組設定檔的地方。
framework: 是JAVA平台的一些核心檔案,屬於JAVA平台系統架構檔案。裡面的檔案都是.jar和.odex檔案。
備忘:什麼是odex檔案? odex是被最佳化過的JAVA程式檔案,體積通常是.jar的4倍左右。執行效率比.jar高。
fonts :很顯然,這是字型庫檔案的存放目錄。
etc :這裡存放了系統中幾乎所有的設定檔,根目錄下的/etc就鏈結於此。
build.prop :是一個屬性檔案,在Android系統中.prop檔案很重要,記錄了系統的設定和改變,類似於/etc中的檔案。
media :裡面主要是存放了系統的鈴聲的,分為 notifications(通知)、ui(介面)、alarms(警告)和ringtones(鈴聲),裡面都是.ogg音頻檔案。
bin :眾所周知,是存放使用者常用的工具程式的,其中大部分是到toolbox的連結(類似嵌入式Linux中的busybox)。toolbox應該是google簡化版的busybox,我還沒深入研究過。
usr :使用者的設定檔,如鍵盤配置、共用、時區檔案等等。您可以cat 來看看。
app :顧名思義,存放的是Android系統內建的JAVA應用程式。
lost+found :yaffs檔案系統固有的,類似資源回收筒的檔案夾,只有是yaffs檔案系統都會有。
lib :存放幾乎所有的共用庫(.so)檔案。
sd :SD卡中的EXT2分區的掛載目錄
init.rc :一個初始化指令碼,用於將/system/modules和/system/xbin掛載為cramfs,避免系統被無意破壞。
好了,/system目錄的結構的結構就簡單分析到這裡,明天開始分析Android檔案系統的啟動過程。