KEMBAR78
Linux Directory Structure | PDF
Linux Directory Structure

        Kevin B. O’Brien
 Washtenaw Linux Users Group
    http://www.lugwash.org
General Notes
●   Linux derives from Unix and is designed
    to be multi-user
●   This explains some otherwise puzzling
    choices
●   This may have something to do with
    Fedora proposing to change this
    Directory Structure
Drives 1
●   Linux derives from Unix
●   Different from Windows
●   Windows starts with drives, which are
    explicit
    –   C:
    –   D:
Drives 2
●   Linux does not make drives explicit.
●   You can have one physical drive, several
    physical drives, partition the drives into multiple
    partitions, and normally you won’t be aware of
    it.
●   In a file manager, you won’t see drives, just
    directories
●   But if you look in fstab, you will see things like
    hda1, hda2, sda1, sda2. These are logical
    drives (either physical or from partitioning)
Root
●   In Windows, every drive has its own root
    –   C: is the root of the C drive
●   In Linux, there is only one root, no matter
    how many drives you may have
    –   In Linux, / is the root
●   Root is ambiguous in one respect, since it
    can refer to the top of the file structure,
    and is also the name of the Administrator-
    type account in Linux.
Root 2
●   For our purposes, we will refer to root as
    the top of the file structure in this
    presentation.
Comparison
       Linux                     Windows


         /home                       C:

                    Disk
       /home/data   Partitions       D:
   /
root
           /var                      E:

          •/boot
           •/bin                     F:
           •etc.
Watch out for...
●   Windows uses a backslash for
    everything
●   Linux uses a forward slash for
    everything
●   In Windows, the logical drive (e.g. C:) is
    an important part of the directory
    structure
●   In Linux, logical drives don't mean
    much. You can even mount a separate
    physical drive under a directory that is
    on another drive.
Watch out for 2
●   In Windows, case does not matter. The
    C:Windows directory is the same as
    the
    c:windows directory.
●   In Linux, everything is case sensitive.
    The convention in Linux is to use lower
    case for most things, but the important
    thing to remember is that /usr/bin is not
    the same thing as /USR/BIN.
Drives vs. directories
●   In Windows, drives are directories
●   In Linux, you can have several drives all
    under one overall directory, or nested
    one in another in the directory structure.
●   In Linux, you tell the file system where
    you want a drive to appear by where it
    is mounted. See fstab for more on this.
Where did this come from?
●   This started with a Linux effort in August,
    1993
●   In 1996 some BSD folks decided it should
    be expanded to all Unix-like systems
●   This resulted in the Filesystem Hierarchy
    Standard, which can be found at
    http://www.pathname.com/fhs/pub/fhs-
    2.3.html
Standard?
●   Of course, many distros vary from this to
    some degree, some (Gobo) reject it
    entirely, and MacOS tends to substitute
    more “readable” names, like Library in
    place of lib, etc.
●   Red Hat seems to be pretty faithful
    http://www.redhat.com/docs/manuals/linux/
    RHL-9-Manual/ref-guide/s1-filesystem-
    fhs.html
Standard? 2
●   Distros can vary, but so can programs
●   When you install a program, it may not
    follow the FHS in deciding where to
    place its files
●   So this presentation should be
    considered a guide to how things more-
    or-less ought to work, but YMMV
/
●   This is the symbol for the root of the file
    system in Linux
●   Every directory is “under” root,
    ultimately
●   This is not the same as the user “root”,
    which is the user with God-like powers
    over the system
●   The user “root” does have a directory,
    called /root
/bin
●   Contains many of the commands used on
    the command line
●   Examples include cat, chmod,dmesg, kill,
    ls, mkdir more, ps, pwd, sed, su
●   the above commands, and many others,
    must be in /bin to meet the standard.
●   Other commands can be optionally
    included, such as tar. gzip, netstat, and
    ping
/bin 2
●   There are other commands that are not in
    here
●   They are part of the shell (e.g. cd)
●   For most users, this will be bash, the
    Bourne-Again Shell
