Filesystem Hierarchy Standard開発者Linux Foundation
初版1994年2月14日 (30年前) (1994-02-14)
最新版3.0
(2015年6月3日 (8年前) (2015-06-03))
ウェブサイトhttps://refspecs.linuxfoundation.org/fhs.shtml
Filesystem Hierarchy Standard(ファイルシステム・ハイアラーキー・スタンダード、FHS、ファイルシステム階層標準)は、Linuxを含むUnix系オペレーティングシステム (OS) での主なディレクトリとその内容を定めたものである。大部分において、BSD系のディレクトリ階層を基にして拡張し定式化している。
主要ソフトウェアおよびハードウェアベンダーからなる非営利組織Linux Foundationが保守管理しており、HP、レッドハット、IBM、デルといったベンダーが参加している。
2020年11月 (2020-11)現在[update]の最新版は3.0で、2015年6月3日に発表された[1]。 多くのLinuxディストリビューションはFHS準拠を方針として宣言し、FHSにしたがっている[2][3][4][5]。 もともと、UNIXやUnix系OSには、/etcや/binや/usrなどごく基本的な部分においてはほぼ共通である他は、緩い慣習と、それぞれの主要な開発元によるもう少し強い(たとえば、プロプライエタリなバイナリのみが提供されるプログラムの中にハードコードされているなどといったことがあると、変則的な環境での運用は面倒である)仕様などがあった。例えば、hier(7)で示されるファイルシステムのレイアウト[6]はVersion 7 Unix(1979)から存在し、その他にはSunOSのfilesystem(7)[7]、その後継であるSolarisのfilesystem(5)[8]もある。 最近のLinuxディストリビューションには仮想ファイルシステムとしての/sysディレクトリがあり(sysfs、/procの場合はprocfs)、それを使ってシステムに接続しているデバイスの設定変更が可能である。 GoboLinuxやSyllable ServerといったLinuxシステムはFHSとは全く異なったファイルシステム階層を採用している。 ファイルシステム階層の標準化は、Linuxのファイルおよびディレクトリ構造を再構成する試みとして1993年8月に始まった。FSSTND(Filesystem Standard)というLinux上のファイルシステム階層標準が 1994年2月14日にリリースされ、1994年10月9日と1995年3月28日に改版されている[9]。 1996年初頭、FSSTNDをLinuxだけでなく他のUnix系システムも含めた包括的なものとする作業が、BSD開発コミュニティからも参加者を迎えて行われた。結果としてUnix系システムで広く問題となっていた様々な事柄を解決するために集中することとなった。そのような対象範囲の拡大過程でこの標準の名称がFilesystem Hierarchy Standard(略称:FHS)となった。 意味 バージョンリリース日注釈 物理的には別々のデバイスにあるとしても、全てのファイルとディレクトリはルートディレクトリ(/)の下に置かれる。一部のディレクトリは特定のサブシステム(X Window Systemなど)がインストールされないと作成されないことに注意する必要がある。 これらのディレクトリの多くはあらゆるUnix系オペレーティングシステムに存在し、だいたい同じような使われ方をしている。しかし、ここでの説明はFHS特有のものであって、Linux以外のプラットフォームにも適用可能とは言えない。 ディレクトリ説明 ディレクトリ名自体の意味については議論がある。初期のベル研究所のUNIX実装文書では、/etc は単に「その他 = etcetera」のディレクトリだった[22]。そのため他のディレクトリにそぐわないファイルは何でもこのディレクトリに置いていた(ただし、FHSでは /etc を静的設定ファイル用でバイナリを置かないという制限を設けている)[23]。今では様々なディレクトリ名の後付解釈が行われており、バクロニムとして Editable Text Configuration や Extended Tool Chest と解釈する例もある[24]。 命令セットの32ビット版と64ビット版をサポートするシステムなど、複数の実行コード形式をサポートするシステムで使用される。 読み取り専用のパーティションとしてmountすることもできる。[25] 作業ファイルなど書き換えが発生するファイルを含んだパッケージは/var/optに配置する必要がある。[25] パッケージ名には決まりがあり、下記の名前は使用できない。[25] /opt/bin /opt/doc /opt/include /opt/info /opt/lib /opt/man /optの配下に配置できるディレクトリーにはLANANA名とパッケージ名(その他)という2種類がある。 種類に応じて/optを参照するプログラムの参照先変わるので注意する必要がある。 例えば、パッケージ名の場合、必要に応じて下記のディレクトリーを用意する必要がある。[25] /opt/<package>/bin /opt/<package>/share/man
概要
歴史
リリース履歴
赤古い標準/ドラフト版。既にサポートされていない。
黄古い標準。サポート中。
緑現行標準。
青将来のドラフト版
v1.01994-02-14FSSTND[10]
v1.11994-10-09FSSTND[11]
v1.21995-03-28FSSTND[12]
v2.01997-10-26FHS 2.0はFSSTND 1.2の直接の後継。標準の名称がFilesystem Hierarchy Standardに変更された[13][14]。
v2.12000-04-12FHS[15][16][17]
v2.22001-05-23FHS[18]
v2.32004-01-29FHS[19]
v3.02015-05-18FHS[20]
ディレクトリ構造
/ファイルシステム階層全体の第一階層。ルートディレクトリ。
/binシングルユーザモード
/bootブートローダー (boot loader) 関連のファイル群。例えば、カーネルや initrd(初期RAMディスク)。別パーティションにする事もある[21]。
/dev基本デバイス(device)。例えば、/dev/nullなど。
/etcシステム全体に関わる固有設定ファイル群。
/etc/opt/opt/のための設定ファイル群。
/etc/X11X Window System, version 11 用の設定ファイル群。
/etc/sgmlSGML の設定ファイル群。
/etc/xmlXML の設定ファイル群。
/homeユーザーの ホームディレクトリ (home directory) 群。セーブファイル、個人用設定など。別パーティションとすることが多い。
/lib/bin/ や /sbin/ にある実行ファイルの基本となるライブラリ (library) 群。
/lib<qual>
例: lib32、lib64
このようなディレクトリは必須ではないが、存在する場合はいくつかの要件がある。
/mediaCD-ROMなどのリムーバブル媒体 (media) のマウントポイント(FHS-2.3 で追加)
/mntファイルシステムの一時マウントポイント (mount)
/optオプション (option) のアプリケーションソフトウェアパッケージのインストール用[25]基本的に/usr/localの構成に従わないパッケージの配置に使用するが、読み取り専用のパッケージのみを配置する必要があり、
/procカーネルやプロセス (process) の状態に関する情報を主にテキストで示す仮想ファイルシステム(例えば、実行時間やネットワークなど) 用。procfsのマウントポイント。
/rootrootユーザのホームディレクトリ。
/run実行時の可変データ。FHS3.0より新設。
/sbinシステム管理系コマンドの実行ファイル群(例えば、init、ip、mount)。(system binaries)
/srvシステムによって提供された (served) サイト固有のデータ
/sysデバイス、ドライバ、および一部のカーネル機能に関する情報が含まれている[26]。
/tmp一時ファイル置場 (temporary files)。/var/tmp も参照されたい。再起動時に内容を保持しない。[27]