Linux內核在初始化過程中,會創建一個根目錄“/”,然後mount第一個文件系統到這個根目錄下,這個文件系統就被稱為根文件系統。其他的存儲分區、磁盤、SD卡、U盤接着就可以mount到根文件系統的某個目錄下。然後用户就可以通過文件接口訪問各個存儲設備。
在Linux中,一個根文件系統會包含Linux運行所需要的完整目錄和相關啓動腳本、配置文件、庫、頭文件等。通常有下面這些目錄:

  • /bin,/sbin:Linux常用的命令就在這,這些命令都是以二進制可執行文件形式存儲在該目錄下。
  • /lib:庫,如C標準庫
  • /include:頭文件存放目錄
  • /etc:系統配置文件、啓動腳本都在這裏。
  • /mnt:常用作掛載目錄。

應用程序可以通過文件系統提供的API讀寫文件,文件路徑+文件名是最常見的訪問形式。當我們想訪問某個設備,如U盤或移動硬盤,一般需要先將該設備掛載(mount)到文件系統的某個目錄上,然後就可以對該掛載目錄進行讀寫操作了。將一個存儲設備掛載到某個目錄的本質就是改變該目錄到具體物理存儲的映射關係,讓該存儲設備與掛載目錄建立關聯,加入全局文件系統目錄樹中。文件系統會將對掛載目錄的讀寫轉換為對存儲設備的讀寫操作。

在Linux系統中,存儲設備在掛載到某個目錄,如/mnt,時需要先格式化自己,當我們使用mount命令去掛載它,它會以子文件系統的方式掛載到父文件系統的某個目錄,如根文件系統的/mnt。對於每個掛載的子文件系統,內核會創建vfsmount和super_block對象,該對象描述了所有的掛載信息,如父文件系統的掛載點vfsmount->mnt_mountpoint = /mnt,子文件系統的根目錄vfsmount->mnt_root = super_block->s_root,這就對掛載目錄與存儲設備關聯起來了。