FHS とは
FHS (Filesystem Hierarchy Standard) は Linux におけるファイルシステム内のレイアウトのデファクトスタンダードである。
ルートファイルシステムはディレクトリ階層の中で最上位に位置し、そこに含まれていなければいけないディレクトリは /bin、/sbin、/etc、/dev、/lib となる。
/bin
基本的なコマンドが配置される。このディレクトリにあるコマンドは一般ユーザーでも実行可能。
$ ls /bin/
arch cgexec cpio dbus-uuidgen ed gawk kbd_mode lsblk mountpoint ps rpm sort tracepath6 unlink
awk cgget cut dd egrep grep keyctl lscgroup mv pwd rvi stty traceroute usleep
basename cgset dash df env gtar kill lssubsys nano raw rview su traceroute6 vi
bash cgsnapshot date dmesg ex gunzip link mkdir netstat readlink sed sync true view
cat chgrp dbus-cleanup-sockets dnsdomainname false gzip ln mknod nice red setfont tar umount ypdomainname
cgclassify chmod dbus-daemon domainname fgrep hostname loadkeys mktemp nisdomainname rm setserial taskset uname zcat
cgcreate chown dbus-monitor dumpkeys find ipcalc login more ping rmdir sh touch unicode_start
cgdelete cp dbus-send echo findmnt iptables-xml ls mount ping6 rnano sleep tracepath unicode_stop
/sbin
システム管理に必須のコマンドが配置される。
$ ls /sbin/
accton chkconfig ebsnvme-id getkey iptables lvmdump mkinitrd pvcreate routel sushell vgimport
addpart clock ec2ifdown grub iptables-restore lvmetad mkswap pvdisplay rpcbind swapoff vgimportclone
agetty consoletype ec2ifscan grubby iptables-save lvmpolld modinfo pvmove rpc.statd swapon vgmerge
arp cryptsetup ec2ifup grub-crypt iptunnel lvmsadc modprobe pvremove rrestore switch_root vgmknodes
arping ctrlaltdel ec2udev-vbd grub-install key.dns_resolver lvmsar mount.nfs pvresize rsyslogd sysctl vgreduce
audispd debugfs ec2udev-vcpu grub-md5-crypt killall5 lvreduce mount.nfs4 pvs rtmon tc vgremove
auditctl delpart ether-wake grub-terminfo kpartx lvremove nameif pvscan rtpr telinit vgrename
auditd depmod ethtool halt ldconfig lvrename netreport pwhistory_helper runlevel tune2fs vgs
augenrules dhclient faillock hwclock load_policy lvresize new-kernel-pkg quotacheck runuser udevadm vgscan
aureport dhclient-script fdisk ifcfg logsave lvs nologin quotaoff securetty udevd vgsplit
...
/etc
システムやアプリケーションの設定情報、スクリプトファイルなどが配置される。
/dev
ハードディスクや CD-ROM などのデバイスファイルが配置される。デバイスファイルは特殊ファイルであり、デバイスに応じたデバイスファイルが必要。
/lib
共有ライブラリやカーネルモジュールが配置される。とりわけ /bin /sbin にあるコマンドが必要とされるライブラリはここに配置される。
/media
DBD-ROM などのリムーバブルメディアのマウントポイントが配置される。
/mnt
一時的にマウントするファイルシステムのマウントポイントが配置される。
/opt
パッケージ管理の仕組みを使ってプログラムがインストールされるディレクトリ。ディストリビューションによっては配置されない。
/proc
カーネル内部の情報にアクセスするための仮想的なファイルシステム。実際にはディスク上には存在しない。
/root
スーパーユーザー root のホームディレクトリ。/home ファイルシステムがマウントできなくなってもメンテナンスができるように /home とは別になっている。
/boot
起動に必要な設定やカーネルイメージが配置される。起動時に BIOS の制限を受けないようにするため、ルートファイルシステムとは別に、ディスクの先頭付近に配置されることがある。
/home
ユーザーごとのホームディレクトリが配置される。独立したファイルシステムにすることにより、クォータを設定できたり、保守性を向上させたりできる。
/tmp
一時ファイルが配置される。全てのユーザーが読み書きできる。
/var
ログファイル、メールやプリンタのスプールなど、頻繁に書き換えられるファイルが配置される。
- /var/cache: man コマンドで表示するために整形したデータなど、一時的なキャッシュファイルが配置される。
- /var/lock: アプリケーションが排他制御に使うためのロックファイルが配置される。
- /var/log: ログファイルが書き出される。
- /var/run: システムの状態を示すファイルが配置される。PID ファイルなど。
- /var/spool: 印刷待ちのデータや予約されたジョブなど、処理待ちデータが配置される。
/usr
コマンドやユーティリティなどが配置される。
- /usr/bin: ユーザーが一般的に使うコマンドで、緊急時のシステム保守に必須ではないコマンドはここに配置される。
- /usr/sbin: システム管理コマンドで、緊急時のシステム保守に必須ではないコマンドはここに配置される。
- /usr/lib: プログラムに必要な共有ライブラリが配置される。
- /usr/local: ローカルシステムで必要とされるコマンドやライブラリ、ドキュメントが配置される。
- /usr/share: x86 や x86_64 といったシステムアーキテクチャに依存しないファイルが配置される。
- /usr/src: Linux のカーネルソースなどのソースコードが配置される