1. 程式人生 > >Linux 檔案系統層級標準 Filesystem Hierarchy Standard (FHS)3.0 基本全章節中文翻譯

Linux 檔案系統層級標準 Filesystem Hierarchy Standard (FHS)3.0 基本全章節中文翻譯


本文章所有內容不允許以任何形式進行轉載、複製、存檔或分發等,為了避免翻譯過程中對標準內容理解有誤、或語言組織不嚴謹等造成的不能100%表達或闡述原標準的思想和內容,從而誤導讀者或造成錯誤等,強烈要求讀者以原英文版為準,此文章只做為個人學習筆記。

歡迎讀者以留言等任何方式予以糾正錯誤。


 

Linux 基金會官網原英文版連結:

http://refspecs.linuxfoundation.org/FHS_3.0/fhs-3.0.html

 

製作根檔案系統時,我不知道需要新建哪些目錄,網上的文章各有各的說法,所以就瞭解了下FHS

FHS 目前有兩個版本 2.3 和 3.0,

FHS 2.3   於2004年1月29日釋出。

FHS 3.0   於2015年6月3日釋出。

下文將以3.0為基礎進行翻譯

主要用了 google 和 youdao 翻譯

Filesystem Hierarchy Standard

LSB Workgroup, The Linux Foundation

Version 3.0

Copyright © 2015 The Linux Foundation

Copyright © 1994-2004 Daniel Quinlan

Copyright © 2001-2004 Paul 'Rusty' Russell

Copyright © 2003-2004 Christopher Yeoh


目錄

第3章 根檔案系統

3.2 要求

3.3 具體選擇

3.4  /bin:基本使用者命令二進位制檔案(供所有使用者使用)

3.4.1 目的

3.4.2  要求

3.4.3 具體選擇

3.5.  /boot:boot loader 的靜態檔案

3.5.1. 目的

3.5.2 具體選擇

3.6 dev:裝置檔案

3.6.1 目的

3.7 /etc:主機專用的系統配置

3.7.1 目的

3.7.2 要求

3.7.3 具體選擇

3.7.4 /etc/opt:/opt的配置檔案 

3.7.5. /etc/X11 : X Window系統的配置(可選)

3.7.6. /etc/sgml : SGML的配置檔案(可選)

3.7.7. /etc/xml : XML 的配置檔案(可選)

3.8. /home : 使用者主目錄(可選)

3.8.1 目的

3.8.2 要求

3.8.3 主目錄規範和約定

3.9. /lib :基本共享庫和核心模組

3.9.1. 目的

3.9.2 要求

3.9.3 具體選擇

3.10. /lib : Alternate format essential shared libraries (optional)

3.10.2 要求

3.11. /media :可移動媒體的掛載點

3.11.1 目的

3.11.2.  具體選擇

3.12. /mnt :臨時掛載檔案系統的掛載點

3.12.1 目的

3.13. /opt : 附加應用程式軟體包

3.13.1 /opt用於安裝附加應用程式軟體包而保留的

3.13.2. 要求

3.14. /root :root使用者的主目錄(可選)

3.14.1. 目的

3.15. /run :執行時可變的資料

3.15.1 目的

3.15.2 要求

3.16. /sbin : 系統二進位制檔案

3.16.1 目的

3.16.2 要求

3.16.3 具體選擇

3.17. /srv : Data for services provided by this system

3.17.1. Purpose

Rationale

3.18 /tmp:臨時檔案

第4章 /usr層次結構

4.1 目的

4.2. 要求

4.3 具體選擇

4.4 /usr/ bin:大多數使用者命令

4.4.1 目的

4.4.2 要求

4.4.3 具體選擇

4.5 /usr/include:標準標頭檔案的目錄

4.6 /usr/lib:用於程式設計和封裝的庫

4.6.1 目的

4.6.2 具體選擇

4.7 /usr/libexec:其他程式執行的二進位制檔案(可選)

4.8. /usr/lib : Alternate format libraries (optional)

4.8.1 目的

4.9. /usr/local : 本地層次結構

4.9.1 目的

4.9.2 要求

4.9.3 具體選擇

