Android——4.2.2 文件系统文件夹分析
??? 近期公司要整android內部培訓,分配給我寫個培訓文檔。這里記錄例如以下:
??????????????????????????????????????????????????????????????????? ? ?? ???? 撰寫不易,轉載請注明出處:http://blog.csdn.net/jscese/article/details/40897703
導讀:
這里補充下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.${ro.hardware}.rc一般的.rc都放在“/”文件夾下.
關于init.rc中的語句怎么被運行。這里不多描寫敘述。可另行參考init機制,能夠看到里面非常多對分區以及文件的shell命令,比方mount,mkdir,symlink。chmod...
mount上去的文件類型大體有這幾種:
tmpfs devpts proc sysfsrootfs yaffs2 cgroup ext4 debugfs
這些文件系統類型可去維基百科查,每一種都有自己的特性.可在shell終端輸入mount查看掛載情況.
我們通過shell終端看到的文件系統文件夾是終于制作完畢的產物,有的文件文件夾下是掛載的分區,假設改動就是實際改動的nand/emmc上面的內容,有的可能僅僅是制作過程中從分區某個地方copy放在那個文件夾下的。你刪除了。下次重新啟動依然還會存在。這個就要依據詳細情況而推斷了.
這個的生成過程還是非常繁雜的,這里就不一一述說.以下介紹下經常使用到的文件夾文件.
具體可參考:Android——啟動過程具體解釋
/cache
緩沖區文件夾,用于存放暫時文件,眼下我這邊用到的地方就是存放從網絡下載OTA包用于更新.
/data
顧名思義,主要用于存放數據的地方,往下的文件夾都是存放app的相關分類數據.
當中/data/app文件夾下存放的就是用戶安裝的apk文件.
/data/data文件夾下存放的是系統中全部app的數據文件,以apk包名區分,當中會有提交的數據庫以及xml數據文件.
/dev
linux設備文件夾,存放設備節點文件。掛載的是tmpfs格式文件系統,斷電后數據將會消失.android系統上的設備都會在這個文件夾底下創建設備文件,
秉承linux的理念:一切設備皆文件.而且都是能夠通過文件對設備進行操控管理.
當中/dev/block下列出全部emmc存儲設備的全部block
/etc
軟連接指向/system/etc。這個文件夾一般用于存放系統中的各種配置文件。沒什么好說的.
/mnt
外部掛載點文件夾。作為外部存儲設備的掛載點路徑,往下的分支經常使用的包含/mnt/sdcard為android默認SD卡掛載點.其他的不同平臺可能會有大的差異。比方掛載usb設備的掛載點,我這邊掛載在/mnt/usb
/proc
一個虛擬的文件系統,由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* > * 重定向設置狀態值.
/sbin
存放root用戶可運行文件的文件夾。一般存在這以下的就是adbd
/sdcard
軟連接上面說到的/mnt/sdcard,SD卡的掛載點
/sys
類似/proc。也是虛擬的文件系統.
差別在于這個文件系統提供的是關乎kernel中的設備驅動.
/sys/devices下就是已經注冊到總線上的全部物理設備.
/sys/dev以下是blockchar設備的節點文件,鏈接到真實設備.
/sys/module這里能夠看已經insmod的kerneldevice driver
同/proc下一樣可使用cat查看
/sys/kernel下的是可寫的設備值。同/proc一樣操作寫入控制.
/system
這個是android系統最關鍵的文件文件夾了,能夠在rc中看到掛載的是system分區,也就是源代碼編譯出來的system.img鏡像,基本的執行機制也就全在這個文件夾下了,默認是掛載成ext4僅僅讀.
/system/app系統預置的apk存放路徑,僅僅有root才有寫權限
/sysem/bin這個以下所有是android系統可運行文件
/system/build.prop編譯過程中收集的各種屬性
/system/etc上面有提到。配置文件
/system/fonts字庫
/system/framework以下全是jar包也就是源代碼中frameworks編譯出來的系統框架,核心所在
/system/lib存放差點兒全部編譯出來的動態庫(.so)
/system/vendor存放一些廠商的東西一般有applib之類的
這幾個應該算是最重要的,其他的文件夾不一一列出.
假設想要改動/system以下的內容,可在shell終端輸入:mount-o remount rw /system
重掛載為可讀寫.
/tmp
暫時文件
轉載于:https://www.cnblogs.com/gcczhongduan/p/5178967.html
總結
以上是生活随笔為你收集整理的Android——4.2.2 文件系统文件夹分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python matlablib安装踏坑
- 下一篇: js+dom开发第十六天