この章ではFHS(FileHierarchyStandard)に基づいて、Linuxのファイルシステム階層を説明する。
FHSはLinuxにおけるファイルやディレクトリに関する標準を定めた仕様であり、各ディストリビューションはこれに従って、ファイル、ディレクトリの階層化を行っている。
ファイルは他のホストと共有可能かあるいは不可能か、編集可能か不可能かで4つに大別することができる。
例えば/homeは他ノードと共有可能であるが、/etcは他ノードとの共有はできない。
一方、/binや/libにあるファイルは読み出しが主で、書き換えられるような正確のものではない。頻繁に書き換えられるようなファイルのためには/varが用意されている。
システムの起動に必要なファイルや、システムが異常をきたした場合に、それを修復するための各種ツールやユーティリティを含む。
ルートファイルシステムに、新しいサブディレクトリを作成することは薦められない。
ルートファイルシステムにはシステム固有の設定等が格納されているため、他システムと共有することはできない。
shやmountなどシステムや一般ユーザに不可欠なコマンドが置かれる。/binは他のファイルシステムがマウントされていないときでも使用できなければならない。
/binの下にはディレクトリを作ってはならない。
/boot
システムの起動に必要な設定ファイルが置かれる。LILOやGRUBで参照されるファイルはこのディレクトリに格納されている。
カーネルイメージは、/ もしくは/bootに格納する必要がある
/dev
デバイスファイルを格納するためのディレクトリ
/etc
システムの各種設定ファイルを格納するためのディレクトリ。/etcには実行ファイルを置いてはならない。
/home
ユーザのホームディレクトを管理するための領域(
/lib
システムの起動や/sbin、/bin以下にあるプログラムの実行に必要なライブラリを保管する領域。カーネルがモジュールを利用する場合、/lib/modulesの下でそれを管理する。
/media
CD-ROM等の外部メディアのマウント場所として利用される。以前は/mntが利用されることが一般的であった。たとえばCD-ROMをマウントすると、/media/cdromに、USBメモリの場合は/media/flashがマウント先となる。
/mnt
CD-ROMやフロッピーディスクといった一時的に使用される必要がある領域のマウント先として利用される。
/opt
アプリケーション・パッケージの実行ファイルを保管するための領域で、/opt以下にはパッケージ名もしくはそのパッケージの供給元の名前がついたサブディレクトリが置かれる。例えばインテル社が販売しているCコンパイラのインストール先は/opt/intel/iccというディレクトリとなる。
各アプリケーションの設定ファイルは/etc/opt以下に保管する。
/root
システム管理者用アカウント(root)のログイン領域として使用される。/sbin
システム管理者が利用する各種ツール、ユーティリティ類は/sbin、/usr/sbin、/usr/local/sbinに置かれる。その中でも/sbinはシステムの起動・修復に使われるコマンドを格納するためのもので、これに属さないものは通常/usr/sbinに置かれる。
/sbinや/usr/sbinはOSが用意するツール類を格納するためのもので、管理者がこの領域にプログラムをインストールすべきではない(管理者が追加する管理ツール類は、/usr/local/sbinを利用する)。
/tmp
/tmpはアプリケーションなどで使う一時ファイルを置くために用意された領域である。そのため、この領域に長期間必要とするファイルを置くべきではない。この領域にあるファイルはシステムの起動時に削除される。
/usrファイルシステムはシステムの起動には直接関係しないファイルが格納される。このファイルシステムは、読み込みのみ(READ-ONLY)であり、FHSに準拠した他のシステムとの共有が可能である。
/usrファイルシステムには以下のディレクトリ(もしくはそのシンボリックリンク)が必要となる。
/usr/bin
ユーザが使用するコマンド群を格納する領域
/usr/include
インクルードファイル(C言語におけるヘッダファイル)を格納する領域
/usr/lib
/usr/binや/usr/sbinに格納された各種コマンドで使用するライブラリを格納する領域
/usr/local
システム管理者がインストールしたアプリケーションなどノード毎に異なる設定を格納する領域(通常OSをインストールした直後では、ディレクトリのみ用意されている)
/usr/sbin
システムの起動・修復には直接関係しない管理用コマンドを格納する領域。
/usr/share
アーキテクチャに依存しないファイルを格納するディレクトリ。OSが提供するコマンドのマニュアル(man)はここに置かれる。
/varにはメールやプリンタのスプール領域や、syslogをはじめとする各種ログファイルのような可変的なファイルが置かれます。
/var/acct
pacct等のアカウンティング(課金)に関するログが格納される。
/var/cache
動的に生成されたフォントやWebといったアプリケーション関連のキャッシュ情報が格納される。
/var/crash
システム障害時に吐き出されるクラッシュダンプを格納するための領域
/var/lib
/var/lock
アプリケーション等で使用するロックファイルを格納する領域。ロックファイルは通常HDBUUCPロックファイル形式が使用される。
/var/log
syslog(/var/log/messages)やwtmp(ログイン/アウトの記録)等、システム関連のログファイルを格納する領域。
/var/opt
/optにインストールされたパッケージが利用する静的ファイルを格納する領域。このディレクトリ配下には、/optにインストールされたパッケージと同じ名前のサブディレクトリが作られる。
/var/run
プロセスIDを記録したファイル(PIDファイル)等、システムが起動した後の状態を保存しているファイルが格納される。
/var/spool
アプリケーションのスプールデータを格納する領域。ここに格納されるスプールデータとしては、プリンタ(lpd)や配信前のメール(mqueue)といったものがある。
/var/tmp
システムの起動時に作られる一時的なファイルやディレクトリを格納するための領域
/var/yp
NIS(NetworkInformationSystem:旧YP)の情報が格納される領域。
FHSの原文は以下のURLから入手できる。平成18年6月時点ではFHS2.3が最新版となっている。