Filesystem Hierarchy Standard


























Filesystem Hierarchy Standard
Developed by Linux Foundation
Initial release 14 February 1994; 24 years ago (1994-02-14)
Latest release
3.0
(3 June 2015; 3 years ago (2015-06-03))
Website
Official website
Official website (Historical)

The Filesystem Hierarchy Standard (FHS) defines the directory structure and directory contents in Linux distributions.[1] It is maintained by the Linux Foundation. The latest version is 3.0, released on 3 June 2015.[2]




Contents






  • 1 Directory structure


  • 2 FHS compliance


  • 3 History


    • 3.1 Release history




  • 4 See also


  • 5 References


  • 6 External links





Directory structure


In the FHS, all files and directories appear under the root directory /, even if they are stored on different physical or virtual devices. Some of these directories only exist on a particular system if certain subsystems, such as the X Window System, are installed.


Most of these directories exist in all Unix-like 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.

/dev


device files, e.g., /dev/null, /dev/disk0, /dev/sda1, /dev/tty, /dev/random.

/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,[3] 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).[4] Since the publication of early documentation, the directory name has been re-explained in various ways. Recent interpretations include backronyms such as "Editable Text Configuration" or "Extended Tool Chest".[5]



/etc/opt

Configuration files for add-on packages that are stored in /opt.

/etc/sgml

Configuration files, such as catalogs, for software that processes SGML.

/etc/X11

Configuration files for the X Window System, version 11.

/etc/xml

Configuration files, such as catalogs, for software that processes XML.

/home

Users' home directories, containing saved files, personal settings, etc.

/lib


Libraries essential for the binaries in /bin and /sbin.

/lib<qual>

Alternative format essential libraries. Such directories are optional, but if they exist, they have some requirements.

/media

Mount points for removable media such as CD-ROMs (appeared in FHS-2.3 in 2004).

/mnt

Temporarily mounted filesystems.

/opt

Optional application software packages.[6]

/proc

Virtual filesystem providing process and kernel information as files. In Linux, corresponds to a procfs mount. Generally automatically generated and populated by the system, on the fly.

/root


Home directory for the root user.

/run

Run-time variable data: Information about the running system since last boot, e.g., currently logged-in users and running daemons. Files under this directory must be either removed or truncated at the beginning of the boot process; but this is not necessary on systems that provide this directory as a temporary filesystem (tmpfs).

/sbin

Essential system binaries, e.g., fsck, init, route.

/srv

Site-specific data served by this system, such as data and scripts for web servers, data offered by FTP servers, and repositories for version control systems (appeared in FHS-2.3 in 2004).

/sys

Contains information about devices, drivers, and some kernel features.[7]

/tmp

Temporary files (see also /var/tmp). Often not preserved between system reboots, and may be severely size restricted.

/usr


Secondary hierarchy for read-only user data; contains the majority of (multi-)user utilities and applications.[8]

/usr/bin

Non-essential command binaries (not needed in single user mode); for all users.

/usr/include

Standard include files.

/usr/lib


Libraries for the binaries in /usr/bin and /usr/sbin.

/usr/lib<qual>

Alternative format libraries, e.g. /usr/lib32 for 32-bit libraries on a 64-bit machine (optional).

/usr/local


Tertiary hierarchy for local data, specific to this host. Typically has further subdirectories, e.g., bin, lib, share.[9]

/usr/sbin

Non-essential system binaries, e.g., daemons for various network-services.

/usr/share

Architecture-independent (shared) data.

/usr/src


Source code, e.g., the kernel source code with its header files.

/usr/X11R6


X Window System, Version 11, Release 6 (up to FHS-2.3, optional).

/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.

/var/cache

Application cache data. Such data are 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 loss of data.

/var/lib

State information. Persistent data modified by programs as they run, e.g., databases, packaging system metadata, etc.

/var/lock

Lock files. Files keeping track of resources currently in use.

/var/log

Log files. Various logs.

