1.1.1 Filesystem Hierarchy Standard (FHS) Explained #
The Filesystem Hierarchy Standard (FHS) defines the directory structure in Linux, ensuring consistency across distributions. Below is a breakdown of key directories and their purposes:
1. /boot
#
-
Purpose: Contains bootloader files (e.g., GRUB), kernel (
vmlinuz
), and initramfs. -
Example Files:
-
/boot/vmlinuz-*
(Linux kernel) -
/boot/grub/
(GRUB configuration)
-
2. /proc
#
-
Purpose: A virtual filesystem providing process and kernel information as files.
-
Key Features:
-
/proc/cpuinfo
(CPU details) -
/proc/meminfo
(Memory usage) -
/proc/[PID]/
(Process-specific data)
-
3. /sys
#
-
Purpose: A virtual filesystem for interacting with kernel devices and drivers (part of
sysfs
). -
Used For:
-
Hardware detection (
/sys/class/
) -
Kernel parameter tuning (
/sys/module/
)
-
4. /var
#
-
Purpose: Stores variable data (logs, caches, spool files).
-
Subdirectories:
-
/var/log/
(System logs) -
/var/cache/
(Application cache) -
/var/spool/
(Print queues, mail)
-
5. /usr
#
-
Purpose: Contains user programs and read-only data (secondary hierarchy).
-
Key Subdirectories:
-
/usr/bin/
(User commands) -
/usr/lib/
(Libraries) -
/usr/local/
(Locally installed software)
-
6. /lib
#
-
Purpose: Stores essential shared libraries for
/bin
and/sbin
. -
Modern Systems: Often replaced by
/usr/lib
(due to merged/usr
).
7. /dev
#
-
Purpose: Contains device files (e.g., hard disks, terminals).
-
Examples:
-
/dev/sda
(First SATA disk) -
/dev/tty1
(Virtual terminal) -
/dev/null
(Null device)
-
8. /etc
#
-
Purpose: Holds system-wide configuration files.
-
Key Files:
-
/etc/passwd
(User accounts) -
/etc/fstab
(Filesystem mounts) -
/etc/ssh/sshd_config
(SSH settings)
-
9. /opt
#
-
Purpose: Optional third-party software (e.g., proprietary apps).
-
Example:
-
/opt/google/chrome/
(Manually installed Chrome)
-
10. /bin
#
-
Purpose: Essential user binaries (commands) for all users.
-
Examples:
ls
,cp
,bash
.
11. /sbin
#
-
Purpose: Essential system binaries (root-only tools).
-
Examples:
fdisk
,iptables
,reboot
.
12. /home
#
-
Purpose: Personal directories for regular users.
-
Example:
/home/username/
(User’s files and configs).
13. /media
#
-
Purpose: Automatic mount point for removable media (USB, CDs).
-
Example:
/media/usb-drive/
.
14. /mnt
#
-
Purpose: Temporary manual mount point for filesystems.
-
Example:
sudo mount /dev/sdb1 /mnt/data
.
15. /root
#
-
Purpose: Home directory for the root user (not
/home/root
).
16. /tmp
#
-
Purpose: Temporary files (cleared on reboot).
-
Permissions: Global read/write (
1777
sticky bit).
FHS Cheat Sheet #
Directory | Purpose |
---|---|
/boot |
Bootloader & kernel |
/proc |
Process/kernel info (virtual) |
/sys |
Kernel devices (virtual) |
/var |
Variable data (logs, caches) |
/usr |
User programs & libraries |
/etc |
Configuration files |
/dev |
Device files |
/home |
User home directories |
/tmp |
Temporary files |
Why FHS Matters #
-
Consistency: All Linux distros follow a similar structure.
-
Troubleshooting: Knowing where files live helps debug issues.
-
Scripting: Scripts can rely on standard paths.