拾い物のコンパス

まともに書いたメモ

Filesystem Hierarchy Standardを読む

Linuxに出会ってから10年ほど経つが標準文書を読んだことはなかった.
まずはファイルシステムについて規定されたFilesystem Hierarchy Standardを理解がてらまとめる.
適宜省略しているため必要に応じて原文を読んでください.

Linuxの標準について

Linuxの規定はLinux Standard Base(以後LSB)に記載されている.
目的: LinuxディストリLSBの目標は、Linuxディストリビューション間での互換性を向上させ、準拠システム上でのアプリケーションの動作を保証するよう標準規格を策定・振興することである。さらに、ソフトウェアベンダーがLinux向けに製品を移植したり開発する際の調整努力を助ける。(Wikipediaより)

最新は5(2020/05/17現在)Coreドキュメントは964ページある.
基本的なライブラリlibc関係とかよくしらなかったがそんな疑問もこれを読めばとっかかりとなりそう.

Filesystem Hierarchy Standard

ようやく本題.3.0(50 page)を読み進めていく.
Linuxの必要なファイル・ディレクトリ配置を記載した文書.
目的はアプリケーション,管理ツールなどの互換性を図るもの.

文書の目的(Chapter1 Introduction Purpose)

ユーザ・ソフトがインストールされているファイルやディレクトリの場所を予想できるようにすること.

Root Filesystem(Chapter3)

root filesystemはboot/restore/recover/repairのために必要なものを格納する.

必要なディレクトリ一覧

ディレクトリ名 詳細
bin 必須コマンドバイナリ置き場
boot ブートローダ用の静的ファイル
dev バイスファイル
etc ホスト特有の設定ファイル
lib 必須共有ライブラリとカーネルモジュール
media removable meidaのマウントポイント
mnt 一時的なファイルシステムのマウントポイント
opt Add-onアプリ置き場
run running processesのデータ関連
sbin 必須システムバイナリ
srv システムから提供されるサービスのデータ
tmp 一時ファイル
usr Secondary Hierarchy
var Variable data
以下,オプション
home ユーザ用ホームディレクト
lib 必須な共有ライブラリの代替
root root用のホームディレクト

bootableなLinuxを作ろうと思ったら,最低限上記のディレクトリを揃える必要があるということか.

ここでは省略するが,各ディレクトリの詳細も記載されている.
/usr/share/colorとか初耳なディレクトリもある.

/var Hierarchy(Chapter5)

可変データファイル置き場. スプールディレクトリ,ファイル,管理ログも含まれる.

必要なディレクトリ一覧

ディレクトリ名 詳細
cache キャッシュデータ
lib 状態情報
local /usr/localの情報
lock lock files
log ログファイル関連
opt /opt用の情報
run running processes関連のデータ
spool アプリのspool data(syorimati data)
tmp 一時ファイル
以下,オプション
account process accounting logs
crach system crash dumps
games variable game data
mail user mailbox files
yp Network Information Service database files

/var/lockは複数のアプリで共有されているデバイスやリソースを管理するために使われる.

所感

文書によっては2770ページという頭が真っ白になりそうな量もあるが,調べたい領域を絞れば数十ページで済む.
読み始めてしまえばわかりやすい英語でスラスラ読めた.

今回読んだFHSには各ディレクトリ全てについて何に使うために存在するかが書かれている.
何度も繰り返し読みながら理解を進めていきたい.
spoolは処理待ちの一時ファイルを格納する場所初めて知ることもあってまだまだ勉強不足だと思い知った.
kernel開発者になる道は遠い. 一歩々々進んでいきたい.

参考

Linux Standard Baseとは

FHS本文

規定文書リンクサイト