●   You can tell by looking at the man pages
●   Commands in /bin will have their own man
    page, commands in bash will have info in
    the bash man page
/boot
●   Contains files needed for boot
    –   kernel
    –   Grub menu (good to know if you are dual-
        booting)
    –   Lilo boot sector backups
●   Contains data that is used before the
    kernel starts executing user-mode
    programs
/dev
●   Kinda-sorta an equivalent to a mashup
    of the Device Manager and
    C:WindowsSystem in Windows
●   Contains a file describing every device,
    and these files can send data to each
    device
●   In Linux, everything is a file or a
    directory
●   We mean it. We really mean it.
/dev 2
●   hda1, hda2, etc. are partitions on the
    first physical IDE drive
●   sda1, sda2, etc. are partitions on the
    first physical SATA drive
●   /dev/cdrom is the optical drive
●   /dev/fd0 is the floppy drive, if you have
    one
●   /dev/dsp is the speaker device
Fun with /dev
●   Try this command out:
    cat /etc/lilo.conf > /dev/dsp
●   The sound you will hear is the sound of
    your /etc/lilo.conf file
●   If you don't have /etc/lilo.conf, substitute
    any other file you do have
●   So, /dev/dsp is the speaker, and the
    speaker is the file /dev/dsp.
More /dev fun
●   The most famous device in /dev is the
    ubiquitous /dev/null
●   Anything sent to this device disappears
    into a black hole, and reappears in
    another galaxy, much to the puzzlement
    of the Lizard people of Zorg in the
    CmfR!&v Galaxy.
/etc
●   Perhaps the most important to understand
●   No binaries can be here, per the standard
●   This is just for configuration files
●   Examples include /etc/inittab, /etc/fstab,
    /etc/passwd, /etc/hosts, /etc/x11,and
    /etc/opt
/etc 2
●   These files are generally text files and
    can be edited using any text editor:
    emacs or vi on the command line, or
    whatever graphical equivalent (e.g.
    gedit, kate) your desktop offers
/etc/inittab
●   Describes what takes place at bootup
●   Includes the runlevel of the system, and
    which processes should be run at each
    runlevel
●   Linux has seven runlevels, from 0-6
/etc/fstab
●   Automatically mounts filesystems
    across multiple drives or partitions, or
    even from remote systems
●   This is where you would place an entry
    if you added a hard drive
●   This file tells the system what drive to
    access, and where to mount it in your
    system
/etc/hosts
●   This is the famous hosts file, which
    matches up names with IP addresses
●   This is like level 1 DNS. The system
    looks here first.
●   This can be used to block sites by
    putting their URL in here and mapping it
    to 127.0.0.1. Great way to get rid of
    Double-Click.
/etc/passwd
●   This is the password file, but it contains
    more: user name, user password, user
    ID, group ID, home directory, and shell.
    It can optionally contain the user's “real
    name”
●   Each user is on its own line
●   Each user can select the shell they
    want to use (most use bash these days)
/etc/opt/
●   This is a directory for the configuration files
    for each system application you install.
    Each application gets its own subdirectory
    under /etc/opt/
●   System applications are not just for one
    user, but for anyone logged in to the
    system
●   This is not mandatory, so see the man
    pages or help for your application
/etc/x11
●   Configuration directory for x11, which is the
    display system for graphical interfaces in
    Linux
●   This can vary with different distros, so
    again you need to check
●   /etc/x11/xorg.conf is the configuration file
    that lets you specify the resolutions your
    monitor and graphics card can display, for
    instance
/home
●   This is where the home directories for
    all of the “ordinary” users are located.
●   The exception is root, which has its own
    home directory, /root/
●   Each user gets a directory with their
    user name: e.g. /home/baracko
●   This can contain configuration files for
    applications that are user-specific
User-specific Configurations
●   These files should be in the /home
    directory, and should begin with a “.”
    character (i.e. “dot files”)
●   If more than one, the files should go
    into a directory with a name that begins
    with the “.” character (i.e. “dot
    directory), and then the files should not
    begin with a “.”
