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的創建
手動創建
- 在製作根文件系統的時候,就在/dev目錄下創建好要使用的設備文件,比如ttySAC0等
- 系統掛接根文件系統後,就可以使用/dev目錄下的設備文件了
使用devfs文件系統:這種方法已經過時
在以前的內核中,有一個配置選項CONFIG_DEVFS_FS,它用來將虛擬文件系統devfs掛接在/dev目錄上。
各個驅動程序註冊時會在/dev目錄下自動生成各種設備文件。在製作根文件系統時,/dev目錄可以爲空。
缺點
- 不確定的設備映射
- 沒有足夠的主/次設備號
- 命名不夠靈活
- devfs消耗大量的內存
udev
udev是個用戶程序(u指user space,dev是指device),它能夠根據系統中硬件設備的狀態動態地更新設備文件,包括設備文件的創建、刪除等
使用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) | 它指向另一個文件,有軟連接、硬連接 |