4.9.4. /usr/local/share : 本地獨立於架構的層次結構

4.10. /usr/sbin : 非必要的標準系統二進位制檔案

4.10.1 目的

4.10.2 要求

4.11. /usr/share : 與架構無關的資料

4.11.1 目的

4.11.2 要求

4.11.3 具體選擇

4.11.4. /usr/share/color : 色彩管理資訊(可選)

4.11.5. /usr/share/dict 單詞列表(可選)

4.11.6 /usr/share/man:手冊頁

4.11.7 /usr/share/misc:其他與架構無關的資料

4.11.8. /usr/share/ppd : 印表機定義(可選)

4.11.9. /usr/share/sgml : SGML資料(可選)

4.11.10. /usr/share/xml : XML 資料(可選)

4.12. /usr/src : 原始碼(可選)

4.12.1. 目的

第5章 /var 層次結構

5.2 要求

5.3 具體選擇

5.4 /var/account:程序統計日誌(可選)

5.4.1 目的

5.5 /var/cache:應用程式快取資料

5.5.1 目的

5.6 /var/crash:系統崩潰轉儲(可選)

5.6.1 目的 

5.7 /var/games:可變遊戲資料(可選)

5.7.1 目的

5.8 /var/lib:變數狀態資訊

5.8.2 要求

5.8.3 具體選擇

5.8.4. /var/lib/ : Editor backup files and state (optional)

5.8.5. /var/lib/color : Color management information (optional)

5.8.6. /var/lib/hwclock : State directory for hwclock (optional)

5.8.7. /var/lib/misc : Miscellaneous variable data

5.9 /var/lock:鎖檔案

5.9.1 目的

5.10 /var/log:日誌檔案和目錄

5.10.1 目的

5.10.2 具體選擇

5.11 / var / mail:使用者郵箱檔案(可選)

5.11.1 目的

5.12 /var/opt:/opt的可變資料

5.12.1 目的

5.13 /var/run:執行時可變資料

5.13.1 目的

5.13.2 要求

5.14. /var/spool : Application spool data

5.15 /var/tmp:系統重新啟動之間保留的臨時檔案

5.15.1 目的

5.16 /var/yp:網路資訊服務(NIS)資料庫檔案(可選)

5.16.1 目的

第6章 作業系統特定附件

6.1 Linux的

6.1.1. /: Root directory

6.1.2 /bin:基本使用者命令二進位制檔案(供所有使用者使用)

6.1.4 /etc:特定於主機的系統配置

6.1.5. /proc : 核心和程序的虛擬檔案系統資訊

6.1.6 /sbin:基本系統二進位制檔案

6.1.7 /sys:核心和系統虛擬檔案系統資訊

6.1.8 /usr/include:C程式包含的標頭檔案

6.1.9 /usr/src:原始碼

注意

6.1.10. /var/spool/cron : cron and at jobs


第3章 根檔案系統

3.2 要求

/中需要以下目錄或目錄的符號連結

目錄 描述
bin 基本命令二進位制檔案
boot 引導 boot loader 的靜態檔案
dev 裝置檔案
etc 主機專用的系統配置
lib 基本共享庫和核心模組
media 可移動媒體的掛載點
mnt 臨時掛載檔案系統的掛載點
opt 附加應用程式軟體包
run 程序執行過程中的相關資料
sbin 基本系統二進位制檔案
srv 提供該系統服務的資料
tmp 臨時檔案
usr 二級層次結構
var 可變資料

由於這些目錄的複雜性, /usr/var 會有完整的章節單獨介紹。

3.3 具體選擇

如果安裝了相應的子系統,則以下目錄或目錄的符號連結必須位於/

目錄 描述
home 使用者主目錄(可選)
lib <qual> 另一種格式的基本共享庫 (可選)
root root使用者的主目錄(可選)

上面列出的每個目錄都在下面的單獨小節中詳細說明。

3.4  /bin:基本使用者命令二進位制檔案(供所有使用者使用)

3.4.1 目的