/home Partition?
●   Your home directory is where you
    would place all of your documents,
    videos, MP3s, etc.
●   It can get fairly large
●   It is also the stuff you want to back up,
    and you don't want to lose
●   Putting it on its own partition, or even its
    own physical drive, is not a bad idea
Reinstalling
●   If you have a separate /home partition,
    you can reinstall (or do a clean
    upgrade) and still keep not only your
    data, but many of your file
    configurations
●   Examples are Firefox bookmarks,
    Thunderbird or Evolution e-mail settings
    and mail files, etc.
/lib
●   This is the location for shared library
    files that are used by system programs
●   Shared library files are equivalent to
    Windows' “*.dll” files
●   The files here are intended to be
    libraries for programs in /bin and /sbin,
    i.e. needed to boot the system and run
    the commands in the root file system
/lib 2
●   Also in this directory are kernel modules
●   Other library locations for other
    programs include /usr/lib and
    /usr/local/lib
●   Generally these correspond to where
    the binary is installed, i.e. a binary in
    /usr/bin would put a library in /usr/lib,
    and a binary in /usr/local/bin would put
    a library in usr/local/lib
/media, /mnt
●   This is one where there is no general
    agreement
●   Either directory can be a place to mount
    removable media (e.g. CD, USB drive,
    Floppy disk)
●   /mnt is the older way, and is still used for
    temporarily-mounted file systems
●   At one time, these devices were often
    mounted in the root directory, but that is
    less common today
/media, /mnt 2
●   Either directory is allowed by the standard
●   Most current distro versions will mount
    these devices automatically
●   When they are mounted, an entry will go in
    the directory
●   For USB devices, you want to safely
    unmount before removing. Current
    graphical file managers let you do so in the
    directory (right-click on the device).
/mnt vs. /etc/fstab
●   The distinction is temporary vs.
    permanent
●   A file system that will be permanently
    mounted should get an entry in fstab
●   A file system mounted temporarily will
    get an entry in /mnt when you mount it
●   Again, everything in Linux is a file or a
    directory. If you mount something on
    the command line, a file is created in
    /mnt.
/opt
●   Intended as a place for “optional”
    software, i.e. add-on packages that are
    not part of the default installation
●   Intended for use by sysadmins doing
    something locally, not for software
    developers creating packages
●   Treat this as something deprecated, but
    possibly still there.
/proc
●   Have we mentioned that everything in
    Linux is a file or a directory?
●   Any time a process is created in Linux,
    a corresponding file goes in here
●   Most users have no need to go here,
    but you're an adult, do what you want
●   Gosh, what would happen if you
    deleted a file here?
/root
●   Home directory for the root account
●   Normally, you don't want to be root, and
    you don't want to go here
●   Give yourself a user account, and use
    that for day-to-day stuff. It is much safer
    that way.
/sbin
●   Place for System binaries
●   One of three such directories
    –   /sbin
    –   /usr/sbin
    –   /usr/local/sbin
●   All three hold utilities used for system
    administration, and are intended for the
    root user
/sbin 2
●   /sbin should have those utilities
    essential for booting, restoring,
    recovering, and/or repairing the system
●   Programs used after /usr is known to be
    mounted (i.e. when there are no
    problems) go into /usr/sbin
●   Locally installed sysadmin programs go
    in /usr/local/sbin
/tmp
●   Guess what this one is?
●   Yes, temporary files are placed here
●   Assume that anything in this directory
    will be deleted whenever the system is
    booted
●   If you want to have your own temporary
    directory and not lose files at reboot,
    create one in your home directory,
    i.e. /home/username/temp
/usr
●   Lots of stuff in here
●   Back in the mists of prehistory, these
    were the user directories, equivalent to
    what are now /home directories
●   Now /usr is for shareable data
●   Not intended for software packages, in
    general
/usr/bin
●   Contains executable files for many
    Linux commands
●   These are commands that are not part
    of the core Linux operating system
