Filesystem Hierarchy Standard

ウィキペディアから

Filesystem Hierarchy Standard(ファイルシステム・ハイアラーキー・スタンダード、FHS、ファイルシステム階層標準)は、Linuxを含むUnix系オペレーティングシステム (OS) での主なディレクトリとその内容を定めたものである。大部分において、BSD系のディレクトリ階層を基にして拡張し定式化している。

概要 開発者, 初版 ...
Filesystem Hierarchy Standard
開発者Linux Foundation
初版1994年2月14日 (31年前) (1994-02-14)
最新版
3.0
(2015年6月3日 (9年前) (2015-06-03))
ウェブサイトhttps://refspecs.linuxfoundation.org/fhs.shtml
www.pathname.com/fhs/ (Historical)
閉じる

主要ソフトウェアおよびハードウェアベンダーからなる非営利組織Linux Foundationが保守管理しており、HPレッドハットIBMデルといったベンダーが参加している。

2020年11月 (2020-11)現在の最新版は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)から存在し、その他にはSunOSfilesystem(7)[7]、その後継であるSolarisfilesystem(5)[8]もある。

最近のLinuxディストリビューションには仮想ファイルシステムとしての/sysディレクトリがあり(sysfs/procの場合はprocfs)、それを使ってシステムに接続しているデバイスの設定変更が可能である。

GoboLinuxSyllable 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)となった。

リリース履歴

さらに見る 意味 ...
意味
古い標準/ドラフト版。既にサポートされていない。
古い標準。サポート中。
現行標準。
将来のドラフト版
閉じる
さらに見る バージョン, リリース日 ...
バージョン リリース日 注釈
v1.0 1994-02-14 FSSTND[10]
v1.1 1994-10-09 FSSTND[11]
v1.2 1995-03-28 FSSTND[12]
v2.0 1997-10-26 FHS 2.0はFSSTND 1.2の直接の後継。標準の名称がFilesystem Hierarchy Standardに変更された[13][14]
v2.1 2000-04-12 FHS[15][16][17]
v2.2 2001-05-23 FHS[18]
v2.3 2004-01-29 FHS[19]
v3.0 2015-05-18 FHS[20]
閉じる

ディレクトリ構造

要約
視点

物理的には別々のデバイスにあるとしても、全てのファイルとディレクトリルートディレクトリ/)の下に置かれる。一部のディレクトリは特定のサブシステム(X Window Systemなど)がインストールされないと作成されないことに注意する必要がある。

これらのディレクトリの多くはあらゆるUnix系オペレーティングシステムに存在し、だいたい同じような使われ方をしている。しかし、ここでの説明はFHS特有のものであって、Linux以外のプラットフォームにも適用可能とは言えない。

さらに見る ディレクトリ, 説明 ...
ディレクトリ 説明
/ ファイルシステム階層全体の第一階層。ルートディレクトリ。
/bin
シングルユーザモード英語版で必要となる一般ユーザー向けの基本コマンドの実行ファイル (binaries)。例えばcatlscpなど。
/boot
ブートローダー (boot loader) 関連のファイル群。例えば、カーネルinitrd(初期RAMディスク)。別パーティションにする事もある[21]
/dev
基本デバイス(device)。例えば、/dev/nullなど。
/etc
システム全体に関わる固有設定ファイル群。

ディレクトリ名自体の意味については議論がある。初期のベル研究所のUNIX実装文書では、/etc は単に「その他 = etcetera」のディレクトリだった[22]。そのため他のディレクトリにそぐわないファイルは何でもこのディレクトリに置いていた(ただし、FHSでは /etc を静的設定ファイル用でバイナリを置かないという制限を設けている)[23]。今では様々なディレクトリ名の後付解釈が行われており、バクロニムとして "Editable Text Configuration" や "Extended Tool Chest" と解釈する例もある[24]

/etc/opt
/opt/のための設定ファイル群。
/etc/X11
X Window System, version 11 用の設定ファイル群。
/etc/sgml
SGML の設定ファイル群。
/etc/xml
XML の設定ファイル群。
/home
ユーザーの ホームディレクトリ (home directory) 群。セーブファイル、個人用設定など。別パーティションとすることが多い。
/lib
/bin//sbin/ にある実行ファイルの基本となるライブラリ (library) 群。
/lib<qual>

命令セットの32ビット版と64ビット版をサポートするシステムなど、複数の実行コード形式をサポートするシステムで使用される。
例: lib32lib64
このようなディレクトリは必須ではないが、存在する場合はいくつかの要件がある。

