目錄(?)
[+]
最近公司要整android內部培訓,分配給我寫個培訓文件,這裡記錄如下:
這裡補充下
android
執行時的檔案系統結構,
同樣,資料網上有很多,只是簡單介紹我常涉及到的
,個人觀點,僅供參考~
各個廠商平台可能會有出入
.這裡單以我這邊
mstar
的平台以「
/」代表檔案系統的根目錄.
——jscese
2014/11/7
目前android
編譯出來的映象基本都是ext4
格式,可用file
命令檢視,不再是之前的yaffs2
,因為之前用的是nand
,現在的主流已是emmc
,但是在製作android
檔案系統時掛載的型別就五花八門了,各種都有.
可在系統啟動時/system/core/init/init.c
中的main
中檢視mount
型別.
對檔案系統的建立語句基本都寫在/system/core/rootdir/init.rc,
這個檔案語法可參考/system/core/init/readme.txt
,交由init.c
負責解析執行.
其中init.rc
還會載入平台rc
執行一些自己的操作:
import/
init.$.rc
一般的.rc
都放在「
/」目錄下.
關於init.rc
中的語句怎麼被執行,這裡不多描述,可另行參考init
機制,可以看到裡面很多對分割槽以及檔案的shell
命令,比如mount
,mkdir
,symlink
,chmod...
mount
上去的檔案型別大體有這幾種:
tmpfs devpts proc sysfs
rootfs yaffs2 cgroup ext4 debugfs
這些檔案系統型別可去維基百科查,每一種都有自己的特性.
可在shell
終端輸入mount
檢視掛載情況.
我們通過shell
終端看到的檔案系統目錄是最終製作完成的產物,有的檔案目錄下是掛載的分割槽,如果修改就是實際修改的nand/emmc
上面的內容,有的可能只是製作過程中從分割槽某個地方copy
放在那個目錄下的,你刪除了,下次重啟依舊還會存在,這個就要根據具體情況而判斷了.
這個的生成過程還是很繁雜的,這裡就不一一述說.
下面介紹下常用到的目錄檔案.
詳細可參考:android——啟動過程詳解
緩衝區目錄,
包用於更新.
顧名思義,
的相關分類資料.
目錄下存放的就是使用者安裝的apk
檔案.
/data/data
的資料檔案,以apk
包名區分,
其中會有提交的資料庫以及xml
資料檔案.
linux
裝置資料夾,存放裝置節點檔案,掛載的是tmpfs
格式檔案系統,斷電後資料將會消失.android
系統上的裝置都會在這個目錄底下建立裝置檔案,
秉承linux
的理念:一切裝置皆檔案
.並且都是可以通過檔案對裝置進行操控管理.
其中/dev/block
下列出所有emmc
儲存裝置的所有block
軟連線指向/system/etc
,這個目錄一般用於存放系統中的各種配置檔案,沒什麼好說的.
外部掛載點目錄,作為外部儲存裝置的掛載點路徑,往下的分支常用的包括/mnt/sdcard
為android
預設sd
卡掛載點.
其它的不同平台可能會有大的差異,比如掛載usb
裝置的掛載點,
我這邊掛載在/mnt/usb
乙個虛擬的檔案系統,由kernel
提供,不是實際的儲存空間,存在kenel
管理的記憶體中,應用層可通過/proc
下的檔案動態獲取kernel
中系統程序(process)
的執行資訊.
也可通過/proc/sys
目錄下可寫檔案修改kernel
執行狀態,實現與kernel
的互動.
在init.c
中掛載到/proc
檔案上.
其中比較常用的獲取檔案:
/proc/cpuinfo/proc/meminfo /proc/mounts /proc/version ...
顧名思義.
可以在shell
使用cat*
檢視設定/proc/sys/kernel
狀態值,init.rc
中就有設定,可以參考,大部分設定在
/proc/sys/kernel
下shell
下可使用echo* > *
重定向設定狀態值.
存放root
使用者可執行檔案的目錄,一般存在這下面的就是adbd
軟連線上面說到的/mnt/sdcard
,sd卡的掛載點
類似/proc
,也是虛擬的檔案系統.
區別在於這個檔案系統提供的是關乎kernel
中的裝置驅動.
/sys/devices
下就是已經註冊到匯流排上的所有物理裝置.
/sys/dev
下面是blockchar
裝置的節點檔案,鏈結到真實裝置.
/sys/module
這裡可以看已經insmod
的kerneldevice driver
同/proc
下一樣可使用cat
檢視/sys/kernel
下的是可寫的裝置值,同/proc
一樣操作寫入控制.
這個是android
系統最重要的檔案目錄了,可以在rc
中看到掛載的是system
分割槽,也就是原始碼編譯出來的system.img
映象,主要的執行機制也就全在這個目錄下了,預設是掛載成ext4
唯讀.系統預置的apk
存放路徑,只有root
才有寫許可權
/sysem/bin
這個下面全部是android
系統可執行檔案
/system/build.prop
編譯過程中收集的各種屬性
/system/etc
上面有提到,配置檔案
/system/fonts
字型檔/system/framework
下面全是jar
包也就是原始碼中frameworks
編譯出來的系統框架,核心所在
/system/lib
存放幾乎所有編譯出來的動態庫(.so)
/system/vendor
存放一些廠商的東西
之類的這幾個應該算是最重要的,其它的目錄不一一列出.
如果想要修改/system
下面的內容,可在shell
終端輸入:mount-o remount rw /system
重掛載為可讀寫.
臨時檔案
6 檔案系統
root edaserver1 ls bin boot dev etc home lib lib64 lost found media misc mnt net opt proc root sbin selinux srv sys tftpboot tmp usr var bin所有賬號命令,二進位...
4 14 檔案系統
為了說明檔案鏈結的概念,先要介紹unix檔案系統的基本結構。同時,了解i節點和指向i節點的目錄項之間的區別也是很有益的。目前,正在使用的unix檔案系統有多種實現。例如,solaris支援多種不同型別的磁碟檔案系統 傳統的基於bsd的unix檔案系統 稱為ufs 讀 寫dos格式軟盤的檔案系統 稱為...
13 檔案系統
檔案系統 檔案系統是作業系統用於管理磁碟上檔案的方法和資料結構,簡單來說就是磁碟上如何組織檔案的方法 常用的兩種檔案系統ntfs和fat32區別 ntfs fat32 磁碟分割槽容量 2t 32g 單個檔案容量 4g以上 最大4g efs加密 支援 不支援 磁碟配額 支援 不支援ntfs和fat32...