/bin包含可供系統管理員和使用者使用的命令,但在沒有安裝其他檔案系統時(例如,在單使用者模式下)則需要這些命令。 它還可能包含指令碼間接使用的命令。[1]


[1] 沒有必要放入 /bin 的命令二進位制檔案必須放在 /usr/bin 中。非root使用者(X Window System,chsh等)所需的項通常沒有必要放入根分割槽。

3.4.2  要求

/bin必須沒有子目錄。

/bin中需要以下命令或命令的符號連結:

cat 用於將檔案連線到標準輸出的實用程式
chgrp 用於更改檔案組所有權的實用程式
chmod 用於更改檔案訪問許可權的實用程式
chown 用於更改檔案所有者和組的實用程式
cp 用於複製檔案和目錄的實用程式
date 用於列印或設定系統資料和時間的實用程式
dd 用於轉換和複製檔案的實用程式
df 用於報告檔案系統磁碟空間使用情況的實用程式
dmesg 用於列印或控制核心訊息緩衝區的實用程式
echo 用於顯示一行文字的實用程式
false Utility to do nothing, unsuccessfully
hostname 用於顯示或設定系統主機名的實用程式
kill 用於向程序傳送訊號的實用程式
ln 用於在檔案之間建立連結的實用程式
login 用於在系統上開始會話的實用程式
ls 用於列出目錄內容的實用程式
mkdir 用於製作目錄的實用程式
mknod 用於製作塊或字元特殊檔案的實用程式
more 用於翻閱文字的實用程式
mount 掛載檔案系統的實用程式
mv 用於移動/重新命名檔案的實用程式
ps 報告程序狀態的實用程式
pwd 用於列印當前工作目錄名稱的實用程式
rm 用於刪除檔案或目錄的實用程式
rmdir 用於刪除空目錄的實用程式
sed  `sed' 流編輯器
sh 與POSIX命令相容的shell
stty 用於更改和設定終端命令列的實用程式
su 用於更改使用者ID的實用程式
sync 用於重新整理檔案系統緩衝區的實用程式
true Utility to do nothing, successfully
umount 用於解除安裝檔案系統的實用程式
uname 用於列印系統資訊的實用程式

 如果 /bin/sh 本身不是POSIX相容的shell命令,則它必須是真實shell命令的硬連結或符號連結。

 [test 命令 必須一起放置在 /bin/usr/bin 內.

基本原理:

當呼叫sh時,各個shell的表現不同,以便在需要允許更改或擴充套件至POSIX時,保留POSIX相容性。

要求 [ test 命令作為二進位制檔案(即使由shell在內部實現)包含的要求與POSIX.1-2008標準共享。

3.4.3 具體選擇

如果安裝了相應的子系統,則以下程式或程式的符號連結必須位於/bin

Command Description
csh C shell(可選)
ed `ed' 編輯器(可選)
tar tar 歸檔實用程式(可選)
cpio cpio 歸檔實用程式(可選)
gzip GNU 壓縮實用程式(可選)
gunzip GNU 解壓縮實用程式(可選)
zcat GNU 解壓縮實用程式(可選)
netstat 網路統計工具(可選)
ping ICMP網路測試實用程式(可選)

 /bin/csh 可以是 /bin/tcsh /usr/bin/tcsh 的符號連結。

基本原理

添加了targzip cpio 命令以使系統恢復成為可能(假設 / 是完整的).

相反,如果不期望從根分割槽恢復,則可以省略這些二進位制檔案(e.g., a ROM chip root, 通過 NFS 掛載  /usr ). 如果計劃通過網路恢復系統,則 ftp tftp(以及獲取ftp連線所需的一切)在根分割槽上必須是可用的 。

 

3.5.  /boot:boot loader 的靜態檔案

3.5.1. 目的

此目錄包含引導過程所需的所有內容,引導時不需要的配置檔案和對映安裝程式除外。 因此 /boot 儲存在核心開始執行使用者模式程式之前使用的資料。 這可能包括儲存的主引導扇區和扇區對映檔案。

為了 boot loader 能夠引導檔案,必要的程式必須放置在/sbin中 ,在啟動時,boot loaders 不需要的配置檔案必須放到 /etc

