本章では、Red Hat Linux システムの概要を説明します。ここでは、システムについて知られていない可能性のある側面、および他の UNIX システムと多少異なる点について学びます。
Red Hat は、多数のファイルおよびディレクトリの名前と場所を定義した共同制作文書である「Filesystem Hierarchy Standard」 (FHS) に従います。引き続き弊社はこの規格に追従し、Red Hat Linux がこの規格に準拠した状態を保ちます。
最新の FHS ドキュメントは、任意の FHS 準拠ファイルシステムに対する正式のリファレンスであるものの、この標準に含まれない未定義または拡張可能の領域が多く残されています。このセクションでは、この規格の概要を示し、規格で取り扱われていないファイルシステムの部分について説明します。
規格の全文は次の Web サイトにあります。
規格に準拠することが多くのことを意味する中で、最も重要な 2 つのことは、他の準拠システムとの互換性であり、/usr パーティションを読み込み専用としてマウントできることです。なぜならば、このパーティションは共通の実行可能ファイルを含んでおり、ユーザによって変更されることを意図していないからです。したがって、CD-ROM から、または読み込み専用 FNS 経由で別のマシンから /usr をマウントすることができます。
ここで示すディレクトリおよびファイルは、FHS ドキュメントで指定されるもののほんの一部です。完全な情報については最新の FHS ドキュメントをチェックしてください。
/dev ディレクトリには、システムに接続されたデバイスを表すファイルシステムエントリが含まれています。システムが正しく機能するためには、それらのファイルが不可欠です。
/etc ディレクトリは、マシンにとってローカルな設定ファイルのために予約されています。/etc にはバイナリファイルを配置しないことになっています。かつて /etc の中に配置されていたバイナリファイルを、/sbin または /bin の中に配置する必要があります。
X11 および skel ディレクトリは、/etc のサブディレクトリである必要があります。
/etc |- X11 +- skel |
X11 ディレクトリは、XF86Config などの X11 設定ファイルのためのものです。skel ディレクトリは「skeleton」ユーザファイル用であり、ユーザの作成時にホームディレクトリを作成するために使用されます。
/lib ディレクトリには、/bin および /sbin に含まれるバイナリファイルを実行するために必要なライブラリのみを保存する必要があります。
/proc には、カーネルとの間で情報をやりとりするための特別なファイルが含まれています。cat コマンドを使用すれば、簡単にオペレーティングシステムに関する情報にアクセスすることができます。
/sbin ディレクトリは、root ユーザのみが使用する実行可能ファイル、およびシステムのブート、/usr のマウント、およびシステムの回復操作を実行するために必要な実行可能ファイルのためのものです。FHS によると、
「典型的な場合、/sbin には /bin に含まれるバイナリファイル以外の、システムをブートするために必要なファイルが含まれています。/usr がマウントされたことが認識された後 (何も問題がない場合) に実行されるものを /usr/sbin の中に配置する必要があります。ローカル専用のシステム管理バイナリファイルを /usr/local/sbin の中に配置する必要があります」
最低でも、以下のプログラムを /sbin の中に配置する必要があります。
arp, clock, getty, halt, init, fdisk, fsck.*, ifconfig, lilo, mkfs.*, mkswap, reboot, route, shutdown, swapoff, swapon, update |
/usr ディレクトリは、サイト全体にわたって共有することのできるファイルのためのものです。通常、/usr ディレクトリは独自のパーティションを持っており、読み込み専用でマウント可能とする必要があります。以下のディレクトリ群を /usr のサブディレクトリとする必要があります。
/usr |- X11R6 |- bin |- dict |- doc |- etc |- games |- include |- info |- lib |- libexec |- local |- man |- sbin |- share +- src |
X11R6 ディレクトリは X Window System 用であり (Red Hat Linux 上の XFree86)、 bin は実行可能ファイル用、 doc はランダムな非 man ページドキュメント用、etc はサイト全体に関わる設定ファイル用、include は C ヘッダファイル用、info は GNU info ファイル用、 lib はライブラリ用、 man は man ページ用、 sbin はシステム管理バイナリファイル用 (/sbin には含まれないもの)、そして src はソースコード用です。
FHS では次のように説明しています。
「/usr/local 階層は、システム管理者がソフトウェアをローカルにインストールする際に使用するものです。システムソフトウェアの更新時に上書きされないように、この階層を保護する必要があります。マシンのグループの間で共有可能であるプログラムおよびデータのうち、/usr には含まれないもののために、この階層を使用することができます」
/usr/local ディレクトリは、構造に関しては /usr ディレクトリと類似しています。このディレクトリは以下のサブディレクトリを持っています。それらのサブディレクトリは、目的に関しては /usr ディレクトリと類似しています。
/usr/local |- bin |- doc |- etc |- games |- info |- lib |- man |- sbin +- src |
FHS が、/usr を読み込み専用としてマウントできることを要求しているため、ログファイルを作成するプログラム、または spool または lock ディレクトリを必要とするプログラムは、おそらくデータを /var ディレクトリに書き込む必要があります。FHS は /var の目的を以下のように述べています。
"「…変数データファイル。ここには、spool ディレクトリおよびファイル、管理データおよびロギングデータ、そして一時ファイルが含まれます」
以下のディレクトリ群を /var のサブディレクトリとする必要があります。
/var |- catman |- lib |- local |- lock |- log |- named |- nis |- preserve |- run +- spool |- anacron |- at |- cron |- fax |- lpd |- mail |- mqueue +- news |- rwho |- samba |- slrnpull |- squid |- up2date |- uucp |- uucppublic |- vbox |- voice |- tmp |
wtmp および lastlog などのシステムログファイルは /var/log ディレクトリ内に配置されます。/var/lib ディレクトリには、RPM システムデータベースも含まれています。フォーマットされた man ページは /var/catman の中に配置され、ロックファイルは /var/lock の中に配置されます。/var/spool ディレクトリは、データファイルを格納する必要がある各種システムのためのサブディレクトリを持っています。
Red Hat Linux の場合、/usr/local の用途として意図されたものは、FHS の指定とは多少異なっています。FHS は、システムソフトウェアのアップグレード時には、保護するソフトウェアを /usr/local に格納すべきであるとしています。Red Hat からのシステムアップグレードは RPM システムおよび Gnome-RPM によって安全に行われるため、ソフトウェアを /usr/local に配置して保護する必要はありません。代わりに、マシンにとってローカルなソフトウェアのために /usr/local を使用することをお奨めします。
たとえば、読み込み専用 NFS 経由で beavis から /usr をマウントしたとします。インストールしたいパッケージまたはプログラムがあるものの、beavis への書き込み権限がない場合、/usr/local の下にそれらをインストールする必要があります。後になって、プログラムを /usr にインストールしてもらえるように beavis のシステム管理者を説得できた場合には、そのプログラムを /usr/local からアンインストールすることができます。