●   They would go in /bin
●   Examples of commands in here: perl,
    python
/usr/include
●   General use include files, including
    header files, for C and C++
    programming languages
/usr/lib
●   Contains libraries for the C and C++
    programming languages
●   Object files, libraries, and internal files
    not intended to be executed directly by
    users or shell scripts
/usr/local
●   For use by System Administrator when
    installing software locally
●   Must not be over-written when system
    software is updated
●   Generally has same subdirectories
    as /usr
/usr/sbin
●   Non-essential standard system
    binaries, i.e. utilities
●   Essential utilities go in /sbin
/usr/share
●   For read-only architecture independent
    data files
●   Intended to be shared across platforms
    (e.g. i386, Alpha, PPC)
●   Must not change
●   If the contents are variable, go to /var
    e.g. a game file in /usr/share/games
    must be static. Game play logs go in
    /var/games.
/usr/share/man
●   Primary location for man pages for the
    system
/usr/src
●   Source code is placed here, for
    reference purposes only
●   This includes the source code for the
    Linux kernel
/var
●   This is for files that are expected to be
    updated and changed
●   This includes:
    –   mail directories
    –   print spool
    –   logs
    –   web sites
/var 2
●   Because these can be written to
    constantly, they can grow over time
●   On a server, you may want to put /var
    on its own partition to limit the growth
●   This can also prevent the /var directory
    from bringing down the server by using
    up all of the drive space.
/var/lock
●   Contains lock files
●   These files prevent two users (or two
    programs) from trying to access the
    same data at the same time
●   You may need to delete a lock file from
    time to time
/var/log
●   Contains the log files generated by
    programs
Fedora Proposal
●   You may have noticed a lot of /bin
    directories in this strcuture
●   So did Fedora developers Harald Hoyer
    and Kay Sievers
●   Their proposal is called /usr merge
What is /usr merge?
●   Move all executables into /usr/bin
●   Move all related libraries into either
    /usr/lib or /usr/lib64, as needed
Problems with /usr merge
●   LSB adheres to FHS
●   Would break most shell scripts that (for
    example) start #!/bin/sh or #!/bin/bash
●   Would other distros go along? Doe
    Fedora care if they do?
Some benefits to /usr merge
●   Matches what Solaris does already
●   Simplifies
●   Easier to run multiple instances of OS
    on different machines in a network. This
    is particularly true with btrfs.

