Developed by | Linux Foundation |
---|---|
Initial release | February 14, 1994 |
Latest release | 2.3 / January 29, 2004 |
Website | www.linuxfoundation.org/collaborate/workgroups/lsb/fhs www.pathname.com/fhs/ (Historical) |
The Filesystem Hierarchy Standard (FHS) defines the main directories and their contents in Linux operating systems. For the most part, it is a formalization and extension of the traditional BSD filesystem hierarchy.
The FHS is maintained by the Linux Foundation, a non-profit organization consisting of major software and hardware vendors, such as HP, Red Hat, IBM and Dell.
The current version is 2.3, announced on January 29, 2004.[1]
Contents |
Most Linux distributions follow the FHS and declare it their own policy to maintain FHS compliance.[2][3][4][5]
When the FHS was created, other UNIX and Unix-like operating systems already had their own standards, notably the hier(7) description of file system layout[6] that has existed since the release of Version 7 Unix (in 1979), or the SunOS filesystem(7),[7] later Solaris filesystem(5).[8] [9]
Modern Linux distributions include a /sys
directory as a virtual filesystem (sysfs, comparable to /proc
, which is a procfs), which stores and allows modification of the devices connected to the system, whereas many traditional UNIX and Unix-like operating systems use /sys
as a symbolic link to the kernel source tree.
Some Linux systems such as GoboLinux and Syllable Server use a completely different approach from the FHS.
The process of developing a standard filesystem hierarchy began in August 1993 with an effort to restructure the file and directory structure of Linux. The FSSTND (Filesystem Standard), a filesystem hierarchy standard specific to the Linux operating system, was released on 14 February 1994. Subsequent revisions were released on 9 October 1994 and 28 March 1995.[10]
In early 1996, the goal of developing a more comprehensive version of FSSTND to address not only Linux, but other Unix-like systems was adopted with the help of members of the BSD development community. As a result, a concerted effort was made to focus on issues that were general to Unix-like systems. In recognition of this widening of scope, the name of the standard was changed to Filesystem Hierarchy Standard.
Meaning | |
---|---|
Red | Old Standard/Draft; not supported |
Yellow | Old Standard; still supported |
Green | Current Standard |
Blue | Future Draft |
Version | Release Date | Notes |
---|---|---|
v1.0 | 1994-02-14 | FSSTND[11] |
v1.1 | 1994-10-09 | FSSTND[12] |
v1.2 | 1995-03-28 | FSSTND[13] |
v2.0 | 1997-10-26 | FHS 2.0 is the direct successor for FSSTND 1.2. Name of the standard was changed to Filesystem Hierarchy Standard.[14][15][16] |
v2.1 | 2000-04-12 | FHS[17][18][19] |
v2.2 | 2001-05-23 | FHS[20] |
v2.3 | 2004-01-29 | FHS[21] |
v3.0 | TBA | FHS[22] |
In the FHS all files and directories appear under the root directory "/", even if they are stored on different physical devices. Note however that some of these directories may or may not be present on a Unix system depending on whether certain subsystems, such as the X Window System, are installed.
The majority of these directories exist in all UNIX operating systems and are generally used in much the same way; however, the descriptions here are those used specifically for the FHS, and are not considered authoritative for platforms other than Linux.
Directory | Description |
---|---|
/ | Primary hierarchy root and root directory of the entire file system hierarchy. |
/bin/ | Essential command binaries that need to be available in single user mode; for all users, e.g., cat, ls, cp. |
/boot/ | Boot loader files, e.g., kernels, initrd; often a separate partition[23] |
/dev/ | Essential devices, e.g., /dev/null. |
/etc/ | Host-specific system-wide configuration files There has been controversy over the meaning of the name itself. In early versions of the UNIX Implementation Document from Bell labs, /etc is referred to as the etcetera directory,[24] as this directory historically held everything that did not belong elsewhere (however, the FHS restricts /etc to static configuration files and may not contain binaries).[25] Since the publication of early documentation, the directory name has been re-designated in various ways. Recent interpretations include Backronyms such as "Editable Text Configuration" or "Extended Tool Chest".[26] |
|
Configuration files for /opt/. |
|
Configuration files for the X Window System, version 11. |
|
Configuration files for SGML. |
|
Configuration files for XML. |
/home/ | Users' home directories, containing saved files, personal settings, etc.; often a separate partition. |
/lib/ | Libraries essential for the binaries in /bin/ and /sbin/. |
/media/ | Mount points for removable media such as CD-ROMs (appeared in FHS-2.3). |
/mnt/ | Temporarily mounted filesystems. |
/opt/ | Optional application software packages.[27] |
/proc/ | Virtual filesystem documenting kernel and process status as text files, e.g., uptime, network. In Linux, corresponds to a Procfs mount. |
/root/ | Home directory for the root user. |
/sbin/ | Essential system binaries, e.g., init, ip, mount. |
/srv/ | Site-specific data which is served by the system. |
/tmp/ | Temporary files (see also /var/tmp). Often not preserved between system reboots. |
/usr/ | Secondary hierarchy for read-only user data; contains the majority of (multi-)user utilities and applications.[28] |
|
Non-essential command binaries (not needed in single user mode); for all users. |
|
Standard include files. |
|
Libraries for the binaries in /usr/bin/ and /usr/sbin/. |
|
Non-essential system binaries, e.g., daemons for various network-services. |
|
Architecture-independent (shared) data. |
|
Source code, e.g., the kernel source code with its header files. |
|
X Window System, Version 11, Release 6. |
|
Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin/, lib/, share/.[29] |
/var/ | Variable files—files whose content is expected to continually change during normal operation of the system—such as logs, spool files, and temporary e-mail files. Sometimes a separate partition. |
|
Application cache data. Such data is locally generated as a result of time-consuming I/O or calculation. The application must be able to regenerate or restore the data. The cached files can be deleted without data loss |
|
State information. Persistent data modified by programs as they run, e.g., databases, packaging system metadata, etc. |
|
Lock files. Files keeping track of resources currently in use. |
|
Log files. Various logs. |
|
Users' mailboxes. |
|
Information about the running system since last boot, e.g., currently logged-in users and running daemons. |
|
Spool for tasks waiting to be processed, e.g., print queues and unread mail. |
|
Deprecated location for users' mailboxes. |
|
Temporary files to be preserved between reboots. |