/media
CD-ROMなどのリムーバブル媒体 (media) のマウントポイント(FHS-2.3 で追加)
/mnt
ファイルシステムの一時マウントポイント (mount)
/opt
オプション (option) のアプリケーションソフトウェアパッケージのインストール用[25]基本的に/usr/localの構成に従わないパッケージの配置に使用するが、読み取り専用のパッケージのみを配置する必要があり、

読み取り専用のパーティションとして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

/proc
カーネルプロセス (process) の状態に関する情報を主にテキストで示す仮想ファイルシステム(例えば、実行時間やネットワークなど) 用。procfsのマウントポイント。
/root
rootユーザのホームディレクトリ
/run
実行時の可変データ。FHS3.0より新設。
/sbin
システム管理系コマンドの実行ファイル群(例えば、init、ip、mount)。(system binaries)
/srv
システムによって提供された (served) サイト固有のデータ
/sys
デバイス、ドライバ、および一部のカーネル機能に関する情報が含まれている[26]
/tmp
一時ファイル置場 (temporary files)。/var/tmp も参照されたい。再起動時に内容を保持しない。[27]

再起動しない場合も一定期間経過し未使用な状態であるとOSの設定によりファイルが消える。[28]

/usr
大部分のマルチユーザ(全ユーザのための)ユーティリティとアプリケーションを格納する。ホスト固有の情報は/etcに、時間の経過に伴い変化する情報は/varに保存される。共有可能でリードオンリーのデータであるべき。この事は /usr がFHS準拠の様々なホスト間で共有可能であるべき事を意味しており、書き込みができないようにしなければいけない[29]。ファイルシステムで二番目に主要なセクションなどとも言われる。「USeR」の略[31]だが、「User Services and Routines の略」であるとするまことしやかな説が1980年代後半頃から広まっている[32]
/usr/bin
一般ユーザ向けだが基本的ではないコマンドの実行ファイルシングルユーザモード英語版で必要としない)。
/usr/include
標準 includeファイル
/usr/lib
/usr/bin//usr/sbin/ にある実行ファイルの基本となるライブラリ (library) 群。
/usr/local
ホスト固有のローカル (local) データを格納する。[33]現在はmake installなどpackage manager以外でインストールしたときに/usr代わりのインストール先として使うことを目的としており、/usrと同様サブディレクトリ―として bin/lib/share/ などを持つ。[34] それぞれのサブディレクトリ―には/binや/usr/bin同様環境変数に登録されているのが一般的で、その他の環境変数に登録されているディレクトリーと同様、ファイルを参照するときにファイルパスを省略できる。 /usr/localの直下にはOSインストール時に作成されているディレクトリー以外は追加してはならない。[35]これは、/usr/localが/usrの代わりであるためである。/usr/localの構成に従わないパッケージは/optに配置する必要がある。/usr/localはOSのバージョン更新後もそのまま使うことができるが、FHSに従わず/usr/local直下に作成したディレクトリーはOSが作成するディレクトリーと干渉する恐れがある。
/usr/sbin
基本的でないシステム実行ファイル群。例えば、各種ネットワークサービス用デーモンなど。
/usr/share
アーキテクチャに依存しない共有 (shared) データ
/usr/src
ソースコード (Source code)。例えば、カーネルのソースコードとそのヘッダファイル群など。
/usr/X11R6
X Window System, Version 11 Release 6
/var
可変 (Variable) なファイル群。内容が常に変化するようなファイル群を格納する。例えば、ログ、スプール、一時的電子メールファイルなど。別パーティションとすることもある。
/var/cache
アプリケーションのキャッシュデータ。I/Oや計算などで作られた、再生成には時間がかかるデータ。
/var/lib
状態情報。プログラムの実行によって更新された永続性データなど。例えばデータベース、パッケージングシステムのメタデータなど。
/var/lock
ロック(Lock)ファイル群。使用中リソースを保持するファイル。
/var/log
ログ(Log)ファイル。各種ログ。
/var/mail
ユーザーのメールボックス(mail-box)
/var/run
最近のブート以降の走行中(runing)システムに関する情報。例えば現在ログイン中のユーザー、走行中のデーモンなど。FHS3.0 では /var/run は /run に置き換えられる。システムは後方互換性のために /var/run を提供するか、/var/run から /run へのシンボリックリンクを提供しなければならない[36]
/var/spool
処理待ち状態のタスクのスプール(spool)。例えばプリントキュー、未読メールなど。
/var/spool/mail
互換のために残された、かつてのユーザーのメールボックス(mail-box)の場所。
/var/tmp
一時ファイル置場 (Temporary files)。 /tmp と異なり、再起動しても内容が失われることはない。[37]

ただし一定期間経過し未使用な状態であるとOSの設定によりファイルが消える。[28]

閉じる

脚注

関連項目

外部リンク

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.