1. 程式人生 > >Linux之檔案系統和根檔案系統

Linux之檔案系統和根檔案系統

    在學習Linux的過程中,會遇到“檔案系統”和“根檔案系統”兩個概念,這兩個概念容易混淆,總覺得為什麼Linux需要這麼多的檔案系統,這兩種系統的各自作用是什麼,有什麼區別呢?

    “儘管核心是Linux的核心,但檔案卻是使用者與作業系統互動所採用的主要工具”,這就闡述了“檔案系統”的作用,如果只有Linux,沒有檔案系統,那麼整個系統是沒有意義的。

     在Linux中,有“VFS”的概念,這個VFS是底層檔案系統的通用介面,VFS會抽象到各個檔案系統,雖然各種檔案系統的差異很大,但是各種檔案系統會抽象出同樣的訪問介面,然後抽象到VFS,普通的檔案系統其實是對應儲存裝置的,通過這些普通檔案系統,來實現對儲存裝置的管理和使用。

根檔案系統首先也是一種檔案系統,該檔案系統不僅具有普通檔案系統的儲存資料檔案的功能,而且相對於普通檔案系統,它的特殊之處在於,它是核心啟動所“掛載mount”的第一個檔案系統,核心程式碼的映像檔案儲存在根檔案系統中,系統引導啟動程式會再根檔案系統掛載之後從中把一些初始化指令碼(如rcs,inittab)和服務載入到記憶體中執行,在嵌入式系統中,只是將核心下載到開發板上,是無法真正的啟動Linux系統的,會出現無法載入檔案系統的錯誤。

根檔案系統中有一個“根”,說明它是載入其他檔案系統的“根”,既然是根,如果沒有這個根,其他的檔案系統也就沒有辦法進行載入了,根檔案系統引導和使其他檔案系統得以mount所必須的檔案,根檔案系統包括Linux啟動時所必須的目錄和關鍵性檔案,例如Linux啟動時都需要的init目錄下的相關檔案,在Linux掛載分割槽時Linux一定會找/etc/fstab這個掛載檔案等,根檔案系統中還包括了很多應用程式bin目錄等,然和包括這些Linux系統啟動所必須的檔案都可以成文跟檔案系統。

Linux在啟動時,第一個必須掛載的是根檔案系統,弱系統不能從指定的裝置上掛載根檔案系統,則系統會出錯而退出啟動。成功後,可以自動或者手動掛載其他檔案系統,因此,一個系統中可以同時存在不同的檔案系統,這都是使用VFS機制實現的。

在Linux中,將一個檔案系統與一個儲存裝置關聯起來的過程稱為“掛載”,使用指令“mount”,使用mount指令將一個檔案系統附著到當前檔案系統的層次結構中(根),在執行掛裝時,要提供檔案系統型別、檔案系統和一個掛載點,根檔案系統被掛裝到根目錄“/”上後,在根目錄下就有根檔案系統的各個目錄,檔案:/bin/sbin/mnt等,再將其他分割槽掛裝到/mnt目錄上。