FILESYSTEM(7)

NAME
filesystem - file system organization

SYNOPSIS
/
/usr

DESCRIPTION

The SunOS file system tree is organized for easy administration. Distinct areas within the file system tree are provided for files that are private to one machine, files that can be shared by multiple machines of a common architecture, files that can be shared by all machines, and home directories. This organization allows the sharable files to be stored on one machine, while being accessed by many machines using a remote file access mechanism such as Sun's Network File System (NFS). Grouping together similar files makes the file system tree easier to upgrade and manage.

The file system tree consists of a root file system and a collection of mountable file systems. The mount(8) program attaches mountable file systems to the file system tree at mount points (directory entries) in the root file system, or other previously mounted file systems. Two file systems, / (the root) and /usr, must be mounted in order to have a fully functional system. The root file system is mounted automatically by the kernel at boot time; the /usr file system is mounted by the /etc/rc.boot script, which is run as part of the booting process.

The root file system contains files that are unique to each machine; it can not be shared among machines. The root file system contains the following directories:

/dev
    Character and block special files. Device files provide hooks into hardware devices or operating system facilities. The MAKEDEV command (see makedev(8)) builds device files in the /dev directory. Typically, device files are built to match the kernel and hardware configuration of the machine.

/etc
    Various configuration files and system administration databases that are machine specific. You can think of /etc as the “home directory” of a machine, defining its “identity.” Executable programs are no longer kept in /etc.

/home
    Mount points for home directories. This directory may be arranged so that shared user files are placed under the directory /home/machine-name on machines serving as file servers. Machines may then be locally configured with mount points under /home for all of the file servers of interest, with the name of the mount point being the name of the file server.

/mnt
    A generic mount point. This is an empty directory available for temporarily mounting file systems on.

/sbin
    Executable programs that are needed in the boot process before /usr is mounted. /sbin contains only those programs that are needed in order to mount the /usr file system: hostname(1), ifconfig(8C), init(8), mount(8), and sh(1). After /usr is mounted, the full complement of utilities are available.

/tmp
    Temporary files that are deleted at reboot time.

/var
    Files, such as log files, that are unique to a machine but that can grow to an arbitrary (“variable”) size.

/var/adm
    System logging and accounting files.

/var/preserve
    Backup files for vi(1) and ex(1).

/var/spool
    Subdirectories for files used in printer spooling, mail delivery, cron(8), at(1), etc.

/var/tmp
    Transitory files that are not deleted at reboot time.

Because it is desirable to keep the root file system small, larger file systems are often mounted on /var and /tmp.

The file system mounted on /usr contains architecture-dependent and architecture-independent shareable files. The subtree rooted at /usr/share contains architecture-independent shareable files; the rest of the /usr tree contains architecture-dependent files. By mounting a common remote file system, a group of machines with a common architecture may share a single /usr file system. A single /usr/share file system can be shared by machines of any architecture. A machine acting as a file server may export many different /usr file systems to support several different architectures and operating system releases. Clients usually mount /usr read-only to prevent their accidentally modifying any shared files. The /usr file system contains the following subdirectories:

/usr/5bin
    System V executables.

/usr/5include
    System V include files.

/usr/5lib
    System V library files.

/usr/bin
    Executable programs. The bulk of the system utilities are located here.

/usr/dict
    Dictionary databases.

/usr/etc
    Executable system administration programs.

/usr/games
    Executable game programs and data.

/usr/include
    Include files.

/usr/lib
    Program libraries and various architecture-dependent databases.

/usr/pub
    Various data files.

/usr/ucb
    Executable programs descended from the Berkeley Software Distribution.

/usr/share
    Subtree for architecture-independent shareable files.

/usr/share/man
    Subdirectories for the on-line reference manual pages.

/usr/share/lib
    Architecture-independent databases.

A machine with disks may export root file systems, swap files and /usr file systems to diskless or partially-disked machines, which mount these into the standard file system hierarchy. The standard directory tree for exporting these file systems is:

/export
    The root of the exported file system tree.

/export/exec/architecture-name
    The exported /usr file system supporting architecture-name for the current release.

/export/exec/architecture-name.release-name
    The exported /usr file system supporting architecture-name for SunOS release-name.

/export/share
    The exported common /usr/share directory tree.

/export/root/hostname
    The exported root file system for hostname.

/export/swap/hostname
    The exported swap file for hostname.

/export/var/hostname
    The exported /var directory tree for hostname.

/export/dump/hostname
    The exported dump file for hostname.

/export/crash/hostname
    The exported crash dump directory for hostname.

  Changes from Previous Releases

The file system layout described here is quite a bit different from the layout employed previous to release 4.0 of SunOS. For compatibility with earlier releases of SunOS, and other versions of the UNIX system, symbolic links are provided for various files and directories linking their previous names to their current locations. The symbolic links provided include:

/bin —> /usr/bin
    All programs previously located in /bin are now in /usr/bin.

/lib —> /usr/lib
    All files previously located in /lib are now in /usr/lib.

/usr/adm —> /var/adm
    The entire /usr/adm directory has been moved to /var/adm.

/usr/spool —> /var/spool
    The entire /usr/spool directory has been moved to /var/spool.

/usr/tmp —> /var/tmp
    The /usr/tmp directory has been moved to /var/tmp.

/etc/termcap —> /usr/share/lib/termcap

/usr/5lib/terminfo —> /usr/share/lib/terminfo

/usr/lib/me —> /usr/share/lib/me

/usr/lib/ms —> /usr/share/lib/ms

/usr/lib/tmac —> /usr/share/lib/tmac

/usr/man —> /usr/share/man

The following program binaries have been moved from /etc to /usr/etc with symbolic links to them left in /etc: arp, clri, cron, chown, chroot, config, dkinfo, dmesg, dump, fastboot, fasthalt, fsck, halt, ifconfig, link, mkfs, mknod, mount, ncheck, newfs, pstat, rdump, reboot, renice, restore, rmt, rrestore, shutdown, umount, update, unlink, and vipw.

In addition, some files and directories have been moved with no symbolic link left behind in the old location:

    Old Name
        New Name

    /etc/biod
        /usr/etc/biod

    /etc/fsirand
        /usr/etc/fsirand

    /etc/getty
        /usr/etc/getty

    /etc/in.rlogind
        /usr/etc/in.rlogind

    /etc/in.routed
        /usr/etc/in.routed

    /etc/in.rshd
        /usr/etc/in.rshd

    /etc/inetd
        /usr/etc/inetd

    /etc/init
        /usr/etc/init

    /etc/nfsd
        /usr/etc/nfsd

    /etc/portmap
        /usr/etc/portmap

    /etc/rpc.lockd
        /usr/etc/rpc.lockd

    /etc/rpc.statd
        /usr/etc/rpc.statd

    /etc/ypbind
        /usr/etc/ypbind

    /usr/lib/sendmail.cf
        /etc/sendmail.cf

    /usr/preserve
        /var/preserve

    /usr/lib/aliases
        /etc/aliases

    /stand
        /usr/stand

    /etc/yp
        /var/yp

Note: with this new file system organization, the approach to repairing a broken file system changes. One must mount /usr before doing an fsck(8), for example. If the mount point for /usr has been destroyed, /usr can be mounted temporarily on /mnt or /tmp. If the root file system on a standalone system is so badly damaged that none of these mount points exist, or if /sbin/mount has been corrupted, the only way to repair it may be to re-install the root file system.

SEE ALSO
at(1), ex(1), hostname(1), sh(1), vi(1), intro(4), nfs(4P), hier(7), fsck(8), ifconfig(8C), init(8), makedev(8), mount(8), rc(8)