initramfs 該文件系統(tǒng)直接將根文件系統(tǒng)直接打包進Linux內核里(只有這種文件系統(tǒng)具有該功能),這樣內核和根文件系統(tǒng)綁定在一塊成為一個單獨的文件,他在Linux系統(tǒng)啟動后加載到內存中運行,所以速度快,但浪費內存,系統(tǒng)升級的時候內核和根文件系統(tǒng)一起升級比較方便。但因為他是基于內存的文件系統(tǒng),所以系統(tǒng)掉電后針對根文件系統(tǒng)下所有文件的修改掉電都會丟失,如果要升級根文件系統(tǒng)只有重新編譯、燒錄Linux內核;
jffs2 專門針對Norflash設計的文件系統(tǒng),小頁的Nandflash也可以使用,只是效率不高;因為根文件系統(tǒng)存放在Flash上,所以根文件系統(tǒng)路徑下的文件修改后掉電仍然存在;
yaffs2 早期專門針對大頁Nandflash設計的文件系統(tǒng),他的源碼獨立于Linux內核維護著,所以可以在單片機等裸機環(huán)境下使用(只有該文件系統(tǒng)可以),linux內核想用它必須要打上補?。?/span>在分區(qū)較大時,nandflash的掛載時間較長,現(xiàn)在逐漸被ubifs廣泛替代;
ubifs 專門針對Nandflash設計的一種文件系統(tǒng),他在內核的MTD一層上面又建立了UBI一層,掛載速度、磨損均衡、讀寫速度非常快,目前nandflash上應用得最廣的一種根文件系統(tǒng);
Linux操作系統(tǒng)之所以能夠支持這么多種不同的文件系統(tǒng),主要是通過叫做VFS的中間層對這些文件系統(tǒng)提供了完美的支持。對于用戶來說,這些文件系統(tǒng)幾乎是透明的,在大部分情況下,用戶通過libc和kernel的VFS交互,不需要關心底層文件系統(tǒng)的具體實現(xiàn),但是有時應用程序也需要考慮底層文件系統(tǒng)限制(比如fat vfat不支持鏈接,比如各個文件系統(tǒng)支持最大文件限制不同)。VFS主要有以下特性:
1. 向上,對應用層提供一個標準的文件操作接口,如open()、read()、write()、ioct()、close()等;
2. 對下,對所有文件系統(tǒng)提供一個統(tǒng)一的標準接口,以便其他操作系統(tǒng)的文件系統(tǒng)可以方便的移植到Linux上;
3. VFS內部則通過一系列高效的管理機制,比如inode cache, dentry cache 以及文件系統(tǒng)的預讀等技術,使得底層文件系統(tǒng)不需沉溺到復雜的內核操作,即可獲得高性能; 4. 此外VFS把一些復雜的操作盡量抽象到VFS內部,使得底層文件系統(tǒng)實現(xiàn)更簡單。下圖是Linux內核里文件系統(tǒng)的分層結構圖:根文件目錄:1./bin目錄該目錄下的命令可以被root與一般賬號所使用,由于這些命令在掛接其它文件系統(tǒng)之前就可以使用,所以/bin目錄必須和根文件系統(tǒng)在同一個分區(qū)中。/bin目錄下常用的命令有:cat、chgrp、chmod、cp、ls、sh、kill、mount、umount、mkdir、[、test等。其中“[”命令就是test命令,我們在利用Busybox制作根文件系統(tǒng)時,在生成的bin目錄下,可以看到一些可執(zhí)行的文件,也就是可用的一些命令。2./sbin 目錄該目錄下存放系統(tǒng)命令,即只有系統(tǒng)管理員(俗稱最高權限的root)能夠使用的命令,系統(tǒng)命令還可以存放在/usr/sbin,/usr/local/sbin目錄下,/sbin目錄中存放的是基本的系統(tǒng)命令,它們用于啟動系統(tǒng)和修復系統(tǒng)等,與/bin目錄相似,在掛接其他文件系統(tǒng)之前就可以使用/sbin,所以/sbin目錄必須和根文件系統(tǒng)在同一個分區(qū)中。/sbin目錄下常用的命令有:shutdown、reboot、fdisk、fsck、init等,本地用戶自己安裝的系統(tǒng)命令放在/usr/local/sbin目錄下。3、/dev目錄該目錄下存放的是設備與設備接口的文件,設備文件是Linux中特有的文件類型,在Linux系統(tǒng)下,以文件的方式訪問各種設備,即通過讀寫某個設備文件操作某個具體硬件。比如通過"dev/ttySAC0"文件可以操作串口0,通過"/dev/mtdblock1"可以訪問MTD設備的第2個分區(qū)。比較重要的文件有/dev/null, /dev/zero, /dev/tty, /dev/lp*等。4./etc目錄該目錄下存放著系統(tǒng)主要的配置文件,例如人員的賬號密碼文件、各種服務的其實文件等。一般來說,此目錄的各文件屬性是可以讓一般用戶查閱的,但是只有root有權限修改。對于PC上的Linux系統(tǒng),/etc目錄下的文件和目錄非常多,這些目錄文件是可選的,它們依賴于系統(tǒng)中所擁有的應用程序,依賴于這些程序是否需要配置文件。在嵌入式系統(tǒng)中,這些內容可以大為精減。5./lib目錄該目錄下存放共享庫和可加載(驅動程序),共享庫用于啟動系統(tǒng)。運行根文件系統(tǒng)中的可執(zhí)行程序,比如:/bin /sbin 目錄下的程序。6./home目錄系統(tǒng)默認的用戶文件夾,它是可選的,對于每個普通用戶,在/home目錄下都有一個以用戶名命名的子目錄,里面存放用戶相關的配置文件。7./root目錄系統(tǒng)管理員(root)的主文件夾,即是根用戶的目錄,與此對應,普通用戶的目錄是/home下的某個子目錄。8./usr目錄/usr目錄的內容可以存在另一個分區(qū)中,在系統(tǒng)啟動后再掛接到根文件系統(tǒng)中的/usr目錄下。里面存放的是共享、只讀的程序和數(shù)據(jù),這表明/usr目錄下的內容可以在多個主機間共享,這些主要也符合FHS標準的。/usr中的文件應該是只讀的,其他主機相關的,可變的文件應該保存在其他目錄下,比如/var。/usr目錄在嵌入式中可以精減。9./var目錄與/usr目錄相反,/var目錄中存放可變的數(shù)據(jù),比如spool目錄(mail,news),log文件,臨時文件。10./proc目錄這是一個空目錄,常作為proc文件系統(tǒng)的掛接點,proc文件系統(tǒng)是個虛擬的文件系統(tǒng),它沒有實際的存儲設備,里面的目錄,文件都是由內核臨時生成的,用來表示系統(tǒng)的運行狀態(tài),也可以操作其中的文件控制系統(tǒng)。11./mnt目錄用于臨時掛載某個文件系統(tǒng)的掛接點,通常是空目錄,也可以在里面創(chuàng)建一引起空的子目錄,比如/mnt/cdram /mnt/hda1 。用來臨時掛載光盤、移動存儲設備等。12. /tmp目錄用于存放臨時文件,通常是空目錄,一些需要生成臨時文件的程序用到的/tmp目錄下,所以/tmp目錄必須存在并可以訪問。那我們利用Busybox制作根文件系統(tǒng)就是創(chuàng)建這上面的這些目錄,和這些目錄下面的各種文件。 什么是根文件系統(tǒng)聯(lián)系客服