Linux根文件系統(tǒng)介紹
什么是根文件系統(tǒng)
根文件系統(tǒng)首先是一種文件系統(tǒng),但是相對于普通的文件系統(tǒng),它的特殊之處在于,它是內(nèi)核啟動(dòng)時(shí)所mount的第一個(gè)文件系統(tǒng),內(nèi)核代碼映像文件保存在根文件系統(tǒng)中,而系統(tǒng)引導(dǎo)啟動(dòng)程序會(huì)在根文件系統(tǒng)掛載之后從中把一些基本的初始化腳本和服務(wù)等加載到內(nèi)存中去運(yùn)行。
我們首先從主機(jī)上所安裝的Linux操作系統(tǒng)中了解一些根文件系統(tǒng)的信息。比如在筆者工作的Linux桌面系統(tǒng)中可以得到下面的結(jié)果:
# mount
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
none on /dev/shm type tmpfs (rw)
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/hda2 16216016 5667* 9724600 37% /
/dev/hda1 101089 9321 8*9 10% /boot
none 63028 0 63028 0% /dev/shm
從上面的mount命令我們可以看到,在桌面Linux中,根文件系統(tǒng)”/”被mount到/dev/hda2設(shè)備上,文件系統(tǒng)類型為ext3,屬性為rw即可讀寫。從df命令則可以得到更多根文件系統(tǒng)使用空間的相關(guān)信息。
根文件系統(tǒng)一直以來都是所有類Unix操作系統(tǒng)的一個(gè)重要組成部分,也可以認(rèn)為是嵌入式Linux系統(tǒng)區(qū)別于其他一些傳統(tǒng)嵌入式操作系統(tǒng)的重要特征,它給Linux帶來了許多強(qiáng)大和靈活的功能,同時(shí)也帶來了一些復(fù)雜性。我們需要清楚的了解根文件系統(tǒng)的基本結(jié)構(gòu),以及細(xì)心的選擇所需要的系統(tǒng)庫、內(nèi)核模塊和應(yīng)用程序等,并配置好各種初始化腳本文件,以及選擇合適的文件系統(tǒng)類型并把它放到實(shí)際的存儲(chǔ)設(shè)備的合適位置。
根文件系統(tǒng)的基本目錄結(jié)構(gòu)
Linux的根文件系統(tǒng)以樹型結(jié)構(gòu)組織,包含內(nèi)核和系統(tǒng)管理所需要的各種文件和程序,一般說來根目錄”/”下的頂層目錄都有一些比較固定命名和用途。
下面列出了一個(gè)Linux根文件系統(tǒng)中的比較常見的目錄結(jié)構(gòu):
/bin 存放二進(jìn)制可執(zhí)行命令的目錄
/dev 存放設(shè)備文件的目錄
/etc 存放系統(tǒng)管理和配置文件的目錄
/home 用戶主目錄,比如用戶user的主目錄就是/home/user,可以用~user表示
/lib 存放動(dòng)態(tài)鏈接共享庫的目錄
/sbin存放系統(tǒng)管理員使用的管理程序的目錄
/tmp 公用的臨時(shí)文件存儲(chǔ)點(diǎn)
/root 系統(tǒng)管理員的主目錄
/mnt 系統(tǒng)提供這個(gè)目錄是讓用戶臨時(shí)掛載其他的文件系統(tǒng)。
/proc 虛擬文件系統(tǒng),可直接訪問這個(gè)目錄來獲取系統(tǒng)信息。
/var 某些大文件的溢出區(qū)
/usr 最龐大的目錄,要用到的應(yīng)用程序和文件幾乎都在這個(gè)目錄。
對于經(jīng)常使用Linux系統(tǒng)的讀者來說,這些目錄大部分應(yīng)該很熟悉了。不過有幾個(gè)目錄對初學(xué)者來說容易混淆,如/bin,/sbin,/usr/bin和/usr/sbin。這里簡單介紹一下它們的區(qū)別:/bin目錄一般存放對于用戶和系統(tǒng)來說都是必須的二進(jìn)制文件,而/sbin目錄要存放的是只針對系統(tǒng)管理的二進(jìn)制文件,該目錄的文件將不會(huì)被普通用戶使用。相反,那些不是必要的用戶二進(jìn)制文件存放在/usr/bin下面,那些不是非常必要的系統(tǒng)管理工具放在/usr/sbin下。此外,對于一些本地的庫也非常類似,對于那些要求啟動(dòng)系統(tǒng)和運(yùn)行的必須命令要存放在/lib目錄下,而對于其他不是必須的庫存放在/usr/lib目錄就可以。
對于嵌入式Linux系統(tǒng)的根文件系統(tǒng)來說,一般可能沒有上面所列出的那么復(fù)雜,比如嵌入式系統(tǒng)通常都不是針對多用戶的,所以/home這個(gè)目錄在一般嵌入式Linux中可能就很少用到,而/boot這個(gè)目錄則取決于你所使用的BootLoader是否能夠重新獲得內(nèi)核映象從你的根文件系統(tǒng)在內(nèi)核啟動(dòng)之前。一般說來,只有/bin,/dev,/etc,/lib,/proc,/var,/usr這些需要的,而其他都是可選的。