1 - Linux Unix Filesystem Hierarchy and Structure
1 - Linux Unix Filesystem Hierarchy and Structure
Everything in Linux can be reduced to a file. Partitions are associated with files such as /dev/hda1. Hardware
components are associated with files such as /dev/modem. Detected devices are documented as files in the /proc
directory. The Filesystem Hierarchy Standard (FHS) is the official way to organize files in Unix and Linux directories.
Several major directories are associated with all modern Unix/Linux operating systems. These directories organize
user files, drivers, kernels, logs, programs, utilities, and more into different categories. The standardization of the
FHS makes it easier for users of other Unix-based operating systems to understand the basics of Linux. Every FHS
starts with theroot directory, also known by its label, the single forward slash (/). All of the other directories shown in
Table are subdirectories of the root directory. Unless they are mounted separately, you can also find their files on
the samepartition as the root directory.
The root directory, the top-level directory in the FHS. All other directories are subdirectories of root,
/ which is always mounted on some partition. All directories that are not mounted on a
separate partition are included in the root directory's partition.
Essential command line utilities. Should not be mounted separately; otherwise, it could be difficult to get
/bin
to these utilities when using a rescue disk.
Includes Linux start-up files, including the Linux kernel. Can be small; 16MB is usually adequate for a
/boot typical modular kernel. If you use multiple kernels, such as for testing a kernel upgrade, increase the
size of this partition accordingly.
Hardware and software device drivers for everything from floppy drives to terminals. Do not mount this
/dev
directory on a separate partition.
Program libraries for the kernel and various command line utilities. Do not mount this directory on a
/lib
separate partition.
/mnt The mount point for removable media, including floppy drives, CD-ROMs, and Zip disks.
Currently running kernel-related processes, including device assignments such as IRQ ports, I/O
/proc
addresses, and DMA channels.
/tmp Temporary files. By default, Red Hat Linux deletes all files in this directory periodically.
/usr Small programs accessible to all users. Includes many system administration commands and utilities.
Directories
Files
Granted, you can have normal files, hidden files, shortcut files, word processing files, executable files, and so on.
However, these are all simple variations of the basic file when working with Windows.
With Linux, however, there are a variety of different file types used by the file system. These include the file types
shown in Table
These files are similar to those used by the file systems of other operating systems—for example,
Regular files
executable files, OpenOffice.org files, images, text configuration files, etc.
Links These files are pointers that point to other files in the file system.
FIFO stands for First In First Out. These are special files used to move data from one running
process on the system to another. A FIFO file is basically a queue where the first chunk of data
FIFOs
added to the queue is the first chunk of data removed from the queue. Data can only move in one
direction through a FIFO.
Sockets are similar to FIFOs in that they are used to transfer information between sockets. With a
Sockets
socket, however, data can move bi-directionally.
Some of the Configuration Files in /etc Directory that you should remember
File Function
/etc/fstab Lists the partitions and file systems that will be automatically mounted when the system boots.
Contains configuration parameters for the GRUB bootloader (assuming it’s being used on the
/etc/grub.conf
system).
/etc/hosts Contains a list of hostname-to-IP address mappings the system can use to resolve hostnames.
A subdirectory that contains startup scripts for services installed on the system. On a Fedora
/etc/init.d/
or Red Hat system, these are located in /etc/rc.d/init.d.