3.5.2 具體選擇

作業系統核心必須位於//boot

某些體系結構可能對/boot 有其他要求,這與該體系結構特有的限制或期望有關。 這些要求未在此列舉; 允許發行版根據需要新增需求,以便在這些體系結構上啟用系統。

3.6 dev:裝置檔案

3.6.1 目的

/dev目錄是特殊檔案或裝置檔案的位置。

如果有可能需要手動建立/dev中的裝置,則 /dev 必須包含名為 MAKEDEV 的命令,該命令可以根據需要建立裝置。它還可以包含任何用於本地裝置的 MAKEDEV.local

如果需要,MAKEDEV 必須提供建立系統上可能找到的任何裝置的條件,而不僅僅是特定發行版安裝的裝置。

3.7 /etc:主機專用的系統配置

3.7.1 目的

/etc層次結構包含配置檔案。“配置檔案”是用於控制程式執行的本地檔案;它必須是靜態的,不可執行二進位制檔案。[2]


[2]需要明確的是,/etc可能包含可執行指令碼,例如init通常呼叫的命令指令碼,用於啟動和關閉系統以及啟動守護程序。在此上下文中,“可執行二進位制”指的是人類不可讀格式的直接機器程式碼或虛擬碼,例如本機ELF可執行檔案。

建議將檔案儲存在/etc子目錄中,而不是直接儲存在/etc

3.7.2 要求

/etc下不能放置二進位制檔案。

/etc中需要以下目錄或目錄的符號連結:

Directory Description
opt Configuration for /opt

3.7.3 具體選擇

如果安裝了相應的子系統,則以下目錄或目錄的符號連結必須位於/etc :[3]


[3]使用 shadow password suite 的系統將具有額外的配置檔案位於/etc (/etc/shadow and others),額外的程式位於 /usr/sbin (useradd, usermod, and others).

Directory Description
X11 X Window系統的配置(可選)
sgml SGML的配置(可選)
xml

XML的配置(可選)

File Description
csh.login Systemwide initialization file for C shell logins (optional)
exports NFS filesystem access control list (optional)
fstab 有關檔案系統的靜態資訊(可選)
ftpusers FTP daemon user access control list (optional)
gateways File which lists gateways for routed (optional)
gettydefs Speed and terminal settings used by getty (optional)
group 使用者組檔案(可選)
host.conf Resolver configuration file (optional)
hosts Static information about host names (optional)
hosts.allow Host access file for TCP wrappers (optional)
hosts.deny Host access file for TCP wrappers (optional)
hosts.equiv List of trusted hosts for rlogin, rsh, rcp (optional)
hosts.lpd List of trusted hosts for lpd (optional)
inetd.conf Configuration file for inetd (optional)
inittab Configuration file for init (optional)
issue Pre-login message and identification file (optional)
ld.so.conf List of extra directories to search for shared libraries (optional)
motd Post-login message of the day file (optional)
mtab Dynamic information about filesystems (optional)
mtools.conf Configuration file for mtools (optional)
networks Static information about network names (optional)
passwd The password file (optional)
printcap The lpd printer capability database (optional)
profile Systemwide initialization file for sh shell logins (optional)
protocols IP protocol listing (optional)
resolv.conf Resolver configuration file (optional)
rpc RPC protocol listing (optional)
securetty TTY access control for root login (optional)
services Port names for network services (optional)
shells Pathnames of valid login shells (optional)
syslog.conf Configuration file for syslogd (optional)

mtab does not fit the static nature of /etc: it is excepted for historical reasons.[4]

[4]On some Linux systems, this may be a symbolic link to /proc/mounts, in which case this exception is not required.

3.7.4 /etc/opt:/opt的配置檔案 

3.7.4.1 目的

附加應用程式軟體包的主機專業配置檔案必須安裝在目錄/etc/opt/<subdir> ,其中<subdir>/opt中子樹的名稱,其中儲存了該程式包中的靜態資料。

3.7.4.2 要求

/etc/opt/<subdir>的內部排列沒有任何強制結構。 

如果配置檔案必須位於不同的位置以使程式包或系統正常執行,則可以將其放在/etc/opt/<subdir>以外的位置。

