Android 4 2 2 檔案系統目錄分析

2021-07-24 20:04:05 字數 3645 閱讀 2262

目錄(?)

[+]

最近公司要整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...