Linux檔案系統概述

2021-09-29 02:58:29 字數 2963 閱讀 3839

類似於windows的各個盤,linux系統也可以將磁碟、flash等儲存裝置劃分為若干個分割槽,在不同分割槽存放不同類別的檔案(檔案系統此時指的是分割槽上檔案的集合)。與windows的c盤類似,linux一樣要在乙個分割槽上存放系統啟動所必需的檔案,如核心映像檔案(在嵌入式中,核心一般單獨存放在乙個分割槽中)、核心啟動後執行的第乙個程式、給使用者提供操作介面的shell程式、應用程式所依賴的庫等。這些必需、基本的檔案合稱為根檔案系統,它們存放在乙個分割槽中。linux系統啟動後先掛載這個分割槽,稱為掛載根檔案系統。其它分割槽上的所有目錄、檔案的集合也稱為檔案系統。分割槽掛載在某個目錄上,這個目錄被稱為掛載點或者是安裝點,然後就可以通過這個目錄來訪問這個分割槽上的檔案了。根檔案系統被掛載在根目錄/上,在根目錄下就有根檔案系統的各個目錄、檔案。其它分割槽掛載到/mnt目錄上,/mnt目錄下就有這個分割槽的各個目錄、檔案。

檔案系統包含實實在在的儲存分割槽檔案系統以及虛擬檔案系統(/proc 、/sysfs等)。虛擬檔案系統中的檔案並不儲存在實際的裝置上,而是在訪問它們時由核心臨時生成的。

linux根檔案系統中的目錄結構:

/bin

存放所有使用者都可以使用的、基本的命令,如cat、ls、sh、kill等

/sbin

存放系統命令,只有管理員能夠使用的命令,系統命令還可以存放在/sur/sbin、/usr/local/sbin目錄下。/sbin中存放的是基本的系統命令,用於啟動系統、修復系統等。如reboot、fdisk、shutdown等。

/dev

存放裝置檔案,用於訪問各種外設。/dev中檔案建立有3種方法:手動建立(mknod)、使用devfs檔案系統(核心2.6開始已經不使用了)、udev建立(udev是個使用者程式、能夠根據系統中硬體裝置的狀態動態更新裝置檔案、如檔案的建立刪除,核心需要支援sysfs檔案系統)、mdev(這是udev命令的簡化版本、在busybox中帶有,占用記憶體小)。

/etc

存放各種配置檔案,如inittab(init程序的配置檔案)、group(使用者的組檔案)、fstab(執行mount -a時,需要掛載的檔案系統)、mtsb(用來顯示已經載入的檔案系統)

/lib

存放共享庫和可載入模組,共享庫用於啟動系統、執行根檔案系統中的可執行程式。不是根檔案系統所必需的庫檔案可以放在/usr/lib中

/home

可選目錄。對於普通使用者,在/home目錄下都有乙個以使用者名稱命名的子目錄,裡面存放使用者相關的配置檔案

/root

根使用者/usr

存放共享、唯讀的程式和資料

/var

/存在可變的資料,log檔案、臨時檔案等。

/proc

常用作proc檔案系統的掛載點。虛擬檔案系統,沒有實際的儲存裝置 。 系統啟動後掛載 (mount -t proc none /proc

/mnt

用於臨時掛載某個檔案系統的掛載點,通常是空目錄。

/tmp

存放臨時檔案,一些需要生成臨時檔案的程式要用到/tmp目錄, /tmp目錄必須存在並可以訪問。(mount -t tmpfs none /tmp 減少對flash的操作)

所謂製作根檔案系統,就是建立各種目錄,並且在裡面建立各種檔案。使用busybox能很方便的幫助我們建立/bin、/sbin等目錄下的可執行檔案。在建立乙個最小的根檔案系統時,使用busybox的話,只需要在/dev目錄下建立必要的裝置節點、在/etc目錄下建立一些配置檔案就可以了(如果busybox使用動態連線,要在/lib目錄下包含庫檔案)。

init程序是核心啟動的第乙個使用者程式,根據配置檔案決定啟動哪些程式。init程序是後續所有程序的發起者,比如init程序啟動/bin/sh程式後,使用者才能在控制台上輸入各種命令。init程序的執行程式通常是/sbin/init,客戶也可以完全編寫自己的/sbin/init程式,或者傳入命令列引數「init=***」指定某個程式作為init程序執行。

核心掛載根檔案系統後,最後會執行init程式。其中間流程有:開啟/dev/console裝置檔案作為標準輸入,然後複製檔案描述符0給檔案描述符1、2。所以標準輸入、標準輸出、標準出錯都對應同乙個檔案。

busybox init流程:設定訊號處理函式———>初始化控制台———>解析inittab———>執行inittab命令。

對於控制台,要是核心啟動init程序的同時設定了環境變數console,則使用環境變數所指定的裝置,要是檢測指定的裝置不可以開啟,則使用/dev/null。如果沒有指定環境變數則使用/dev/console裝置作為控制台。由於init程序只是作為其他程序的發起者和控制者,並不需要控制台與使用者互動,所以init程序會把它關掉。init程序建立其他子程序時,如果沒有在/etc/inittab中指定它的控制台,則使用前面確定的控制台。

inittab檔案存在的話(不存在會使用預設的)init程序會解析它,然後按照它的指示建立各種子程序。inittab檔案中每個條目用來定義乙個子程序,並確定它的啟動方法。格式如下:

::::表示這個子程序需要使用的控制台,如果省略則使用與init程序一樣的控制台。

:對於busybox程式,這個字段沒有意義可以省略。

:表示init程序如何控制這個子程序。有sysinit、wait、once、respawn、askfirst、shutdown、restart、ctraltdel。

:要執行的程式,它可以是可執行程式,也可以是指令碼。如果process欄位前有「-」字元,這個程式被稱為互動的。

總結:在系統啟動前期,init程序首先啟動為sysinit、wait、once的子程序。系統正常執行期間init程序啟動為respawn、askfirst的子程序,並且監視它們,發現子程序退出時重新啟動它。系統退出時,執行為shutdown、restart、ctrlatdel的子程序。

Linux檔案系統 概述

對於乙個作業系統來說,最主要的兩個模組就是檔案系統和程序管理。在linux中,檔案具有廣泛的含義,凡是能夠產生或者消耗資訊的都是檔案。linux除了支援自身的ext2檔案系統外,還支援其他各種不同的檔案系統。那麼這一目的是如何實現的呢?很容易想到的思路是,在各種不同的檔案系統之上增加乙個中間層,用於...

Linux 檔案系統概述

二 檔案系統的型別 三 linux 檔案系統的選擇和安全性 2 ext2 ext3及reiserfs檔案系統的安全性 四 linux 支援的檔案系統 五 檔案系統的特性 六 在linux中,檔案系統的建立和掛載 七 關於本文 八 參考文件 九 相關文件 合理規劃您的硬碟分割槽 2 檔案系統的建立 這...

Linux 檔案系統概述

來自 linuxsir.org 摘要 本文通過檔案系統的定義說起,然後通過引文簡單的介紹了一下檔案系統型別 對linux常用的ext2 ext3及reiserfs 根據本人使用經驗也泛泛的談了談,但並不是專業的。如何閱讀本文,還是用mks理論告訴我們的方法 一分為二,邊看邊批吧 目錄索引 一 什麼是...