/var/mail

Mailbox files. In some distributions, these files may be located in the deprecated /var/spool/mail.

/var/opt

Variable data from add-on packages that are stored in /opt.

/var/run

Run-time variable data. This directory contains system information data describing the system since it was booted.[10]

In FHS 3.0, /var/run is replaced by /run; a system should either continue to provide a /var/run directory, or provide a symbolic link from /var/run to /run, for backwards compatibility.[11]



/var/spool


Spool for tasks waiting to be processed, e.g., print queues and outgoing mail queue.

/var/spool/mail


Deprecated location for users' mailboxes.[12]

/var/tmp

Temporary files to be preserved between reboots.


FHS compliance


Most Linux distributions follow the Filesystem Hierarchy Standard and declare it their own policy to maintain FHS compliance.[13][14][15][16]GoboLinux[17] and NixOS[18] provide examples of intentionally non-compliant filesystem implementations.


Some distributions generally follow the standard but deviate from it in some areas. Common deviations include:



  • 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,[19] whereas many traditional Unix-like operating systems use /sys as a symbolic link to the kernel source tree.[20]

  • Many modern Unix-like systems (like FreeBSD via its ports system) install third party packages into /usr/local while keeping code considered part of the operating system in /usr.

  • Some Linux distributions no longer differentiate between /lib versus /usr/lib and have /lib symlinked to /usr/lib.[21]

  • Some Linux distributions no longer differentiate between /bin versus /usr/bin and /sbin versus /usr/sbin. They may symlink /bin to /usr/bin and /sbin to /usr/sbin. Other distributions choose to consolidate all four, symlinking them to /usr/bin.[22]


