linux根文件系統首先是一種文件系統,但是相對於普通的文件系統,它的特殊之處在於,它是內核啟動時所mount的第一個文件系統,內核代碼映像文件保存在根文件系統中,而系統引導啟動程序會在根文件系統掛載之後從中把一些基本的初始化腳本和服務等加載到內存中去運行。
我們首先從主機上所安裝的Linux操作系統中了解一些根文件系統的信息。比如在筆者工作的Linux桌面系統中可以得到下面的結果:
# 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 5667684 9724600 37% /
/dev/hda1 101089 9321 86549 10% /boot
none 63028 0 63028 0% /dev/shm
從上面的mount命令我們可以看到,在桌面Linux中,根文件系統”/”被mount到/dev/hda2設備上,文件系統類型為ext3,屬性為rw即可讀寫。從df命令則可以得到更多根文件系統使用空間的相關信息。
根文件系統一直以來都是所有類Unix操作系統的一個重要組成部分,也可以認為是嵌入式Linux系統區別於其他一些傳統嵌入式操作系統的重要特征,它給 Linux帶來了許多強大和靈活的功能,同時也帶來了一些復雜性。我們需要清楚的了解根文件系統的基本結構,以及細心的選擇所需要的系統庫、內核模塊和應用程序等,並配置好各種初始化腳本文件,以及選擇合適的文件系統類型並把它放到實際的存儲設備的合適位置。
根文件系統的基本目錄結構
Linux的根文件系統以樹型結構組織,包含內核和系統管理所需要的各種文件和程序,一般說來根目錄”/”下的頂層目錄都有一些比較固定命名和用途。
下面列出了一個Linux根文件系統中的比較常見的目錄結構:
2 /bin 存放二進制可執行命令的目錄
2 /dev 存放設備文件的目錄
2 /etc 存放系統管理和配置文件的目錄
2 /home 用戶主目錄,比如用戶user的主目錄就是/home/user,可以用~user表示
2 /lib 存放動態鏈接共享庫的目錄
2 /sbin存放系統管理員使用的管理程序的目錄
2 /tmp 公用的臨時文件存儲點
2 /root 系統管理員的主目錄
2 /mnt 系統提供這個目錄是讓用戶臨時掛載其他的文件系統。
2 /proc 虛擬文件系統,可直接訪問這個目錄來獲取系統信息。
2 /var 某些大文件的溢出區
2 /usr 最龐大的目錄,要用到的應用程序和文件幾乎都在這個目錄。
對於經常使用Linux系統的讀者來說,這些目錄大部分應該很熟悉了。不過有幾個目錄對初學者來說容易混淆,如/bin,/sbin,/usr/bin和/usr/sbin。這裡簡單介紹一下它們的區別:/bin目錄一般存放對於用戶和系統來說都是必須的二進制文件,而/sbin目錄要存放的是只針對系統管理的二進制文件,該目錄的文件將不會被普通用戶使用。相反,那些不是必要的用戶二進制文件存放在/usr/bin下面,那些不是非常必要的系統管理工具放在/usr/sbin下。此外,對於一些本地的庫也非常類似,對於那些要求啟動系統和運行的必須命令要存放在/lib目錄下,而對於其他不是必須的庫存放在/usr/lib目錄就可以。
對於嵌入式Linux系統的根文件系統來說,一般可能沒有上面所列出的那麼復雜,比如嵌入式系統通常都不是針對多用戶的,所以/home這個目錄在一般嵌入式Linux中可能就很少用到,而/boot這個目錄則取決於你所使用的BootLoader是否能夠重新獲得內核映象從你的根文件系統在內核啟動之前。一般說來,只有/bin,/dev,/etc,/lib,/proc,/var,/usr這些需要的,而其他都是可選的。