Filesystem Hierarchy Standard

6.1 Linux

This is the annex for the Linux operating system.

6.1.1 / : Root directory

On Linux systems, if the kernel is located in /, we recommend using the names vmlinux or vmlinuz, which have been used in recent Linux kernel source packages.

6.1.2 /bin : Essential user command binaries (for use by all users)

Linux systems which require them place these additional files into /bin.

6.1.3 /dev : Devices and special files

All devices and special files in /dev should adhere to the Linux Allocated Devices document, which is available with the Linux kernel source. It is maintained by H. Peter Anvin <address omitted>.

Symbolic links in /dev should not be distributed with Linux systems except as provided in the Linux Allocated Devices document.


The requirement not to make symlinks promiscuously is made because local setups will often differ from that on the distributor's development machine. Also, if a distribution install script configures the symbolic links at install time, these symlinks will often not get updated if local changes are made in hardware. When used responsibly at a local level, however, they can be put to good use.

6.1.4 /etc : Host-specific system configuration

Linux systems which require them place these additional files into /etc.

6.1.5 /proc : Kernel and process information virtual filesystem

The proc filesystem is the de-facto standard Linux method for handling process and system information, rather than /dev/kmem and other similar methods. We strongly encourage this for the storage and retrieval of process information as well as other kernel and memory information.

6.1.6 /sbin : Essential system binaries

Linux systems place these additional files into /sbin.

Optional files for /sbin:

6.1.7 /usr/include : Header files included by C programs

These symbolic links are required if a C or C++ compiler is installed and only for systems not based on glibc.

    /usr/include/asm -> /usr/src/linux/include/asm-<arch>
    /usr/include/linux -> /usr/src/linux/include/linux

6.1.8 /usr/src : Source code

For systems based on glibc, there are no specific guidelines for this directory. For systems based on Linux libc revisions prior to glibc, the following guidelines and rationale apply:

The only source code that should be placed in a specific location is the Linux kernel source code. It is located in /usr/src/linux.

If a C or C++ compiler is installed, but the complete Linux kernel source code is not installed, then the include files from the kernel source code must be located in these directories:


<arch> is the name of the system architecture.

Note: /usr/src/linux may be a symbolic link to a kernel source code tree.


It is important that the kernel include files be located in /usr/src/linux and not in /usr/include so there are no problems when system administrators upgrade their kernel version for the first time.

6.1.9 /var/spool/cron : cron and at jobs

This directory contains the variable data for the cron and at programs.

Previous: Operating System Specific Annex
Next: Appendix
Up: Table of Contents

Translated by troff2html v1.5 on 29 March 2002 by Daniel Quinlan