FSSTND and FHS: How do They Compare?
- Anne Shroble
- Apr 17, 2016
- 3 min read
Release History

Let’s compare The Filesystem Standard (FSSTND) FHS of old with the Filesystem Hierarchy Standard (FHS) of today. Linux draws heavily on Unix’s long history which has led to many splits and variants, starting with the Berkely Standard Distribution (BSD). This initially was a set of patches and extensions to AT&T’s original Unix code. Files were not located in standard locations within the directory hierarchy. These scattered files made it difficult to document and maintain the system, thus making it difficult for anyone to write software for the distribution system. As a result of these schisms, early Linux distributions didn’t always follow identical patterns. This disruption amounst the Linux community forced the development of the Filesystem Standard in 1994.
The FSSTND standardized several features, such as the following:
Standardized the programs which reside in /bin and /user/bin. Any differences on this score caused problems when scripts refered to files in one location or another.
The standard specified that executable files shouldn’t reside in /etc, as had previously been the case.
It removed changeable files from the /usr directory tree, enabling it too be mounted read-only which was a useful security measure.
There have been three major versions: 1.0, 1.1, and 1.2. The FSSTND began to rein in some of the choas, however limitations were becoming apparent and by 1995 the Linux community developed the Filesystem Hierarchy Standard of today.
The FSH comes in numbered versions such as v2.3, it is not updated very often, however, it is advisable to check for FHS modifications at the official web page at: www.pathname.com/fhs/. FHS has been recently incorporated in LSB (Linux Standard Base) which combined with Open Source Development Labs which formed the Linux Foundation. The Linux Foundation has workgroups which can be found at URL, www.linuxfoundation.org./.
The important distinctions made by the FHS are:
Shareable files such as user data files and program binary files may be reasonably shared between computers. These files are normally shared through an NFS server. Unshareable files are files which contain system-specific information, and one is not likely to share this between computers.
This distinction is between static files and variable files. Static files are files which are changed through direct intervention by the system administrator such as program executables. Variable files are composed of users, automated scripts, and servers; for instance, user’s home directories and mail queues. Directories are isolated into a 2 x 2 cell of shareable/unshareable x static/variable matrix.
FHS compliance:
Most Linux distributions follow the Filesystem Hierarchy Standard and declare it their own policy to maintain FHS compliance. GoboLinux and NixOS provide examples of intentionally non-compliant filesystem implementations.
Some distributions that generally follow the standard 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, whereas many traditional UNIX and Unix-like operating systems use /sys as a symbolic link to the kernel source tree.
Many modern UNIX 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 /libsymlinked to /usr/lib.[17]
Some Linux distributions no longer differentiate between /bin versus /usr/bin and /sbin versus/usr/sbin. They symlink /bin to /usr/bin and /sbin to /usr/sbin. And /usr/sbin may get symlinked to /usr/bin.
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. 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:
/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
Resources:
"Filesystem Hierarchy Standard." Wikipedia. Wikimedia Foundation. Web. 17 Apr. 2016.
(Release history and Compliance)
Sobell, Mark G. A Practical Guide to Ubuntu Linux. Upper Saddle River, NJ: Prentice Hall, 2009. Print. (comparison info)
Bresnahan, Christine, and Richard Blum. CompTIA Linux Powered by Linux Professional Institute Study Guide: Exams LX0-103 and Exam LX0-104. Print.
Recent Posts
See AllIt's been a long time since visiting this site. I've been searching for employment, haven't found the appropriate match for me. I've...
Hey, hey, hey, look who’s back! Harry N. Hacker here. The boss and Anne are on vacation this week, so I’m going to tell you about my...
Good afternoon to all you happy blog followers. Today we are going to investigate a software package called Moosoft’s The Cleaner. The...
Comentarios