Linux Directory Structure

  • 1.
    Linux Directory Structure Kevin B. O’Brien Washtenaw Linux Users Group http://www.lugwash.org
  • 2.
    General Notes ● Linux derives from Unix and is designed to be multi-user ● This explains some otherwise puzzling choices ● This may have something to do with Fedora proposing to change this Directory Structure
  • 3.
    Drives 1 ● Linux derives from Unix ● Different from Windows ● Windows starts with drives, which are explicit – C: – D:
  • 4.
    Drives 2 ● Linux does not make drives explicit. ● You can have one physical drive, several physical drives, partition the drives into multiple partitions, and normally you won’t be aware of it. ● In a file manager, you won’t see drives, just directories ● But if you look in fstab, you will see things like hda1, hda2, sda1, sda2. These are logical drives (either physical or from partitioning)
  • 5.
    Root ● In Windows, every drive has its own root – C: is the root of the C drive ● In Linux, there is only one root, no matter how many drives you may have – In Linux, / is the root ● Root is ambiguous in one respect, since it can refer to the top of the file structure, and is also the name of the Administrator- type account in Linux.
  • 6.
    Root 2 ● For our purposes, we will refer to root as the top of the file structure in this presentation.
  • 7.
    Comparison Linux Windows /home C: Disk /home/data Partitions D: / root /var E: •/boot •/bin F: •etc.
  • 8.
    Watch out for... ● Windows uses a backslash for everything ● Linux uses a forward slash for everything ● In Windows, the logical drive (e.g. C:) is an important part of the directory structure ● In Linux, logical drives don't mean much. You can even mount a separate physical drive under a directory that is on another drive.
  • 9.
    Watch out for2 ● In Windows, case does not matter. The C:Windows directory is the same as the c:windows directory. ● In Linux, everything is case sensitive. The convention in Linux is to use lower case for most things, but the important thing to remember is that /usr/bin is not the same thing as /USR/BIN.
  • 10.
    Drives vs. directories ● In Windows, drives are directories ● In Linux, you can have several drives all under one overall directory, or nested one in another in the directory structure. ● In Linux, you tell the file system where you want a drive to appear by where it is mounted. See fstab for more on this.
  • 11.
    Where did thiscome from? ● This started with a Linux effort in August, 1993 ● In 1996 some BSD folks decided it should be expanded to all Unix-like systems ● This resulted in the Filesystem Hierarchy Standard, which can be found at http://www.pathname.com/fhs/pub/fhs- 2.3.html
  • 12.
    Standard? ● Of course, many distros vary from this to some degree, some (Gobo) reject it entirely, and MacOS tends to substitute more “readable” names, like Library in place of lib, etc. ● Red Hat seems to be pretty faithful http://www.redhat.com/docs/manuals/linux/ RHL-9-Manual/ref-guide/s1-filesystem- fhs.html
  • 13.
    Standard? 2 ● Distros can vary, but so can programs ● When you install a program, it may not follow the FHS in deciding where to place its files ● So this presentation should be considered a guide to how things more- or-less ought to work, but YMMV
  • 14.
    / ● This is the symbol for the root of the file system in Linux ● Every directory is “under” root, ultimately ● This is not the same as the user “root”, which is the user with God-like powers over the system ● The user “root” does have a directory, called /root
  • 15.
    /bin ● Contains many of the commands used on the command line ● Examples include cat, chmod,dmesg, kill, ls, mkdir more, ps, pwd, sed, su ● the above commands, and many others, must be in /bin to meet the standard. ● Other commands can be optionally included, such as tar. gzip, netstat, and ping
  • 16.
    /bin 2 ● There are other commands that are not in here ● They are part of the shell (e.g. cd) ● For most users, this will be bash, the Bourne-Again Shell ● You can tell by looking at the man pages ● Commands in /bin will have their own man page, commands in bash will have info in the bash man page
  • 17.
    /boot ● Contains files needed for boot – kernel – Grub menu (good to know if you are dual- booting) – Lilo boot sector backups ● Contains data that is used before the kernel starts executing user-mode programs
  • 18.
    /dev ● Kinda-sorta an equivalent to a mashup of the Device Manager and C:WindowsSystem in Windows ● Contains a file describing every device, and these files can send data to each device ● In Linux, everything is a file or a directory ● We mean it. We really mean it.
  • 19.
    /dev 2 ● hda1, hda2, etc. are partitions on the first physical IDE drive ● sda1, sda2, etc. are partitions on the first physical SATA drive ● /dev/cdrom is the optical drive ● /dev/fd0 is the floppy drive, if you have one ● /dev/dsp is the speaker device
  • 20.
    Fun with /dev ● Try this command out: cat /etc/lilo.conf > /dev/dsp ● The sound you will hear is the sound of your /etc/lilo.conf file ● If you don't have /etc/lilo.conf, substitute any other file you do have ● So, /dev/dsp is the speaker, and the speaker is the file /dev/dsp.
  • 21.
    More /dev fun ● The most famous device in /dev is the ubiquitous /dev/null ● Anything sent to this device disappears into a black hole, and reappears in another galaxy, much to the puzzlement of the Lizard people of Zorg in the CmfR!&v Galaxy.
  • 22.
    /etc ● Perhaps the most important to understand ● No binaries can be here, per the standard ● This is just for configuration files ● Examples include /etc/inittab, /etc/fstab, /etc/passwd, /etc/hosts, /etc/x11,and /etc/opt
  • 23.
    /etc 2 ● These files are generally text files and can be edited using any text editor: emacs or vi on the command line, or whatever graphical equivalent (e.g. gedit, kate) your desktop offers
  • 24.
    /etc/inittab ● Describes what takes place at bootup ● Includes the runlevel of the system, and which processes should be run at each runlevel ● Linux has seven runlevels, from 0-6
  • 25.
    /etc/fstab ● Automatically mounts filesystems across multiple drives or partitions, or even from remote systems ● This is where you would place an entry if you added a hard drive ● This file tells the system what drive to access, and where to mount it in your system
  • 26.
    /etc/hosts ● This is the famous hosts file, which matches up names with IP addresses ● This is like level 1 DNS. The system looks here first. ● This can be used to block sites by putting their URL in here and mapping it to 127.0.0.1. Great way to get rid of Double-Click.
  • 27.
    /etc/passwd ● This is the password file, but it contains more: user name, user password, user ID, group ID, home directory, and shell. It can optionally contain the user's “real name” ● Each user is on its own line ● Each user can select the shell they want to use (most use bash these days)
  • 28.
    /etc/opt/ ● This is a directory for the configuration files for each system application you install. Each application gets its own subdirectory under /etc/opt/ ● System applications are not just for one user, but for anyone logged in to the system ● This is not mandatory, so see the man pages or help for your application
  • 29.
    /etc/x11 ● Configuration directory for x11, which is the display system for graphical interfaces in Linux ● This can vary with different distros, so again you need to check ● /etc/x11/xorg.conf is the configuration file that lets you specify the resolutions your monitor and graphics card can display, for instance
  • 30.
    /home ● This is where the home directories for all of the “ordinary” users are located. ● The exception is root, which has its own home directory, /root/ ● Each user gets a directory with their user name: e.g. /home/baracko ● This can contain configuration files for applications that are user-specific
  • 31.
    User-specific Configurations ● These files should be in the /home directory, and should begin with a “.” character (i.e. “dot files”) ● If more than one, the files should go into a directory with a name that begins with the “.” character (i.e. “dot directory), and then the files should not begin with a “.”
  • 32.
    /home Partition? ● Your home directory is where you would place all of your documents, videos, MP3s, etc. ● It can get fairly large ● It is also the stuff you want to back up, and you don't want to lose ● Putting it on its own partition, or even its own physical drive, is not a bad idea
  • 33.
    Reinstalling ● If you have a separate /home partition, you can reinstall (or do a clean upgrade) and still keep not only your data, but many of your file configurations ● Examples are Firefox bookmarks, Thunderbird or Evolution e-mail settings and mail files, etc.
  • 34.
    /lib ● This is the location for shared library files that are used by system programs ● Shared library files are equivalent to Windows' “*.dll” files ● The files here are intended to be libraries for programs in /bin and /sbin, i.e. needed to boot the system and run the commands in the root file system
  • 35.
    /lib 2 ● Also in this directory are kernel modules ● Other library locations for other programs include /usr/lib and /usr/local/lib ● Generally these correspond to where the binary is installed, i.e. a binary in /usr/bin would put a library in /usr/lib, and a binary in /usr/local/bin would put a library in usr/local/lib
  • 36.
    /media, /mnt ● This is one where there is no general agreement ● Either directory can be a place to mount removable media (e.g. CD, USB drive, Floppy disk) ● /mnt is the older way, and is still used for temporarily-mounted file systems ● At one time, these devices were often mounted in the root directory, but that is less common today
  • 37.
    /media, /mnt 2 ● Either directory is allowed by the standard ● Most current distro versions will mount these devices automatically ● When they are mounted, an entry will go in the directory ● For USB devices, you want to safely unmount before removing. Current graphical file managers let you do so in the directory (right-click on the device).
  • 38.
    /mnt vs. /etc/fstab ● The distinction is temporary vs. permanent ● A file system that will be permanently mounted should get an entry in fstab ● A file system mounted temporarily will get an entry in /mnt when you mount it ● Again, everything in Linux is a file or a directory. If you mount something on the command line, a file is created in /mnt.
  • 39.
    /opt ● Intended as a place for “optional” software, i.e. add-on packages that are not part of the default installation ● Intended for use by sysadmins doing something locally, not for software developers creating packages ● Treat this as something deprecated, but possibly still there.
  • 40.
    /proc ● Have we mentioned that everything in Linux is a file or a directory? ● Any time a process is created in Linux, a corresponding file goes in here ● Most users have no need to go here, but you're an adult, do what you want ● Gosh, what would happen if you deleted a file here?
  • 41.
    /root ● Home directory for the root account ● Normally, you don't want to be root, and you don't want to go here ● Give yourself a user account, and use that for day-to-day stuff. It is much safer that way.
  • 42.
    /sbin ● Place for System binaries ● One of three such directories – /sbin – /usr/sbin – /usr/local/sbin ● All three hold utilities used for system administration, and are intended for the root user
  • 43.
    /sbin 2 ● /sbin should have those utilities essential for booting, restoring, recovering, and/or repairing the system ● Programs used after /usr is known to be mounted (i.e. when there are no problems) go into /usr/sbin ● Locally installed sysadmin programs go in /usr/local/sbin
  • 44.
    /tmp ● Guess what this one is? ● Yes, temporary files are placed here ● Assume that anything in this directory will be deleted whenever the system is booted ● If you want to have your own temporary directory and not lose files at reboot, create one in your home directory, i.e. /home/username/temp
  • 45.
    /usr ● Lots of stuff in here ● Back in the mists of prehistory, these were the user directories, equivalent to what are now /home directories ● Now /usr is for shareable data ● Not intended for software packages, in general
  • 46.
    /usr/bin ● Contains executable files for many Linux commands ● These are commands that are not part of the core Linux operating system ● They would go in /bin ● Examples of commands in here: perl, python
  • 47.
    /usr/include ● General use include files, including header files, for C and C++ programming languages
  • 48.
    /usr/lib ● Contains libraries for the C and C++ programming languages ● Object files, libraries, and internal files not intended to be executed directly by users or shell scripts
  • 49.
    /usr/local ● For use by System Administrator when installing software locally ● Must not be over-written when system software is updated ● Generally has same subdirectories as /usr
  • 50.
    /usr/sbin ● Non-essential standard system binaries, i.e. utilities ● Essential utilities go in /sbin
  • 51.
    /usr/share ● For read-only architecture independent data files ● Intended to be shared across platforms (e.g. i386, Alpha, PPC) ● Must not change ● If the contents are variable, go to /var e.g. a game file in /usr/share/games must be static. Game play logs go in /var/games.
  • 52.
    /usr/share/man ● Primary location for man pages for the system
  • 53.
    /usr/src ● Source code is placed here, for reference purposes only ● This includes the source code for the Linux kernel
  • 54.
    /var ● This is for files that are expected to be updated and changed ● This includes: – mail directories – print spool – logs – web sites
  • 55.
    /var 2 ● Because these can be written to constantly, they can grow over time ● On a server, you may want to put /var on its own partition to limit the growth ● This can also prevent the /var directory from bringing down the server by using up all of the drive space.
  • 56.
    /var/lock ● Contains lock files ● These files prevent two users (or two programs) from trying to access the same data at the same time ● You may need to delete a lock file from time to time
  • 57.
    /var/log ● Contains the log files generated by programs
  • 58.
    Fedora Proposal ● You may have noticed a lot of /bin directories in this strcuture ● So did Fedora developers Harald Hoyer and Kay Sievers ● Their proposal is called /usr merge
  • 59.
    What is /usrmerge? ● Move all executables into /usr/bin ● Move all related libraries into either /usr/lib or /usr/lib64, as needed
  • 60.
    Problems with /usrmerge ● LSB adheres to FHS ● Would break most shell scripts that (for example) start #!/bin/sh or #!/bin/bash ● Would other distros go along? Doe Fedora care if they do?
  • 61.
    Some benefits to/usr merge ● Matches what Solaris does already ● Simplifies ● Easier to run multiple instances of OS on different machines in a network. This is particularly true with btrfs.