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
/binand/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 (
1777sticky 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.