第17-1章 Linux文件系統概述

Linux根文件系統

FHS標準(Filesystem Hierarchy Standard,文件系統層次標準)

目錄結構

  • /bin目錄

    • 該目錄下存放所有用戶(包括系統管理員和一般用戶)都可以使用的、基本的命令,這些命令在掛接其它文件系統之前就可以使用,所以/bin目錄必須和根文件系統在同一個分區中
    • /bin目錄下常用的命令有:cat、chgrp、chmod、cp、ls、sh、mount、umount、mkdir、mknod、[、test等。
  • /sbin目錄

    • 該目錄下存放系統命令,即只有管理員能夠使用的命令,系統命令還可以存放在/usr/sbin、/usr/local/sbin目錄下。/sbin目錄中存放的是基本的系統命令,它們用於啓動系統、修復系統等。與/bin目錄相似,在掛接其它文件系統之前就可以使用/sbin,所以/sbin目錄必須和根文件系統在同一個分區中。
    • /sbin目錄下常用的命令有:shutdown、reboot、fdisk、fsck等。
    • 不是急迫需要使用的系統命令存放在/usr/sbin目錄下。本地安裝的系統命令存放在/usr/local/sbin目錄下
  • /dev目錄

    • 該目錄下存放的是設備文件。設備文件是Linux中特有的文件類型,在Linux系統下,以文件的方式訪問各種外設,即通過讀寫某個設備文件操作某個具體硬件。比如通過”/dev/ttySAC0”文件可以操作串口0,通過”/dev/mtdblock1”可以訪問MTD設備(NAND Flash、NOR Flash等)的第2個分區。

    • 設備文件有兩種:字符設備和塊設備。其中字符’b’、’c’表示這是一個塊設備文件或字符設備文件

    • 設備文件可以使用mknod命令創建

    mknod /dev/ttySAC0 c 4 64

    mknod /dev/hda1 b 3 1

    /dev的創建

    1. 手動創建

      1. 在製作根文件系統的時候,就在/dev目錄下創建好要使用的設備文件,比如ttySAC0等
      2. 系統掛接根文件系統後,就可以使用/dev目錄下的設備文件了
    2. 使用devfs文件系統:這種方法已經過時

      1. 在以前的內核中,有一個配置選項CONFIG_DEVFS_FS,它用來將虛擬文件系統devfs掛接在/dev目錄上。

      2. 各個驅動程序註冊時會在/dev目錄下自動生成各種設備文件。在製作根文件系統時,/dev目錄可以爲空。

        缺點
        1. 不確定的設備映射
        2. 沒有足夠的主/次設備號
        3. 命名不夠靈活
        4. devfs消耗大量的內存
    3. udev

      1. udev是個用戶程序(u指user space,dev是指device),它能夠根據系統中硬件設備的狀態動態地更新設備文件,包括設備文件的創建、刪除等

      2. 使用udev機制也不需要在/dev目錄下創建設備節點,它需要一些用戶程序的支持,並且內核要支持sysfs文件系統。它的操作相對複雜,但是靈活性很高

        busybox中有一個mdev命令,它是udev命令的簡化版本

  • /etc目錄

    • 該目錄下存放各種配置文件

    • PC上的Linux系統,/etc目錄下目錄、文件非常多。這些目錄、文件都是可選的,在嵌入系統中,這些內容可以大爲精簡

    文件 描述
    export 用來配置NFS文件系統(可選)
    fstab 用來指明當執行”mount -a”時,需要掛接的文件系統(可選)
    mtab 用來顯示已經加載的文件系統,通常是/proc/mounts的鏈接文件(可選)
    ftpusers 啓動FTP服務時,用來配置用戶的訪問權限(可選)
    group 用戶的組文件(可選)
    inittab init進程的配置文件(可選)
    ld.so.conf 其它共享庫的路徑(可選)
    passwd 密碼文件(可選)
  • /lib目錄

    • 該目錄下存放共享庫和可加載模塊(即驅動程序),共享庫用於啓動系統、運行根文件系統中的可執行程序,比如/bin、/sbin目錄下的程序

    • 其它不是根文件系統所必須的庫文件可以放在其它目錄,比如/usr/lib、/usr/X11R6/lib、/var/lib等

    目錄/文件 描述
    libc.so.* 動態連接C庫(可選)
    ld* 連接器、加載器(可選)
    modules 內核可加載模式存放的目錄(可選)
  • /home目錄

    用戶目錄,可選的

  • /root目錄

    根用戶目錄

  • /usr目錄

    • /usr目錄的內容可以存在另一個分區中,在系統啓動後再掛接到根文件系統中的/usr目錄下。裏面存放的是共享、只讀的程序和數據,/usr中的文件應該是隻讀的。其它主機相關、可變的文件應該保存在其它目錄下,比如/var目錄

    • /usr目錄通常包含一些目錄,嵌入式系統中,這些內容可以進一步精簡

    目錄 描述
    bin 很多用戶命令存放在這個目錄下
    include C程序的頭文件,這在PC上進行開發時纔用到,在嵌入式系統中不需要
    lib 庫文件
    local 本地目錄
    sbin 非必須的系統命令(必須的系統命令放在/sbin目錄下)
    share 架構無關的數據
    X11R6 XWindows系統
    games 遊戲
    src 源代碼
  • /var目錄

    /var目錄中存放可變的數據,比如spool目錄(mail、news、打印機等),log文件、臨時文件

  • /proc目錄

    • 這是一個空目錄,常作爲proc文件系統的掛接點

    • proc文件系統時個虛擬的文件系統,它沒有實際的存儲設備,裏面的目錄、文件都是由內核臨時生成的,用來表示系統的運行狀態,也可以操作其中的文件控制文件

    • 系統啓動後,使用以下命令掛接proc文件系統(常在/etc/fstab進行設置以自動掛接)

    
    # mount -t proc none /proc
    
  • /mnt目錄

    • 用於臨時掛接某個文件系統的掛接點,通常是空目錄
    • 可以在裏面創建一些空的子目錄,比如/mnt/cdram、/mnt/hda1等,用來臨時掛接光盤、硬盤
  • /tmp目錄

    • 用於存放臨時文件,通常是空目錄。一些需要生成臨時文件的程序要用到/tmp目錄,所以/tmp目錄必須存在並可以訪問

    • 爲減少對Flash的操作,當在/tmp目錄上掛接內存文件系統時,如下所示:

    
    # mount -t tmpfs none /tmp
    

Linux文件屬性

文件類型 描述
普通文件(-) 這是最常見的文件類型
目錄文件(d) 目錄也是一種文件
字符設備文件(c) 用來訪問字符設備
塊設備文件(b) 用來訪問塊設備
FIFO(p) 用於進程間的通信,也稱爲命名管道
套接口(s) 用於進程間的網絡通信
連接文件(l) 它指向另一個文件,有軟連接、硬連接
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章