1.2. ファイルシステム階層標準(FHS)の概要
Red Hat Enterprise Linux は、Filesystem Hierarchy Standard (FHS) のファイルシステム構造を使用します。これは、多くのファイルタイプやディレクトリーの名前、場所、およびパーミッションを定義します。
FHS ドキュメントは、すべての FHS 準拠のファイルシステムにとって信頼できるリファレンスですが、この標準では、多くの領域が未定義または拡張可能です。このセクションでは、標準の概要と、標準でカバーされていないファイルシステムの部分について説明します。
標準への準拠は多くのことを意味しますが、最も重要な点は、他の準拠システムと互換性であり、
/usr/
パーティションを読み取り専用としてマウントする機能です。ディレクトリーには共通の実行ファイルが含まれており、ユーザーが変更すべきではないため、この 2 番目の点は重要です。また、/usr/
ディレクトリーは読み取り専用としてマウントされているため、CD-ROM または読み取り専用 NFS マウントを介して別のマシンからマウントできます。
1.2.1. FHS 組織
ここで記載されているディレクトリーおよびファイルは、FHS ドキュメントで指定された小さなサブセットです。最も詳しい情報については、最新の FHS ドキュメントを参照してください。
完全な標準は http://www.pathname.com/fhs/ でオンラインで利用できます。
1.2.1.1. /boot/
ディレクトリー
/boot/
ディレクトリーには、Linux カーネルなどのシステムの起動に必要な静的ファイルが含まれます。これらのファイルは、システムが正しく起動するためには不可欠です。
警告
/boot/
ディレクトリーを削除しないでください。削除すると、システムが起動できなくなります。
1.2.1.2. /dev/
ディレクトリー
/dev/
ディレクトリーには、システムに接続されているデバイス、またはカーネルが提供する仮想デバイスを表すデバイスノードが含まれます。これらのデバイスノードは、システムが適切に機能するために不可欠です。udev デーモンは、/dev/
にあるこれらのデバイスノードをすべて作成し、削除します。
/dev
ディレクトリーおよびサブディレクトリー内のデバイスは、文字(入出力のシリアルストリームのみを提供)または block (ランダムにアクセス可能)のいずれかです。キャラクターデバイスにはマウス、キーボード、モデムが含まれ、ブロックデバイスにはハードディスク、フロッピードライブなどが含まれます。システムに GNOME または KDE がインストールされている場合は、外部ドライブや cd などのデバイスが接続時(例:usb など)または挿入(CD または DVD ドライブなど)時に自動的に検出され、コンテンツを表示するポップアップウィンドウが自動的に表示されます。/dev
ディレクトリー内のファイルは、システムが適切に機能するために不可欠です。
File | 説明 |
---|---|
/dev/hda | プライマリー IDE チャネル上のマスターデバイス。 |
/dev/hdb | プライマリー IDE チャネルのスレーブデバイス。 |
/dev/tty0 | 最初の仮想コンソール。 |
/dev/tty1 | 2 番目の仮想コンソール |
/dev/sda | プライマリー SCSI または SATA チャネルの最初のデバイス。 |
/dev/lp0 | 最初の並列ポート。 |
1.2.1.3. /etc/
ディレクトリー
/etc/
ディレクトリーは、マシンのローカルとなる設定ファイル用に予約されています。/etc/
に配置されるバイナリーはありません。/etc/
に置かれたバイナリーは、/sbin/
または /bin/
に配置する必要があります。
/etc
内のディレクトリーの例は、X11/
および skel/
です。
/etc |- X11/ |- skel/
/etc/X11/
ディレクトリーは、xorg.conf
などの X Window System 設定ファイル用です。/etc/skel/
ディレクトリーは、ユーザーの初回作成時にホームディレクトリーを設定するために使用されるスケルトンユーザーファイル用です。また、アプリケーションはこのディレクトリーに設定ファイルを保存し、実行時にそれらを参照する可能性があります。
1.2.1.4. /lib/
ディレクトリー
/lib/
ディレクトリーには、/bin/
および /sbin/
でバイナリーを実行するために必要なライブラリーのみが含まれている必要があります。これらの共有ライブラリーイメージは、システムを起動し、root ファイルシステム内でコマンドを実行する場合に特に重要です。
1.2.1.5. /media/
ディレクトリー
/media/
ディレクトリーには、usb ストレージメディア、DVD、CD-ROM、Zip ディスクなどのリムーバブルメディアのマウントポイントとして使用されるサブディレクトリーが含まれます。
1.2.1.6. /mnt/
ディレクトリー
/mnt/
ディレクトリーは、NFS ファイルシステムのマウントなどの、一時的にマウントされたファイルシステム用に予約されています。すべてのリムーバブルメディアには、/media/
ディレクトリーを使用してください。自動的に検出されたリムーバブルメディアは、/media
ディレクトリーにマウントされます。
注記
/mnt
ディレクトリーは、インストールプログラムでは使用しないでください。
1.2.1.7. /opt/
ディレクトリー
/opt/
ディレクトリーは、ほとんどのアプリケーションソフトウェアパッケージのストレージを提供します。
/opt/
ディレクトリーにファイルを配置するパッケージにより、パッケージと同じ名前を持つディレクトリーが作成されます。次に、このディレクトリーはファイルシステム全体に分散されるファイルを保持し、システム管理者は特定のパッケージ内の各ファイルのロールを簡単に判別できるようにします。
たとえば、
sample
が /opt/
ディレクトリーにある特定のソフトウェアパッケージの名前である場合、そのファイルはすべて /opt/sample/
bin/(バイナリーの場合は /opt/sample/bin/
、man ページの場合は /opt/sample/bin/
など)に配置されます。
多くの異なるサブパッケージ、データファイル、追加フォント、clipart などを含むパッケージも
/opt/
ディレクトリーに置かれ、その大きなパッケージ自体を整理する方法を提供します。このようにして、サンプルパッケージには、それぞれが /opt/ sample
/tool 1/ や /opt/sample/tool 2/
などの独自のサブディレクトリーに配置されるツール
があり、各パッケージは独自の bin/
、man/
、およびその他の同様のディレクトリーを持つことができます。
1.2.1.8. /proc/
ディレクトリー
/proc/
ディレクトリーには、カーネルから情報を抽出するか、カーネルへの情報送信を行う特別なファイルが含まれます。たとえば、システムメモリー、CPU 情報、ハードウェア設定などが挙げられます。
/proc/
で利用できる大量のデータや、このディレクトリーを使用してカーネルと通信する方法が多数あるため、章全体がサブジェクトに展開されています。詳細は、5章proc
ファイルシステム を参照してください。
1.2.1.9. /sbin/
ディレクトリー
/sbin/
ディレクトリーには、root ユーザーが使用する実行ファイルが保存されます。/sbin/
の実行可能ファイルは、システム管理とシステム復旧操作を実行するために、システムの起動時に使用されます。このディレクトリーでは、FHS は以下を示しています。
/sbin
には、/bin
のバイナリーに加えて、システムの起動、復元、リカバリー、および修復に不可欠なバイナリーが含まれています。/usr/
の後に実行されるプログラムは(問題がない場合に)マウントすることがわかっています。通常、/usr/sbin
に配置されます。ローカルにインストールされたシステム管理プログラムは、/usr/local/sbin
に配置する必要があります。
少なくとも、以下のプログラムは
/sbin/
になければなりません。
arp
,clock
,halt
,init
,fsck.*
,grub
,ifconfig
,mingetty
,mkfs.*
,mkswap
,reboot
,route
,shutdown
,swapoff
,swapon
1.2.1.10. /srv/
ディレクトリー
/srv/
ディレクトリーには、Red Hat Enterprise Linux を実行しているシステムが提供するサイト固有のデータが含まれます。このディレクトリーは、FTP、WWW、または CVS などの特定サービスのデータファイルの場所をユーザーに提供します。特定のユーザーにのみ関連するデータは、/home/
ディレクトリー内になければなりません。
1.2.1.11. /sys/
ディレクトリー
/sys/
ディレクトリーは、2.6 カーネルに固有の新しい sysfs
仮想ファイルシステムを使用します。2.6 カーネルのホットプラグハードウェアデバイスのサポートが増えると、/sys/
ディレクトリーには同様の情報が /proc/
に保持されますが、ホットプラグデバイスに関する特定のデバイス情報の階層ビューが表示されます。
1.2.1.12. /usr/
ディレクトリー
/usr/
ディレクトリーは、複数のマシンにまたがって共有できるファイル用です。多くの場合、/usr/
ディレクトリーは独自のパーティションにあり、読み取り専用でマウントされます。少なくとも、以下のディレクトリーは /usr/
のサブディレクトリーである必要があります。
/usr |- bin/ |- etc/ |- games/ |- include/ |- kerberos/ |- lib/ |- libexec/ |- local/ |- sbin/ |- share/ |- src/ |- tmp -> ../var/tmp/
/usr/
ディレクトリーの bin/
サブディレクトリーには実行ファイルが含まれ、etc/
にはシステム全体の設定ファイル、games
is for games、include/
には C ヘッダーファイルが含まれ、kerberos/
にはバイナリーやその他の Kerberos 関連のファイルが含まれます。lib/
には、ユーザーまたはシェルスクリプトが直接使用されないように設計されていないオブジェクトファイルとライブラリーが含まれます。libexec/
ディレクトリーには、他のプログラムによって呼び出される小さなヘルパープログラムが含まれています。sbin/
はシステム管理バイナリー( /sbin/
ディレクトリーに属さないもの)用です。share/
には、アーキテクチャー固有ではないファイル、src/
はソースコード用です。
1.2.1.13. /usr/local/
ディレクトリー
FHS は以下を示しています。
/usr/local
階層は、ソフトウェアをローカルでインストールする場合にシステム管理者が使用します。システムソフトウェアの更新時に上書きされないようにする必要があります。これは、ホストのグループ間で共有できるが、/usr
にないプログラムやデータに使用できます。
/usr/
local/
ディレクトリーは、/usr/ ディレクトリーの構造に似ています。これには、/usr/
ディレクトリー内のサブディレクトリーと似た以下のサブディレクトリーがあります。
/usr/local |- bin/ |- etc/ |- games/ |- include/ |- lib/ |- libexec/ |- sbin/ |- share/ |- src/
Red Hat Enterprise Linux では、
/usr/local/
ディレクトリーに使用することが、FHS で指定されたものと若干異なります。FHS は、/usr/local/
が、システムソフトウェアのアップグレードで安全を確保できるソフトウェアが保存されている場所である必要があることを示しています。ソフトウェアアップグレードは RPM Package Manager (RPM)を使用して安全に実行できるため、ファイルを /usr/local/
に配置してファイルを保護する必要はありません。代わりに、/usr/local/
ディレクトリーは、マシンのローカルにあるソフトウェアに使用されます。
たとえば、
/usr/
ディレクトリーがリモートホストから読み取り専用の NFS 共有としてマウントされている場合でも、/usr/local/
ディレクトリーの下にパッケージまたはプログラムをインストールすることができます。
1.2.1.14. /var/
ディレクトリー
FHS では、Linux が
/usr/
を読み取り専用としてマウントする必要があるため、ログファイルを書き込むプログラムや、spool/
または lock/
ディレクトリーが必要なプログラムは、それらを /var/
ディレクトリーに書き込む必要があります。FHS の状態 /var/
は以下を対象にしています。
...変数データファイル。これには、スプールディレクトリーおよびファイル、管理およびロギングデータ、および一時および一時ファイルが含まれます。
以下は、
/var/
ディレクトリーにあるディレクトリーの一部です。
/var |- account/ |- arpwatch/ |- cache/ |- crash/ |- db/ |- empty/ |- ftp/ |- gdm/ |- kerberos/ |- lib/ |- local/ |- lock/ |- log/ |- mail -> spool/mail/ |- mailman/ |- named/ |- nis/ |- opt/ |- preserve/ |- run/ +- spool/ |- at/ |- clientmqueue/ |- cron/ |- cups/ |- exim/ |- lpd/ |- mail/ |- mailman/ |- mqueue/ |- news/ |- postfix/ |- repackage/ |- rwho/ |- samba/ |- squid/ |- squirrelmail/ |- up2date/ |- uucp |- uucppublic/ |- vbox/ |- tmp/ |- tux/ |- www/ |- yp/
messages
および lastlog
などのシステムログファイルは、/var/log/
ディレクトリーに移動します。/var/lib/rpm/
ディレクトリーには、RPM システムデータベースが含まれます。ロックファイルは、通常はファイルを使用するプログラムのディレクトリーにある /var/lock/
ディレクトリーに移動します。/var/spool/
ディレクトリーには、データファイルが保存されるプログラムのサブディレクトリーがあります。