基本原理

請參閱/opt的基本原理。

3.7.5. /etc/X11 : X Window系統的配置(可選)

3.7.5.1. 目的

/etc/X11 是所有特定於X11主機的配置的位置. 如果/ usr以只讀方式掛載,則此目錄對於允許本地控制是必需的。

3.7.5.2. 具體選擇

如果安裝了相應的子系統,則以下檔案或檔案的符號連結必須位於/etc/X11

File Description
xorg.conf The configuration file for X.org versions 7 and later (optional)
Xmodmap Global X11 keyboard modification file (optional)

 /etc/X11 的子目錄可能為 xdm 和任何其他程式 (some window managers, for example) 包含這些檔案.[5]


[5]/etc/X11/xdm 儲存xdm 的配置檔案。. These are most of the files previously found in /usr/lib/X11/xdm. xdm的一些區域性變數資料儲存在/var/lib/xdm

3.7.6. /etc/sgml : SGML的配置檔案(可選)

3.7.6.1 目的

SGML系統定義高階引數的配置檔案安裝在這裡,*.conf檔案表示通用配置檔案。File with names *.cat are the DTD-specific centralized catalogs, containing references to all other catalogs needed to use the given DTD. The super catalog file catalog references all the centralized catalogs.

3.7.7. /etc/xml : XML 的配置檔案(可選)

3.7.7.1 目的

SGML系統定義高階引數的配置檔案安裝在這裡,名稱為*.conf檔案表示通用配置檔案。The super catalog file catalog references all the centralized catalogs.

3.8. /home : 使用者主目錄(可選)

3.8.1 目的

/home是一個相當標準的概念,but it is clearly a site-specific filesystem.[6] 設定因主機而異。因此, no program should assume any specific location for a home directory, 而應該查詢它.[7]


[6]不同的人喜歡將使用者帳戶放在各種地方。本節僅介紹使用者主目錄的建議位置; 儘管如此,我們建議所有符合FHS的發行版都將此作為使用者主目錄的預設位置。為管理目的而建立的非登入帳戶通常將其主目錄放在其他位置。

在較小的系統中,每個使用者的主目錄通常實現為/home 目錄的子目錄,例如/home/smith/home/torvalds/home/operator等。在大型系統中(尤其是當/home目錄使用NFS在多個主機之間共享)細分使用者主目錄是有益的。細分可以通過使用子目錄如來完成/home/staff/home/guests/home/students等。

[7]為了找到使用者主目錄, 使用庫函式例如 getpwent, getpwent_rfgetpwent而不是依靠/etc/passwd,因為使用者資訊有可能使用系統儲存在遠端,比如NIS.

3.8.2 要求

應用程式的使用者專用配置檔案儲存在使用者主目錄中以 '.' 字元 (a "dot file") 開頭的檔案中,如果應用程式需要建立多個 dot file 則應將它們放在名稱以'.' 字元, (a "dot directory")開頭的子目錄中.配置檔案不應該以 '.' 字元開頭。[8]


[8]除了自動儲存和鎖定檔案之外,建議程式應避免在未經使用者同意的情況下在主目錄中建立非點檔案或目錄。

3.8.3 主目錄規範和約定

過去已經做了許多努力來標準化主目錄的佈局,包括XDG基本目錄規範[9]和關於使用者目錄內容的GLib約定。[10]將來有可能在這方面做出更多努力。 為了容納使用這些規範和約定的軟體,分發可以建立遵循規範和約定的目錄層次結構。 這些目錄層次結構可能位於主目錄下。

[9]Found at http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html and http://www.freedesktop.org/wiki/Software/xdg-user-dirs.

[10]A description of GLib's conventions can be found in the documentation for GUserDirectory, at http://developer.gnome.org/glib/unstable/glib-Miscellaneous-Utility-Functions.html#GUserDirectory.

3.9. /lib :基本共享庫和核心模組

3.9.1. 目的

/lib目錄包含引導系統和在根檔案系統中執行命令所需的共享庫映像,即, 通過/bin/sbin的二進位制檔案[11]