Modern Linux distributions include a /run directory as a temporary filesystem (tmpfs) which stores volatile runtime data, following the FHS version 3.0. According to the FHS version 2.3, such data were stored in /var/run but this was a problem in some cases because this directory is not always available at early boot. As a result, these programs have had to resort to trickery, such as using /dev/.udev, /dev/.mdadm, /dev/.systemd or /dev/.mount directories, even though the device directory isn't intended for such data.[23] Among other advantages, this makes the system easier to use normally with the root filesystem mounted read-only.
For example, below are the changes Debian made in its 2013 Wheezy release:[24]




  • /dev/.*/run/*


  • /dev/shm/run/shm


  • /dev/shm/*/run/*


  • /etc/* (writeable files) → /run/*


  • /lib/init/rw/run


  • /var/lock/run/lock


  • /var/run/run


  • /tmp/run/tmp



History


FHS was created as the FSSTND (short for "Filesystem Standard"[25]), largely based on similar standards for other Unix-like operating systems. Notable examples are these: the hier(7) description of file system layout,[26] which has existed since the release of Version 7 Unix (in 1979); the SunOS filesystem(7)[27] and its successor, the Solaris filesystem(5).[28][29]



Release history

















































Version
Release Date
Notes

Old version, no longer supported: 1.0
1994-02-14
FSSTND[30]

Old version, no longer supported: 1.1
1994-10-09
FSSTND[31]

Old version, no longer supported: 1.2
1995-03-28
FSSTND[32]

Old version, no longer supported: 2.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.[33][34][35]

Old version, no longer supported: 2.1
2000-04-12
FHS[36][37][38]

Old version, no longer supported: 2.2
2001-05-23
FHS[39]

Older version, yet still supported: 2.3
2004-01-29
FHS[40]

Current stable version: 3.0
2015-05-18
FHS[41]


Legend:

Old version

Older version, still supported

Latest version

Latest preview version

Future release





See also



  • Unix directory structure


  • Intel Binary Compatibility Standard (iBCS)


  • hier(7) – Linux Programmer's Manual – Overview, Conventions and Miscellanea



References





  1. ^ "FilesystemHierarchyStandard - Debian Wiki". wiki.debian.org. Retrieved 2016-07-06..mw-parser-output cite.citation{font-style:inherit}.mw-parser-output .citation q{quotes:"""""""'""'"}.mw-parser-output .citation .cs1-lock-free a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/6/65/Lock-green.svg/9px-Lock-green.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-limited a,.mw-parser-output .citation .cs1-lock-registration a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/d/d6/Lock-gray-alt-2.svg/9px-Lock-gray-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .citation .cs1-lock-subscription a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/a/aa/Lock-red-alt-2.svg/9px-Lock-red-alt-2.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration{color:#555}.mw-parser-output .cs1-subscription span,.mw-parser-output .cs1-registration span{border-bottom:1px dotted;cursor:help}.mw-parser-output .cs1-ws-icon a{background:url("//upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/12px-Wikisource-logo.svg.png")no-repeat;background-position:right .1em center}.mw-parser-output code.cs1-code{color:inherit;background:inherit;border:inherit;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;font-size:100%}.mw-parser-output .cs1-visible-error{font-size:100%}.mw-parser-output .cs1-maint{display:none;color:#33aa33;margin-left:0.3em}.mw-parser-output .cs1-subscription,.mw-parser-output .cs1-registration,.mw-parser-output .cs1-format{font-size:95%}.mw-parser-output .cs1-kern-left,.mw-parser-output .cs1-kern-wl-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right,.mw-parser-output .cs1-kern-wl-right{padding-right:0.2em}


  2. ^ "FHS 3.0 Released". June 3, 2015.


  3. ^ J. DeFelicc (1972-03-17). "E.0". Preliminary Release of UNIX Implementation Document (PDF). p. 8. IMO.1-1.


  4. ^ "/etc : Host-specific system configuration". Filesystem Hierarchy Standard. Retrieved 18 February 2016.


  5. ^ Define - /etc?, Posted by Cliff, 3 March 2007 - Slashdot


  6. ^ "/opt : Add-on application software packages". Filesystem Hierarchy Standard. Retrieved 18 February 2016.


  7. ^ "/sys : Kernel and system information virtual filesystem". Filesystem Hierarchy Standard. Retrieved 4 June 2017.


  8. ^ Should be shareable and read-only, cf. http://www.pathname.com/fhs/pub/fhs-2.3.html.


  9. ^ Historically and strictly according to the standard, /usr/local is for data that must be stored on the local host (as opposed to /usr, which may be mounted across a network). Most of the time /usr/local is used for installing software/data that are not part of the standard operating system distribution (in such case, /usr would only contain software/data that are part of the standard operating system distribution). It is possible that the FHS standard may in the future be changed to reflect this de facto convention.


  10. ^ "Filesystem Hierarchy Standard". FHS 2.3. Section /var/run : Run-time variable data.


  11. ^ "5.13. /var/run : Run-time variable data". FHS 3.0.


  12. ^ "File System Standard" (PDF). Linux Foundation. p. 5.11.1.


  13. ^ Red Hat reference guide on file system structure


  14. ^ SuSE Linux Enterprise Server Administration, Novell authorized courseware, by Jason W. Eckert, Novell; Course Technology, 2006;
    ISBN 1-4188-3731-8,
    ISBN 978-1-4188-3731-0



  15. ^ Debian policy on FHS compliance


  16. ^ Ubuntu Linux File system Tree Overview - Community Ubuntu Documentation


  17. ^ Hisham Muhammad (9 May 2003). "The Unix tree rethought: an introduction to GoboLinux". Retrieved 2016-10-04.


  18. ^ Dolstra, E. and Löh, A. "NixOS: A Purely Functional Linux Distribution." In ICFP 2008: 13th ACM SIGPLAN International Conference on Functional Programming, pages 367–378, Victoria, British Columbia, Canada. September 2008.


  19. ^ "5.3 About the /sys Virtual File System". docs.oracle.com. Oracle. Archived from the original on 8 July 2016. Retrieved 8 July 2016.


  20. ^ Lehey, Greg (May 2003). The Complete FreeBSD: Documentation from the Source (Fourth ed.). O'Reilly Media, Incorporated. pp. 188, 609. ISBN 9780596005160. Retrieved 8 July 2016.


  21. ^ Allan McRae. "Arch Linux - News: The /lib directory becomes a symlink". archlinux.org. Archived from the original on 9 September 2014. Retrieved 28 December 2014.


  22. ^ Allan McRae. "Arch Linux - News: Binaries move to /usr/bin requiring update intervention". archlinux.org. Archived from the original on 10 September 2014. Retrieved 28 December 2014.


  23. ^ https://lwn.net/Articles/436012/


  24. ^ http://wiki.debian.org/ReleaseGoals/RunDirectory


  25. ^ "FSSTND FAQ page". Retrieved 2016-05-10.


  26. ^ hier(7) – FreeBSD Miscellaneous Information Manual


  27. ^ SunOS 4.1.3 manual page for filesystem(7), dated 10 January 1988 (from the FreeBSD Man Pages library)


  28. ^ filesystem(5) – Solaris 10 Standards, Environments and Macros Reference Manual


  29. ^ "filesystem man page - Solaris 10 11/06 Man Pages". Retrieved 2011-10-15.


  30. ^ "Index of /pub/Linux/docs/fsstnd/old/fsstnd-1.0/". Ibiblio.org. Retrieved 2012-10-16.


  31. ^ "Index of /pub/Linux/docs/fsstnd/old/fsstnd-1.1/". Ibiblio.org. Retrieved 2012-10-16.


  32. ^ "Index of /pub/Linux/docs/fsstnd/old/". Ibiblio.org. Retrieved 2012-10-16.


  33. ^ "FHS 2.0 Announcement". Pathname.com. Retrieved 2012-10-16.


  34. ^ Quinlan, Daniel (14 March 2012) [1997], "FHS 2.0 Announcement", BSD, Linux, Unix and The Internet - Research by Kenneth R. Saborio, San Jose, Costa Rica: Kenneth R. Saborio, retrieved 18 February 2016


  35. ^ "Index of /pub/Linux/docs/fsstnd/". Ibiblio.org. Retrieved 2012-10-16.


  36. ^ "FHS 2.1 Announcement". Pathname.com. Retrieved 2012-10-16.


  37. ^ "FHS 2.1 is released". Lists.debian.org. 2000-04-13. Retrieved 2012-10-16.


  38. ^ Quinlan, Daniel (12 April 2000). "Filesystem Hierarchy Standard — Version 2.1, Filesystem Hierarchy Standard Group" (PDF). Acadia Linux Tutorials. Wolfville, Nova Scotia, Canada: Jodrey School of Computer Science, Acadia University. Retrieved 18 October 2012.


  39. ^ Russell, Rusty; Quinlan, Daniel, eds. (23 May 2001). "Filesystem Hierarchy Standard — Version 2.2 final Filesystem Hierarchy Standard Group" (PDF). Filesystem Hierarchy Standard. Retrieved 18 February 2016.


  40. ^ Russell, Rusty; Quinlan, Daniel; Yeoh, Christopher, eds. (28 January 2004). "Filesystem Hierarchy Standard - Filesystem Hierarchy Standard Group" (PDF). Retrieved 2014-11-29.


  41. ^ Yeoh, Christopher; Russell, Rusty; Quinlan, Daniel, eds. (19 March 2015). "Filesystem Hierarchy Standard" (PDF). The Linux Foundation. Retrieved 2015-05-20.




External links




  • Official Home of the Filesystem Hierarchy Standard (FHS) at The Linux Foundation
    • Full specification texts



  • objectroot – a proposal for a new filesystem hierarchy, based on object-oriented design principles

  • The Dotted Standard Filename Hierarchy, yet another very different hierarchy (used in cLIeNUX) (mirror)












Popular posts from this blog

Shashamane

Carrot

Deprivation index