[11] 只對/ usr中的二進位制檔案是必需的共享庫必須不在/lib 內.只有在/ bin和/ sbin中執行二進位制檔案所需的共享庫可能在這裡。特別是,庫libm.so.*還可以被放置在/usr/lib,如果沒有在/bin/sbin 中沒有任何需要時。

3.9.2 要求

至少需要以下每個檔名之一(它們可以是檔案或符號連結):

File Description
libc.so.* 動態連結的C庫(可選)
ld* 執行時的連結器/載入器 (可選)

 如果安裝了C前處理器, /lib/cpp必須是對它的引用,這是出於歷史原因。[12]


[12]這個二進位制檔案的通常位置是/usr/bin/cpp

3.9.3 具體選擇

如果安裝了相應的子系統,則以下目錄或目錄的符號連結必須位於/lib

Directory Description
modules 可載入的核心模組(可選)

3.10. /lib<qual> : Alternate format essential shared libraries (optional)

系統上可能存在/lib目錄的一個或多個變體,它們支援多個需要單獨庫的二進位制格式。[13]


[13]這通常用於支援多種二進位制格式但需要同名庫的系統上的64位或32位支援。在這種情況下,/lib32/lib64可能是庫目錄,以及/lib一個符號連結到他們中的一個。

3.10.2 要求

如果存在一個或多個這些目錄,則其內容的要求與標準的 /lib目錄相同,除了不需要/lib<qual>/cpp外。

3.11. /media :可移動媒體的掛載點

3.11.1 目的

此目錄包含子目錄,這些子目錄用作可移動介質(如軟盤,cdroms和zip磁碟)的掛載點。

基本原理

歷史上,有許多其他不同的地方用於安裝可移動媒體,如/cdrom/mnt/mnt/cdrom 。 將所有可移動介質的掛載點直接放在根目錄中可能會導致/中存在大量額外目錄。 儘管最近在/mnt使用子目錄作為掛載點已經很常見了,但它與使用/mnt直接作為臨時掛載點的更古老的傳統相沖突。

3.11.2.  具體選擇

如果安裝了相應的子系統,則以下目錄或目錄的符號連結必須位於/media

Directory Description
floppy 軟碟機(可選)
cdrom CD-ROM驅動器(可選)
cdrecorder CD燒錄機(可選)
zip Zip驅動器(可選

在存在多個用於安裝特定型別介質的裝置的系統上,可以通過將數字附加到上面以“0”開頭的可用名稱來建立安裝目錄,但是非限定名稱也必須存在。[15]


[15]具有兩個CDROM驅動器的柔性分佈可能具有/media/cdrom0/media/cdrom1/media/cdrom符號連結到其中任意一個。

3.12. /mnt :臨時掛載檔案系統的掛載點

3.12.1 目的

提供此目錄,以便系統管理員可以根據需要臨時安裝檔案系統。此目錄的內容是本地問題,不應影響任何程式的執行方式。

安裝程式不得使用此目錄:必須使用系統未使用的合適的臨時目錄。

3.13. /opt : 附加應用程式軟體包

3.13.1 /opt用於安裝附加應用程式軟體包而保留的

要安裝在/opt軟體包必須將其靜態檔案放在單獨的/opt/<package>/opt/<provider>目錄樹中,其中<package>是描述軟體包的名稱, <provider>是提供商的LANANA註冊名稱。

3.13.2. 要求

Directory Description
<package> Static package objects
<provider> LANANA registered provider name

目錄/opt/bin, /opt/doc, /opt/include, /opt/info, /opt/lib, and /opt/man 保留供本地系統管理員使用。軟體包可以提供“front-end”檔案,這些檔案旨在由本地系統管理員放置(通過連結或複製)到這些保留的目錄,但必須在沒有這些保留目錄的情況下正常執行。

使用者要呼叫的程式必須位於目錄/opt/<package>/bin/opt/<provider>層次結構中。 如果程式包含UNIX手冊頁,則它們必須位於/opt/<package>/share/man/opt/<provider>層次結構中,並且必須使用與/usr/share/man相同的子結構。

<