From: John Marino Date: Fri, 3 Apr 2015 12:21:17 +0000 (+0200) Subject: am-utils: Convert info page to "man 7 am-utils" X-Git-Tag: v4.2.0rc~391 X-Git-Url: https://gitweb.dragonflybsd.org/~tuxillo/dragonfly.git/commitdiff_plain/8f713a67287ca3e8e9a36c9d5e8946a83ecab8a6 am-utils: Convert info page to "man 7 am-utils" Each automounter tool had a man page, but the group of utilities was covered by an info page. This unique information was converted to am-utils.7 and the info page has been removed. --- diff --git a/Makefile_upgrade.inc b/Makefile_upgrade.inc index fecf6e7f36..1ab85314bd 100644 --- a/Makefile_upgrade.inc +++ b/Makefile_upgrade.inc @@ -3032,6 +3032,7 @@ TO_REMOVE+=/usr/share/info/gdb.info.gz TO_REMOVE+=/usr/share/info/gdbint.info.gz TO_REMOVE+=/usr/share/info/stabs.info.gz TO_REMOVE+=/usr/share/info/com_err.info.gz +TO_REMOVE+=/usr/share/info/am-utils.info.gz .if ${MACHINE_ARCH} == "x86_64" TO_REMOVE+=/usr/sbin/stlstats diff --git a/usr.sbin/amd/Makefile b/usr.sbin/amd/Makefile index 9700962dc1..cfc5b6bdca 100644 --- a/usr.sbin/amd/Makefile +++ b/usr.sbin/amd/Makefile @@ -4,9 +4,9 @@ # This file is under a "BSD" copyright (c) by David O'Brien 1998 # # $FreeBSD: src/usr.sbin/amd/Makefile,v 1.6.2.1 2001/04/25 12:09:12 ru Exp $ -# $DragonFly: src/usr.sbin/amd/Makefile,v 1.2 2003/06/17 04:29:52 dillon Exp $ # -SUBDIR= include libamu amd amq doc fixmount fsinfo hlfsd mk-amd-map pawd scripts wire-test +SUBDIR= include libamu amd amq fixmount fsinfo hlfsd mk-amd-map pawd \ + scripts wire-test .include diff --git a/usr.sbin/amd/amd/Makefile b/usr.sbin/amd/amd/Makefile index fec29105fc..4abc85dc87 100644 --- a/usr.sbin/amd/amd/Makefile +++ b/usr.sbin/amd/amd/Makefile @@ -4,13 +4,12 @@ # This file is under a "BSD" copyright (c) by David O'Brien 1998 # # $FreeBSD: src/usr.sbin/amd/amd/Makefile,v 1.17.2.1 2001/04/25 12:09:12 ru Exp $ -# $DragonFly: src/usr.sbin/amd/amd/Makefile,v 1.4 2006/05/14 18:07:29 swildner Exp $ # .PATH: ${.CURDIR}/../../../contrib/amd/amd PROG= amd -MAN= amd.8 +MAN= amd.8 am-utils.7 SRCS= conf_parse.y conf_tok.l SRCS+= am_ops.c amd.c amfs_auto.c amfs_direct.c amfs_error.c diff --git a/usr.sbin/amd/amd/am-utils.7 b/usr.sbin/amd/amd/am-utils.7 new file mode 100644 index 0000000000..1425189bd8 --- /dev/null +++ b/usr.sbin/amd/amd/am-utils.7 @@ -0,0 +1,7791 @@ +.\" Automatically generated by Pod::Man 2.27 (Pod::Simple 3.28) +.\" +.\" Standard preamble: +.\" ======================================================================== +.de Sp \" Vertical space (when we can't use .PP) +.if t .sp .5v +.if n .sp +.. +.de Vb \" Begin verbatim text +.ft CW +.nf +.ne \\$1 +.. +.de Ve \" End verbatim text +.ft R +.fi +.. +.\" Set up some character translations and predefined strings. \*(-- will +.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left +.\" double quote, and \*(R" will give a right double quote. \*(C+ will +.\" give a nicer C++. Capital omega is used to do unbreakable dashes and +.\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, +.\" nothing in troff, for use with C<>. +.tr \(*W- +.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' +.ie n \{\ +. ds -- \(*W- +. ds PI pi +. if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch +. if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch +. ds L" "" +. ds R" "" +. ds C` "" +. ds C' "" +'br\} +.el\{\ +. ds -- \|\(em\| +. ds PI \(*p +. ds L" `` +. ds R" '' +. ds C` +. ds C' +'br\} +.\" +.\" Escape single quotes in literal strings from groff's Unicode transform. +.ie \n(.g .ds Aq \(aq +.el .ds Aq ' +.\" +.\" If the F register is turned on, we'll generate index entries on stderr for +.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index +.\" entries marked with X<> in POD. Of course, you'll have to process the +.\" output yourself in some meaningful fashion. +.\" +.\" Avoid warning from groff about undefined register 'F'. +.de IX +.. +.nr rF 0 +.if \n(.g .if rF .nr rF 1 +.if (\n(rF:(\n(.g==0)) \{ +. if \nF \{ +. de IX +. tm Index:\\$1\t\\n%\t"\\$2" +.. +. if !\nF==2 \{ +. nr % 0 +. nr F 2 +. \} +. \} +.\} +.rr rF +.\" +.\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). +.\" Fear. Run. Save yourself. No user-serviceable parts. +. \" fudge factors for nroff and troff +.if n \{\ +. ds #H 0 +. ds #V .8m +. ds #F .3m +. ds #[ \f1 +. ds #] \fP +.\} +.if t \{\ +. ds #H ((1u-(\\\\n(.fu%2u))*.13m) +. ds #V .6m +. ds #F 0 +. ds #[ \& +. ds #] \& +.\} +. \" simple accents for nroff and troff +.if n \{\ +. ds ' \& +. ds ` \& +. ds ^ \& +. ds , \& +. ds ~ ~ +. ds / +.\} +.if t \{\ +. ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" +. ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' +. ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' +. ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' +. ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' +. ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' +.\} +. \" troff and (daisy-wheel) nroff accents +.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' +.ds 8 \h'\*(#H'\(*b\h'-\*(#H' +.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] +.ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' +.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' +.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] +.ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] +.ds ae a\h'-(\w'a'u*4/10)'e +.ds Ae A\h'-(\w'A'u*4/10)'E +. \" corrections for vroff +.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' +.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' +. \" for low resolution devices (crt and lpr) +.if \n(.H>23 .if \n(.V>19 \ +\{\ +. ds : e +. ds 8 ss +. ds o a +. ds d- d\h'-1'\(ga +. ds D- D\h'-1'\(hy +. ds th \o'bp' +. ds Th \o'LP' +. ds ae ae +. ds Ae AE +.\} +.rm #[ #] #H #V #F C +.\" ======================================================================== +.\" +.IX Title "AM-UTILS 7" +.TH AM-UTILS 7 "2015-04-03" "perl v5.18.4" "DragonFly Miscellaneous Information Manual" +.\" For nroff, turn off justification. Always turn off hyphenation; it makes +.\" way too many mistakes in technical documents. +.if n .ad l +.nh +.SH "NAME" +Automounter Tool Suite \- Conversion of am\-utils.info +.SH "Top" +.IX Header "Top" +.Vb 2 +\&Am\-utils \- The 4.4BSD Automounter Tool Suite +\&******************************************** +.Ve +.PP +Am-utils is the 4.4BSD Automounter Tool Suite, which includes the Amd +automounter, the Amq query and control program, the Hlfsd daemon, and +other tools. This Info file describes how to use and understand the +tools within Am-utils. +.PP +* Menu: +.PP +Explains the terms and conditions for using: see \*(L"License\*(R" +.PP +and distributing Am-utils. +How to get the latest Am-utils distribution.: see \*(L"Distrib\*(R" +.PP +An introduction to Automounting concepts.: see \*(L"Intro\*(R" +.PP +History of am\-utils' development.: see \*(L"History\*(R" +.PP +An overview of Amd.: see \*(L"Overview\*(R" +.PP +Machines and Systems supported by Amd.: see \*(L"Supported Platforms\*(R" +.PP +Details of mount maps: see \*(L"Mount Maps\*(R" +.PP +All the Amd command line options explained.: see \*(L"Amd Command Line Options\*(R" +.PP +The different mount types supported by Amd.: see \*(L"Filesystem Types\*(R" +.PP +The amd.conf file syntax and meaning.: see \*(L"Amd Configuration File\*(R" +.PP +How to start, stop and control Amd.: see \*(L"Run-time Administration\*(R" +.PP +The FSinfo filesystem management tool.: see \*(L"FSinfo\*(R" +.PP +The Home-Link Filesystem server.: see \*(L"Hlfsd\*(R" +.PP +Other tools which come with am-utils.: see \*(L"Assorted Tools\*(R" +.PP +Some examples showing how Amd might be used.: see \*(L"Examples\*(R" +.PP +Implementation details.: see \*(L"Internals\*(R" +.PP +Legal Notes: see \*(L"Acknowledgments & Trademarks\*(R" +.PP +Indexes +An item for each concept.: see \*(L"Index\*(R" +.SS "License" +.IX Subsection "License" +Am-utils is not in the public domain; it is copyrighted and there are +restrictions on its distribution. +.PP +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: +.PP +1. Redistributions of source code must retain the above copyright +notice, this list of conditions and the following disclaimer. +.PP +2. Redistributions in binary form must reproduce the above copyright +notice, this list of conditions and the following disclaimer in the +documentation and/or other materials provided with the +distribution. +.PP +3. All advertising materials mentioning features or use of this +software must display the following acknowledgment: +.PP +\&\*(L"This product includes software developed by the University of +California, Berkeley and its contributors, as well as the Trustees +of Columbia University.\*(R" +.PP +4. Neither the name of the University nor the names of its +contributors may be used to endorse or promote products derived +from this software without specific prior written permission. +.PP +\&\s-1THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS \*(L"AS IS\*(R" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS +BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES \s0(\s-1INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES\s0; \s-1LOSS OF USE, DATA, OR PROFITS\s0; \s-1OR BUSINESS +INTERRUPTION\s0) \s-1HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT \s0(\s-1INCLUDING NEGLIGENCE OR OTHERWISE\s0) +\&\s-1ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF +THE POSSIBILITY OF SUCH DAMAGE.\s0 +.SS "Source Distribution" +.IX Subsection "Source Distribution" +The Am-utils home page is located in +`\fBhttp://www.cs.columbia.edu/~ezk/am\-utils/\fR' +.PP +You can get the latest distribution version of Am-utils from +`\fBftp://shekel.mcl.cs.columbia.edu/pub/am\-utils/am\-utils.tar.gz\fR' +.PP +Alpha and beta distributions are available in +`\fBftp://shekel.mcl.cs.columbia.edu/pub/am\-utils/\fR'. +.PP +Revision 5.2 was part of the 4.3BSD Reno distribution. +.PP +Revision 5.3bsdnet, a late alpha version of 5.3, was part of the \s-1BSD\s0 +network version 2 distribution +.PP +Revision 6.0 was made independently by Erez Zadok + at the Computer Science Department +(http://www.cs.columbia.edu/) of Columbia University +(http://www.columbia.edu/), as part of his PhD thesis work +(http://www.cs.columbia.edu/~ezk/research/tp/thesis_proposal.html). +see \*(L"History\*(R", for more details. +.PP +Bug Reports +=========== +.PP +Before reporting a bug, see if it is a known one in the bugs +(http://www.cs.columbia.edu/~ezk/am\-utils/BUGS.txt) file. Send all bug +reports to quoting the details of +the release and your configuration. These can be obtained by running +the command `\fBamd \-v\fR'. It would greatly help if you could provide a +reproducible procedure for detecting the bug you are reporting. +.PP +Providing working patches is highly encouraged. Every patch +incorporated, however small, will get its author an honorable mention in +the authors file (http://www.cs.columbia.edu/~ezk/am\-utils/AUTHORS.txt). +.PP +Mailing List +============ +.PP +There are two mailing lists for people interested in keeping up-to-date +with developments. +.PP +1. The older list, `\fBamd-workers\fR' is for general \*(L"how to\*(R" questions and +announcements. To subscribe, send a note to +.(1) To post a +message to this list, send mail to +. +.PP +2. The developers only list, `\fBamd-dev\fR' is for +.PP +\&\- announcements of alpha and beta releases of am-utils +.PP +\&\- reporting of bugs and patches +.PP +\&\- discussions of new features for am-utils +.PP +\&\- implementation and porting issues +.PP +To subscribe, send a note to +with the single body text line `\fBsubscribe amd-dev\fR'. To post a +message to this list, send mail to +. To avoid as much spam as +possible, only subscribers to this list may post to it. +.PP +Subscribers of `\fBamd-dev\fR' are most suitable if they have the time +and resources to test new and buggy versions of amd, on as many +different platforms as possible. They should also be prepared to +learn and use the \s-1GNU\s0 Autoconf, Automake, and Libtool packages, +and of course, be very familiar with the complex code in the +am-utils package. In other words, subscribers on this list should +be able to contribute meaningfully to the development of amd. +.PP +\&\-\-\-\-\-\-\-\-\-\- Footnotes \-\-\-\-\-\-\-\-\-\- +.PP +(1) Note that the older address, , +is defunct. +.SS "Introduction" +.IX Subsection "Introduction" +An \*(L"automounter\*(R" maintains a cache of mounted filesystems. Filesystems +are mounted on demand when they are first referenced, and unmounted +after a period of inactivity. +.PP +Amd may be used as a replacement for Sun's automounter. The choice +of which filesystem to mount can be controlled dynamically with +\&\*(L"selectors\*(R". Selectors allow decisions of the form \*(L"hostname is \s-1THIS,\*(R"\s0 +or \*(L"architecture is not \s-1THAT.\*(R" \s0 Selectors may be combined arbitrarily. +Amd also supports a variety of filesystem types, including \s-1NFS, UFS\s0 and +the novel \*(L"program\*(R" filesystem. The combination of selectors and +multiple filesystem types allows identical configuration files to be +used on all machines thus reducing the administrative overhead. +.PP +Amd ensures that it will not hang if a remote server goes down. +Moreover, Amd can determine when a remote server has become +inaccessible and then mount replacement filesystems as and when they +become available. +.PP +Amd contains no proprietary source code and has been ported to +numerous flavors of Unix. +.SS "History" +.IX Subsection "History" +The Amd package has been without an official maintainer since 1992. +Several people have stepped in to maintain it unofficially. Most +notable were the `\fBupl\fR' (Unofficial Patch Level) releases of Amd, +created by me (Erez Zadok ), and available from +`\fBftp://ftp.cs.columbia.edu/pub/amd/\fR'. The last such unofficial release +was `\fBupl102\fR'. +.PP +Through the process of patching and aging, it was becoming more and +more apparent that Amd was in much need of revitalizing. Maintaining +Amd had become a difficult task. I took it upon myself to cleanup the +code, so that it would be easier to port to new platforms, add new +features, keep up with the many new feature requests, and deal with the +never ending stream of bug reports. +.PP +I have been working on such a release of Amd on and off since +January of 1996. The new suite of tools is currently named \*(L"am-utils\*(R" +(AutoMounter Utilities), in line with \s-1GNU\s0 naming conventions, befitting +the contents of the package. In October of 1996 I had received enough +offers to help me with this task that I decided to make a mailing list +for this group of people. Around the same time, Amd had become a +necessary part of my PhD thesis work, resulting in more work performed +on am-utils. +.PP +Am-utils version 6.0 was numbered with a major new release number to +distinguish it from the last official release of Amd (5.x). Many new +features have been added such as a \s-1GNU\s0 `\fBconfigure\fR' system, \s-1NFS\s0 Version +3, Autofs support, a run-time configuration file (`\fBamd.conf\fR'), many new +ports, more scripts and programs, as well as numerous bug fixes. +Another reason for the new major release number was to alert users of +am-utils that user-visible interfaces may have changed. In order to +make Amd work well for the next 10 years, and be easier to maintain, it +was necessary to remove old or unused features, change various syntax +files, etc. However, great care was taken to ensure the maximum +possible backwards compatibility. +.SS "1 Overview" +.IX Subsection "1 Overview" +Amd maintains a cache of mounted filesystems. Filesystems are +\&\*(L"demand-mounted\*(R" when they are first referenced, and unmounted after a +period of inactivity. Amd may be used as a replacement for Sun's +\&\fIautomount\fR\|(8) program. It contains no proprietary source code and has +been ported to numerous flavors of Unix. see \*(L"Supported Platforms\*(R". +.PP +Amd was designed as the basis for experimenting with filesystem +layout and management. Although Amd has many direct applications it is +loaded with additional features which have little practical use. At +some point the infrequently used components may be removed to streamline +the production system. +.PP +* Menu: +.PP +See also \*(L"Fundamentals\*(R" +.PP +See also \*(L"Filesystems and Volumes\*(R" +.PP +See also \*(L"Volume Naming\*(R" +.PP +See also \*(L"Volume Binding\*(R" +.PP +See also \*(L"Operational Principles\*(R" +.PP +See also \*(L"Mounting a Volume\*(R" +.PP +See also \*(L"Automatic Unmounting\*(R" +.PP +See also \*(L"Keep-alives\*(R" +.PP +See also \*(L"Non-blocking Operation\*(R" +.PP +\&\fB1.1 Fundamentals\fR +.PP +The fundamental concept behind Amd is the ability to separate the name +used to refer to a file from the name used to refer to its physical +storage location. This allows the same files to be accessed with the +same name regardless of where in the network the name is used. This is +very different from placing `\fB/n/hostname\fR' in front of the pathname +since that includes location dependent information which may change if +files are moved to another machine. +.PP +By placing the required mappings in a centrally administered +database, filesystems can be re-organized without requiring changes to +configuration files, shell scripts and so on. +.PP +\&\fB1.2 Filesystems and Volumes\fR +.PP +Amd views the world as a set of fileservers, each containing one or +more filesystems where each filesystem contains one or more \*(L"volumes\*(R". +Here the term \*(L"volume\*(R" is used to refer to a coherent set of files such +as a user's home directory or a TeX distribution. +.PP +In order to access the contents of a volume, Amd must be told in +which filesystem the volume resides and which host owns the filesystem. +By default the host is assumed to be local and the volume is assumed to +be the entire filesystem. If a filesystem contains more than one +volume, then a \*(L"sublink\*(R" is used to refer to the sub-directory within +the filesystem where the volume can be found. +.PP +\&\fB1.3 Volume Naming\fR +.PP +Volume names are defined to be unique across the entire network. A +volume name is the pathname to the volume's root as known by the users +of that volume. Since this name uniquely identifies the volume +contents, all volumes can be named and accessed from each host, subject +to administrative controls. +.PP +Volumes may be replicated or duplicated. Replicated volumes contain +identical copies of the same data and reside at two or more locations in +the network. Each of the replicated volumes can be used +interchangeably. Duplicated volumes each have the same name but contain +different, though functionally identical, data. For example, +`\fB/vol/tex\fR' might be the name of a TeX distribution which varied for +each machine architecture. +.PP +Amd provides facilities to take advantage of both replicated and +duplicated volumes. Configuration options allow a single set of +configuration data to be shared across an entire network by taking +advantage of replicated and duplicated volumes. +.PP +Amd can take advantage of replacement volumes by mounting them as +required should an active fileserver become unavailable. +.PP +\&\fB1.4 Volume Binding\fR +.PP +Unix implements a namespace of hierarchically mounted filesystems. Two +forms of binding between names and files are provided. A \*(L"hard link\*(R" +completes the binding when the name is added to the filesystem. A +\&\*(L"soft link\*(R" delays the binding until the name is accessed. An +\&\*(L"automounter\*(R" adds a further form in which the binding of name to +filesystem is delayed until the name is accessed. +.PP +The target volume, in its general form, is a tuple (host, filesystem, +sublink) which can be used to name the physical location of any volume +in the network. +.PP +When a target is referenced, Amd ignores the sublink element and +determines whether the required filesystem is already mounted. This is +done by computing the local mount point for the filesystem and checking +for an existing filesystem mounted at the same place. If such a +filesystem already exists then it is assumed to be functionally +identical to the target filesystem. By default there is a one-to-one +mapping between the pair (host, filesystem) and the local mount point so +this assumption is valid. +.PP +\&\fB1.5 Operational Principles\fR +.PP +Amd operates by introducing new mount points into the namespace. These +are called \*(L"automount\*(R" points. The kernel sees these automount points +as \s-1NFS\s0 filesystems being served by Amd. Having attached itself to the +namespace, Amd is now able to control the view the rest of the system +has of those mount points. \s-1RPC\s0 calls are received from the kernel one +at a time. +.PP +When a \*(L"lookup\*(R" call is received Amd checks whether the name is +already known. If it is not, the required volume is mounted. A +symbolic link pointing to the volume root is then returned. Once the +symbolic link is returned, the kernel will send all other requests +direct to the mounted filesystem. +.PP +If a volume is not yet mounted, Amd consults a configuration +\&\*(L"mount-map\*(R" corresponding to the automount point. Amd then makes a +runtime decision on what and where to mount a filesystem based on the +information obtained from the map. +.PP +Amd does not implement all the \s-1NFS\s0 requests; only those relevant to +name binding such as \*(L"lookup\*(R", \*(L"readlink\*(R" and \*(L"readdir\*(R". Some other +calls are also implemented but most simply return an error code; for +example \*(L"mkdir\*(R" always returns \*(L"read-only filesystem\*(R". +.PP +\&\fB1.6 Mounting a Volume\fR +.PP +Each automount point has a corresponding mount map. The mount map +contains a list of key-value pairs. The key is the name of the volume +to be mounted. The value is a list of locations describing where the +filesystem is stored in the network. In the source for the map the +value would look like +.PP +location1 location2 ... locationN +.PP +Amd examines each location in turn. Each location may contain +\&\*(L"selectors\*(R" which control whether Amd can use that location. For +example, the location may be restricted to use by certain hosts. Those +locations which cannot be used are ignored. +.PP +Amd attempts to mount the filesystem described by each remaining +location until a mount succeeds or Amd can no longer proceed. The +latter can occur in three ways: +.PP +* If none of the locations could be used, or if all of the locations +caused an error, then the last error is returned. +.PP +* If a location could be used but was being mounted in the +background then Amd marks that mount as being \*(L"in progress\*(R" and +continues with the next request; no reply is sent to the kernel. +.PP +* Lastly, one or more of the mounts may have been \*(L"deferred\*(R". A +mount is deferred if extra information is required before the +mount can proceed. When the information becomes available the +mount will take place, but in the mean time no reply is sent to +the kernel. If the mount is deferred, Amd continues to try any +remaining locations. +.PP +Once a volume has been mounted, Amd establishes a \*(L"volume mapping\*(R" +which is used to satisfy subsequent requests. +.PP +\&\fB1.7 Automatic Unmounting\fR +.PP +To avoid an ever increasing number of filesystem mounts, Amd removes +volume mappings which have not been used recently. A time-to-live +interval is associated with each mapping and when that expires the +mapping is removed. When the last reference to a filesystem is removed, +that filesystem is unmounted. If the unmount fails, for example the +filesystem is still busy, the mapping is re-instated and its +time-to-live interval is extended. The global default for this grace +period is controlled by the `\fB\-w\fR' command-line option (*note \-w: \-w +Option.) or the amd.conf parameter `\fBdismount_interval\fR' (*note +dismount_interval Parameter::). It is also possible to set this value +on a per-mount basis (*note opts: opts Option.). +.PP +Filesystems can be forcefully timed out using the Amq command. +see \*(L"Run-time Administration\*(R". +.PP +\&\fB1.8 Keep-alives\fR +.PP +Use of some filesystem types requires the presence of a server on +another machine. If a machine crashes then it is of no concern to +processes on that machine that the filesystem is unavailable. However, +to processes on a remote host using that machine as a fileserver this +event is important. This situation is most widely recognized when an +\&\s-1NFS\s0 server crashes and the behavior observed on client machines is that +more and more processes hang. In order to provide the possibility of +recovery, Amd implements a \*(L"keep-alive\*(R" interval timer for some +filesystem types. Currently only \s-1NFS\s0 makes use of this service. +.PP +The basis of the \s-1NFS\s0 keep-alive implementation is the observation +that most sites maintain replicated copies of common system data such as +manual pages, most or all programs, system source code and so on. If +one of those servers goes down it would be reasonable to mount one of +the others as a replacement. +.PP +The first part of the process is to keep track of which fileservers +are up and which are down. Amd does this by sending \s-1RPC\s0 requests to the +servers' \s-1NFS\s0 `\fBNullProc\fR' and checking whether a reply is returned. +While the server state is uncertain the requests are re-transmitted at +three second intervals and if no reply is received after four attempts +the server is marked down. If a reply is received the fileserver is +marked up and stays in that state for 30 seconds at which time another +\&\s-1NFS\s0 ping is sent. +.PP +Once a fileserver is marked down, requests continue to be sent every +30 seconds in order to determine when the fileserver comes back up. +During this time any reference through Amd to the filesystems on that +server fail with the error \*(L"Operation would block\*(R". If a replacement +volume is available then it will be mounted, otherwise the error is +returned to the user. +.PP +Although this action does not protect user files, which are unique on +the network, or processes which do not access files via Amd or already +have open files on the hung filesystem, it can prevent most new +processes from hanging. +.PP +By default, fileserver state is not maintained for \s-1NFS/TCP\s0 mounts. +The remote fileserver is always assumed to be up. +.PP +\&\fB1.9 Non-blocking Operation\fR +.PP +Since there is only one instance of Amd for each automount point, and +usually only one instance on each machine, it is important that it is +always available to service kernel calls. Amd goes to great lengths to +ensure that it does not block in a system call. As a last resort Amd +will fork before it attempts a system call that may block indefinitely, +such as mounting an \s-1NFS\s0 filesystem. Other tasks such as obtaining +filehandle information for an \s-1NFS\s0 filesystem, are done using a purpose +built non-blocking \s-1RPC\s0 library which is integrated with Amd's task +scheduler. This library is also used to implement \s-1NFS\s0 keep-alives +(see \*(L"Keep-alives\*(R"). +.PP +Whenever a mount is deferred or backgrounded, Amd must wait for it +to complete before replying to the kernel. However, this would cause +Amd to block waiting for a reply to be constructed. Rather than do +this, Amd simply \*(L"drops\*(R" the call under the assumption that the kernel +\&\s-1RPC\s0 mechanism will automatically retry the request. +.SS "2 Supported Platforms" +.IX Subsection "2 Supported Platforms" +Am-utils has been ported to a wide variety of machines and operating +systems. Am-utils's code works for little-endian and big-endian +machines, as well as 32 bit and 64 bit architectures. Furthermore, when +Am-utils ports to an Operating System on one architecture, it is +generally readily portable to the same Operating System on all +platforms on which it is available. +.PP +The table below lists those platforms supported by the latest +release. The listing is based on the standard output from \s-1GNU\s0's +`\fBconfig.guess\fR' script. Since significant changes have been made to +am-utils, not all systems listed here have been verified working for all +features. +.PP +Auto-Configured System Name Config Compile Amd \s-1NFS3 \s0 Shlib Hlfsd +alpha\-dec\-osf2.1 yes yes yes ? no ? +alpha\-dec\-osf4.0 yes yes yes yes yes ? +alphaev5\-unknown\-linux\-gnu yes yes yes n/a yes ? +alphaev5\-unknown\-linux\-gnu\-rh5.2yes yes yes n/a yes ? +hppa1.0\-hp\-hpux11.00 yes yes yes no yes ? +hppa1.1\-hp\-hpux10.10 yes yes yes n/a no ? +hppa1.1\-hp\-hpux10.20 yes yes yes no no ? +hppa1.1\-hp\-hpux9.01 yes yes yes n/a yes ? +hppa1.1\-hp\-hpux9.05 yes yes yes n/a yes ? +hppa1.1\-hp\-hpux9.07 yes yes yes n/a yes ? +hppa2.0w\-hp\-hpux11.00 yes yes yes n/a yes ? +i386\-pc\-bsdi2.1 yes yes yes n/a no ? +i386\-pc\-bsdi3.0 yes yes yes yes no ? +i386\-pc\-bsdi3.1 yes yes yes yes no ? +i386\-pc\-bsdi4.0 yes yes yes yes yes ? +i386\-pc\-bsdi4.0.1 yes yes yes yes yes ? +i386\-pc\-solaris2.5.1 yes yes yes yes yes yes +i386\-pc\-solaris2.6 yes yes yes yes yes yes +i386\-pc\-solaris2.7 yes yes yes yes yes yes +i386\-unknown\-freebsd2.1.0 yes yes yes n/a ? ? +i386\-unknown\-freebsd2.2.1 yes yes yes n/a yes ? +i386\-unknown\-freebsd2.2.6 yes yes yes n/a yes ? +i386\-unknown\-freebsd2.2.7 yes yes yes n/a yes ? +i386\-unknown\-freebsd2.2.8 yes yes yes n/a yes ? +i386\-unknown\-freebsd3.0 yes yes yes yes yes ? +i386\-unknown\-freebsdelf3.0 yes yes yes yes yes ? +i386\-unknown\-freebsdelf3.1 yes yes yes yes yes ? +i386\-unknown\-freebsdelf3.2 yes yes yes yes yes ? +i386\-unknown\-freebsdelf3.3 yes yes yes yes yes ? +i386\-unknown\-freebsdelf4.0 yes yes yes yes yes ? +i386\-unknown\-netbsd1.2.1 yes yes yes yes yes ? +i386\-unknown\-netbsd1.3 yes yes yes yes yes ? +i386\-unknown\-netbsd1.3.1 yes yes yes yes yes ? +i386\-unknown\-netbsd1.3.2 yes yes yes yes yes ? +i386\-unknown\-netbsd1.3.3 yes yes yes yes yes ? +i386\-unknown\-netbsd1.4 yes yes yes yes yes ? +i386\-unknown\-openbsd2.1 yes yes yes yes yes ? +i386\-unknown\-openbsd2.2 yes yes yes yes yes ? +i386\-unknown\-openbsd2.3 yes yes yes yes yes ? +i386\-unknown\-openbsd2.4 yes yes yes yes yes ? +i386\-unknown\-openbsd2.5 yes yes yes yes yes ? +i486\-ncr\-sysv4.3.03 yes yes ? yes yes ? +i486\-pc\-linux\-gnu\-rh6.0 yes yes yes n/a yes ? +i486\-pc\-linux\-gnulibc1 yes yes yes n/a yes ? +i486\-pc\-linux\-gnulibc1\-rh4.2 yes yes yes n/a yes ? +i486\-pc\-linux\-gnuoldld yes yes yes n/a yes ? +i586\-pc\-linux\-gnu yes yes yes n/a yes ? +i586\-pc\-linux\-gnu\-rh5.2 yes yes yes n/a yes ? +i586\-pc\-linux\-gnu\-rh6.0 yes yes yes n/a yes ? +i586\-pc\-linux\-gnu\-rh6.1 yes yes yes n/a yes ? +i586\-pc\-linux\-gnulibc1 yes yes yes n/a yes ? +i586\-pc\-linux\-gnulibc1\-rh4.2 yes yes yes n/a yes ? +i686\-pc\-linux\-gnu yes yes yes n/a yes ? +i686\-pc\-linux\-gnu\-rh5.2 yes yes yes n/a yes ? +i686\-pc\-linux\-gnu\-rh6.0 yes yes yes n/a yes ? +i686\-pc\-linux\-gnulibc yes yes yes n/a yes ? +i686\-pc\-linux\-gnulibc1 yes yes yes n/a yes ? +m68k\-hp\-hpux9.00 yes yes yes n/a ? ? +m68k\-sun\-sunos4.1.1 yes yes yes n/a no ? +m68k\-next\-nextstep3 yes yes yes n/a no ? +mips\-dec\-ultrix4.3 yes yes yes n/a ? ? +mips\-sgi\-irix5.2 ? ? ? ? ? ? +mips\-sgi\-irix5.3 yes yes yes yes yes ? +mips\-sgi\-irix6.2 yes yes yes yes yes ? +mips\-sgi\-irix6.4 yes yes yes yes yes ? +mips\-sgi\-irix6.5 yes yes ? yes yes ? +powerpc\-ibm\-aix4.1.5.0 yes yes yes n/a no/broken? +powerpc\-ibm\-aix4.2.1.0 yes yes yes yes no/broken? +powerpc\-ibm\-aix4.3.1.0 yes yes ? yes ? ? +powerpc-unknown-linux-gnu yes yes yes n/a yes ? +rs6000\-ibm\-aix3.2 yes yes yes n/a ? ? +rs6000\-ibm\-aix3.2.5 yes yes yes n/a ? ? +rs6000\-ibm\-aix4.1.4.0 yes yes yes n/a no/broken? +rs6000\-ibm\-aix4.1.5.0 yes yes yes n/a no/broken? +sparc\-sun\-solaris2.3 yes yes yes n/a yes ? +sparc\-sun\-solaris2.4 yes yes yes n/a yes ? +sparc\-sun\-solaris2.5 yes yes yes yes yes ? +sparc\-sun\-solaris2.5.1 yes yes yes yes yes yes +sparc\-sun\-solaris2.6 yes yes yes yes yes yes +sparc\-sun\-solaris2.7 yes yes yes yes yes yes +sparc\-sun\-sunos4.1.1 yes yes yes n/a yes ? +sparc\-sun\-sunos4.1.3 yes yes yes n/a yes ? +sparc\-sun\-sunos4.1.3C yes yes yes n/a yes ? +sparc\-sun\-sunos4.1.3_U1 yes yes yes n/a yes ? +sparc\-sun\-sunos4.1.4 yes yes yes n/a yes ? +sparc\-unknown\-linux\-gnulibc1 yes yes yes n/a yes ? +sparc\-unknown\-netbsd1.2E yes yes yes ? ? ? +sparc\-unknown\-netbsd1.2G yes yes yes ? ? ? +sparc64\-unknown\-linux\-gnu yes yes yes n/a yes ? +.PP +See the `\fB\s-1INSTALL\s0\fR' in the distribution for more specific details on +building and/or configuring for some systems. +.SS "3 Mount Maps" +.IX Subsection "3 Mount Maps" +Amd has no built-in knowledge of machines or filesystems. External +\&\*(L"mount-maps\*(R" are used to provide the required information. +Specifically, Amd needs to know when and under what conditions it +should mount filesystems. +.PP +The map entry corresponding to the requested name contains a list of +possible locations from which to resolve the request. Each location +specifies filesystem type, information required by that filesystem (for +example the block special device in the case of \s-1UFS\s0), and some +information describing where to mount the filesystem (*note fs +Option::). A location may also contain \*(L"selectors\*(R" (see \*(L"Selectors\*(R"). +.PP +* Menu: +.PP +See also \*(L"Map Types\*(R" +.PP +See also \*(L"Key Lookup\*(R" +.PP +See also \*(L"Location Format\*(R" +.PP +\&\fB3.1 Map Types\fR +.PP +A mount-map provides the run-time configuration information to Amd. +Maps can be implemented in many ways. Some of the forms supported by +Amd are regular files, ndbm databases, \s-1NIS\s0 maps, the \*(L"Hesiod\*(R" name +server, and even the password file. +.PP +A mount-map \*(L"name\*(R" is a sequence of characters. When an automount +point is created a handle on the mount-map is obtained. For each map +type configured, Amd attempts to reference the map of the appropriate +type. If a map is found, Amd notes the type for future use and deletes +the reference, for example closing any open file descriptors. The +available maps are configured when Amd is built and can be displayed by +running the command `\fBamd \-v\fR'. +.PP +When using an Amd configuration file (see \*(L"Amd Configuration File\*(R") +and the keyword `\fBmap_type\fR' (see \*(L"map_type Parameter\*(R"), you may force +the map used to any type. +.PP +By default, Amd caches data in a mode dependent on the type of map. +This is the same as specifying `\fBcache:=mapdefault\fR' and selects a +suitable default cache mode depending on the map type. The individual +defaults are described below. The \s-1CACHE\s0 option can be specified on +automount points to alter the caching behavior (*note Automount +Filesystem::). +.PP +The following map types have been implemented, though some are not +available on all machines. Run the command `\fBamd \-v\fR' to obtain a list +of map types configured on your machine. +.PP +* Menu: +.PP +See also \*(L"File maps\*(R" +.PP +See also \*(L"ndbm maps\*(R" +.PP +See also \*(L"\s-1NIS\s0 maps\*(R" +.PP +See also \*(L"\s-1NIS+\s0 maps\*(R" +.PP +See also \*(L"Hesiod maps\*(R" +.PP +See also \*(L"Password maps\*(R" +.PP +See also \*(L"Union maps\*(R" +.PP +See also \*(L"\s-1LDAP\s0 maps\*(R" +.PP +\&\fB3.1.1 File maps\fR +.PP +When Amd searches a file for a map entry it does a simple scan of the +file and supports both comments and continuation lines. +.PP +Continuation lines are indicated by a backslash character (`\fB\e\fR') as +the last character of a line in the file. The backslash, newline +character _and any leading white space on the following line_ are +discarded. A maximum line length of 2047 characters is enforced after +continuation lines are read but before comments are stripped. Each +line must end with a newline character; that is newlines are +terminators, not separators. The following examples illustrate this: +.PP +key valA valB; \e +valC +.PP +specifies _three_ locations, and is identical to +.PP +key valA valB; valC +.PP +However, +.PP +key valA valB;\e +valC +.PP +specifies only _two_ locations, and is identical to +.PP +key valA valB;valC +.PP +After a complete line has been read from the file, including +continuations, Amd determines whether there is a comment on the line. +A comment begins with a hash ("`\fB#\fR'") character and continues to the end +of the line. There is no way to escape or change the comment lead-in +character. +.PP +Note that continuation lines and comment support \*(L"only\*(R" apply to +file maps, or ndbm maps built with the `\fBmk-amd-map\fR' program. +.PP +When caching is enabled, file maps have a default cache mode of +`\fBall\fR' (see \*(L"Automount Filesystem\*(R"). +.PP +\&\fB3.1.2 ndbm maps\fR +.PP +An ndbm map may be used as a fast access form of a file map. The +program, `\fBmk-amd-map\fR', converts a normal map file into an ndbm database. +This program supports the same continuation and comment conventions that +are provided for file maps. Note that ndbm format files may _not_ be +sharable across machine architectures. The notion of speed generally +only applies to large maps; a small map, less than a single disk block, +is almost certainly better implemented as a file map. +.PP +ndbm maps have a default cache mode of `\fBall\fR' (*note Automount +Filesystem::). +.PP +\&\fB3.1.3 \s-1NIS\s0 maps\fR +.PP +When using \s-1NIS \s0(formerly \s-1YP\s0), an Amd map is implemented directly by the +underlying \s-1NIS\s0 map. Comments and continuation lines are _not_ +supported in the automounter and must be stripped when constructing the +\&\s-1NIS\s0 server's database. +.PP +\&\s-1NIS\s0 maps have a default cache mode of `\fBall\fR' (*note Automount +Filesystem::). +.PP +The following rule illustrates what could be added to your \s-1NIS\s0 +`\fBMakefile\fR', in this case causing the `\fBamd.home\fR' map to be rebuilt: +$(\s-1YPTSDIR\s0)/amd.home.time: $(\s-1ETCDIR\s0)/amd.home +\&\-@sed \-e \*(L"s/#.*$$//\*(R" \-e \*(L"/^$$/d\*(R" $(\s-1ETCDIR\s0)/amd.home | \e +awk '{ \e +for (i = 1; i <= \s-1NF\s0; i++) \e +if (i == \s-1NF\s0) { \e +if (substr($$i, length($$i), 1) == \*(L"\e\e\*(R") \e +printf(\*(L"%s\*(R", substr($$i, 1, length($$i) \- 1)); \e +else \e +printf(\*(L"%s\en\*(R", $$i); \e +} \e +else \e +printf(\*(L"%s \*(R", $$i); \e +}' | \e +$(\s-1MAKEDBM\s0) \- $(\s-1YPDBDIR\s0)/amd.home; \e +touch $(\s-1YPTSDIR\s0)/amd.home.time; \e +echo \*(L"updated amd.home\*(R"; \e +if [ ! $(\s-1NOPUSH\s0) ]; then \e +$(\s-1YPPUSH\s0) amd.home; \e +echo \*(L"pushed amd.home\*(R"; \e +else \e +: ; \e +fi +.PP +Here `\fB$(\s-1YPTSDIR\s0)\fR' contains the time stamp files, and `\fB$(\s-1YPDBDIR\s0)\fR' +contains the dbm format \s-1NIS\s0 files. +.PP +\&\fB3.1.4 \s-1NIS+\s0 maps\fR +.PP +\&\s-1NIS+\s0 maps do not support cache mode `\fBall\fR' and, when caching is enabled, +have a default cache mode of `\fBinc\fR'. +.PP +\&\s-1XXX: FILL IN WITH AN EXAMPLE.\s0 +.PP +\&\fB3.1.5 Hesiod maps\fR +.PP +When the map name begins with the string `\fBhesiod.\fR' lookups are made +using the \*(L"Hesiod\*(R" name server. The string following the dot is used +as a name qualifier and is prepended with the key being located. The +entire string is then resolved in the `\fBautomount\fR' context, or the +amd.conf parameter `\fBhesiod_base\fR' (see \*(L"hesiod_base Parameter\*(R"). For +example, if the the key is `\fBjsp\fR' and map name is `\fBhesiod.homes\fR' then +\&\*(L"Hesiod\*(R" is asked to resolve `\fBjsp.homes.automount\fR'. +.PP +Hesiod maps do not support cache mode `\fBall\fR' and, when caching is +enabled, have a default cache mode of `\fBinc\fR' (*note Automount +Filesystem::). +.PP +The following is an example of a \*(L"Hesiod\*(R" map entry: +.PP +jsp.homes.automount \s-1HS TXT \s0\*(L"rfs:=/home/charm;rhost:=charm;sublink:=jsp\*(R" +njw.homes.automount \s-1HS TXT \s0\*(L"rfs:=/home/dylan/dk2;rhost:=dylan;sublink:=njw\*(R" +.PP +\&\fB3.1.6 Password maps\fR +.PP +The password map support is unlike the four previous map types. When +the map name is the string `\fB/etc/passwd\fR' Amd can lookup a user name in +the password file and re-arrange the home directory field to produce a +usable map entry. +.PP +Amd assumes the home directory has the format +`\fB/anydir/dom1/../domN/login\fR'. It breaks this string into a map entry +where `\fB${rfs}\fR' has the value `\fB/anydir/domN\fR', `\fB${rhost}\fR' has the value +`\fBdomN.....dom1\fR', and `\fB${sublink}\fR' has the value login. +.PP +Thus if the password file entry was +.PP +/home/achilles/jsp +.PP +the map entry used by Amd would be +.PP +rfs:=/home/achilles;rhost:=achilles;sublink:=jsp +.PP +Similarly, if the password file entry was +.PP +/home/cc/sugar/mjh +.PP +the map entry used by Amd would be +.PP +rfs:=/home/sugar;rhost:=sugar.cc;sublink:=jsp +.PP +\&\fB3.1.7 Union maps\fR +.PP +The union map support is provided specifically for use with the union +filesystem, see \*(L"Union Filesystem\*(R". +.PP +It is identified by the string `\fBunion:\fR' which is followed by a colon +separated list of directories. The directories are read in order, and +the names of all entries are recorded in the map cache. Later +directories take precedence over earlier ones. The union filesystem +type then uses the map cache to determine the union of the names in all +the directories. +.PP +\&\fB3.1.8 \s-1LDAP\s0 maps\fR +.PP +\&\s-1LDAP \s0(Lightweight Directory Access Protocol) maps do not support cache +mode `\fBall\fR' and, when caching is enabled, have a default cache mode of +`\fBinc\fR'. +.PP +For example, an Amd map `\fBamd.home\fR' that looks as follows: +.PP +/defaults opts:=rw,intr;type:=link +.PP +zing \-rhost:=shekel \e +host==shekel \e +host!=shekel;type:=nfs +when converted to \s-1LDAP \s0(see \*(L"amd2ldif\*(R"), will result in the +following \s-1LDAP\s0 database: +$ amd2ldif amd.home \s-1CUCS\s0 < amd.home +dn: cn=amdmap timestamp, \s-1CUCS\s0 +cn : amdmap timestamp +objectClass : amdmapTimestamp +amdmapTimestamp: 873071363 +.PP +dn: cn=amdmap amd.home[/defaults], \s-1CUCS\s0 +cn : amdmap amd.home[/defaults] +objectClass : amdmap +amdmapName : amd.home +amdmapKey : /defaults +amdmapValue : opts:=rw,intr;type:=link +.PP +dn: cn=amdmap amd.home[], \s-1CUCS\s0 +cn : amdmap amd.home[] +objectClass : amdmap +amdmapName : amd.home +amdmapKey : +amdmapValue : +.PP +dn: cn=amdmap amd.home[zing], \s-1CUCS\s0 +cn : amdmap amd.home[zing] +objectClass : amdmap +amdmapName : amd.home +amdmapKey : zing +amdmapValue : \-rhost:=shekel host==shekel host!=shekel;type:=nfs +.PP +\&\fB3.2 How keys are looked up\fR +.PP +The key is located in the map whose type was determined when the +automount point was first created. In general the key is a pathname +component. In some circumstances this may be modified by variable +expansion (see \*(L"Variable Expansion\*(R") and prefixing. If the automount +point has a prefix, specified by the \s-1PREF\s0 option, then that is +prepended to the search key before the map is searched. +.PP +If the map cache is a `\fBregexp\fR' cache then the key is treated as an +egrep-style regular expression, otherwise a normal string comparison is +made. +.PP +If the key cannot be found then a \*(L"wildcard\*(R" match is attempted. +Amd repeatedly strips the basename from the key, appends `\fB/*\fR' and +attempts a lookup. Finally, Amd attempts to locate the special key `\fB*\fR'. +.PP +For example, the following sequence would be checked if +`\fBhome/dylan/dk2\fR' was being located: +.PP +home/dylan/dk2 +home/dylan/* +home/* +* +.PP +At any point when a wildcard is found, Amd proceeds as if an exact +match had been found and the value field is then used to resolve the +mount request, otherwise an error code is propagated back to the kernel. +(see \*(L"Filesystem Types\*(R"). +.PP +\&\fB3.3 Location Format\fR +.PP +The value field from the lookup provides the information required to +mount a filesystem. The information is parsed according to the syntax +shown below. +.PP +location-list: +location-selection +location-list white-space || white-space location-selection +location-selection: +location +location-selection white-space location +location: +location-info +\&\-location\-info +\&\- +location-info: +sel-or-opt +location\-info;sel\-or\-opt +; +sel-or-opt: +selection +opt-ass +selection: +selector==value +selector!=value +opt-ass: +option:=value +white-space: +space +tab +.PP +Note that unquoted whitespace is not allowed in a location +description. White space is only allowed, and is mandatory, where +shown with non-terminal white-space. +.PP +A \*(L"location-selection\*(R" is a list of possible volumes with which to +satisfy the request. \*(L"location\-selection\*(R"s are separated by the `\fB||\fR' +operator. The effect of this operator is to prevent use of +location-selections to its right if any of the location-selections on +its left were selected whether or not any of them were successfully +mounted (see \*(L"Selectors\*(R"). +.PP +The location-selection, and singleton \*(L"location-list\*(R", +`\fBtype:=ufs;dev:=/dev/xd1g\fR' would inform Amd to mount a \s-1UFS\s0 filesystem +from the block special device `\fB/dev/xd1g\fR'. +.PP +The \*(L"sel-or-opt\*(R" component is either the name of an option required +by a specific filesystem, or it is the name of a built-in, predefined +selector such as the architecture type. The value may be quoted with +double quotes `\fB"\fR', for example `\fBtype:=\*(L"ufs\*(R";dev:=\*(L"/dev/xd1g\*(R"\fR'. These +quotes are stripped when the value is parsed and there is no way to get +a double quote into a value field. Double quotes are used to get white +space into a value field, which is needed for the program filesystem +(see \*(L"Program Filesystem\*(R"). +.PP +* Menu: +.PP +See also \*(L"Map Defaults\*(R" +.PP +See also \*(L"Variable Expansion\*(R" +.PP +See also \*(L"Selectors\*(R" +.PP +See also \*(L"Map Options\*(R" +.PP +\&\fB3.3.1 Map Defaults\fR +.PP +A location beginning with a dash `\fB\-\fR' is used to specify default values +for subsequent locations. Any previously specified defaults in the +location-list are discarded. The default string can be empty in which +case no defaults apply. +.PP +The location `\fB\-fs:=/mnt;opts:=ro\fR' would set the local mount point to +`\fB/mnt\fR' and cause mounts to be read-only by default. Defaults specified +this way are appended to, and so override, any global map defaults +given with `\fB/defaults\fR'). +.PP +\&\fB3.3.2 Variable Expansion\fR +.PP +To allow generic location specifications Amd does variable expansion on +each location and also on some of the option strings. Any option or +selector appearing in the form `\fB$\*(L"var\*(R"\fR' is replaced by the current +value of that option or selector. For example, if the value of +`\fB${key}\fR' was `\fBbin\fR', `\fB${autodir}\fR' was `\fB/a\fR' and `\fB${fs}\fR' was +`\fB${autodir}/local/${key}\fR' then after expansion `\fB${fs}\fR' would have the +value `\fB/a/local/bin\fR'. Any environment variable can be accessed in a +similar way. +.PP +Two pathname operators are available when expanding a variable. If +the variable name begins with `\fB/\fR' then only the last component of the +pathname is substituted. For example, if `\fB${path}\fR' was `\fB/foo/bar\fR' then +`\fB${/path}\fR' would be expanded to `\fBbar\fR'. Similarly, if the variable name +ends with `\fB/\fR' then all but the last component of the pathname is +substituted. In the previous example, `\fB${path/}\fR' would be expanded to +`\fB/foo\fR'. +.PP +Two domain name operators are also provided. If the variable name +begins with `\fB.\fR' then only the domain part of the name is substituted. +For example, if `\fB${rhost}\fR' was `\fBswan.doc.ic.ac.uk\fR' then `\fB${.rhost}\fR' +would be expanded to `\fBdoc.ic.ac.uk\fR'. Similarly, if the variable name +ends with `\fB.\fR' then only the host component is substituted. In the +previous example, `\fB${rhost.}\fR' would be expanded to `\fBswan\fR'. +.PP +Variable expansion is a two phase process. Before a location is +parsed, all references to selectors, eg `\fB${path}\fR', are expanded. The +location is then parsed, selections are evaluated and option assignments +recorded. If there were no selections or they all succeeded the +location is used and the values of the following options are expanded in +the order given: \s-1SUBLINK, RFS, FS, OPTS, REMOPTS, MOUNT\s0 and \s-1UNMOUNT.\s0 +.PP +Note that expansion of option values is done after \*(L"all\*(R" assignments +have been completed and not in a purely left to right order as is done +by the shell. This generally has the desired effect but care must be +taken if one of the options references another, in which case the +ordering can become significant. +.PP +There are two special cases concerning variable expansion: +.PP +1. before a map is consulted, any selectors in the name received from +the kernel are expanded. For example, if the request from the +kernel was for `\fB${arch}.bin\fR' and the machine architecture was +`\fBvax\fR', the value given to `\fB${key}\fR' would be `\fBvax.bin\fR'. +.PP +2. the value of `\fB${rhost}\fR' is expanded and normalized before the +other options are expanded. The normalization process strips any +local sub-domain components. For example, if `\fB${domain}\fR' was +`\fBBerkeley.EDU\fR' and `\fB${rhost}\fR' was initially `\fBsnow.Berkeley.EDU\fR', +after the normalization it would simply be `\fBsnow\fR'. Hostname +normalization is currently done in a _case\-dependent_ manner. +.PP +\&\fB3.3.3 Selectors\fR +.PP +Selectors are used to control the use of a location. It is possible to +share a mount map between many machines in such a way that filesystem +location, architecture and operating system differences are hidden from +the users. A selector of the form `\fBarch==sun3;os==sunos4\fR' would only +apply on Sun\-3s running SunOS 4.x. +.PP +Selectors can be negated by using `\fB!=\fR' instead of `\fB==\fR'. For example +to select a location on all non-Vax machines the selector `\fBarch!=vax\fR' +would be used. +.PP +Selectors are evaluated left to right. If a selector fails then that +location is ignored. Thus the selectors form a conjunction and the +locations form a disjunction. If all the locations are ignored or +otherwise fail then Amd uses the \*(L"error\*(R" filesystem (*note Error +Filesystem::). This is equivalent to having a location `\fBtype:=error\fR' +at the end of each mount-map entry. +.PP +The default value of many of the selectors listed here can be +overridden by an Amd command line switch or in an Amd configuration +file. see \*(L"Amd Configuration File\*(R". +.PP +These are the selectors currently implemented. +.PP +* Menu: +.PP +See also \*(L"arch Selector Variable\*(R" +.PP +See also \*(L"autodir Selector Variable\*(R" +.PP +See also \*(L"byte Selector Variable\*(R" +.PP +See also \*(L"cluster Selector Variable\*(R" +.PP +See also \*(L"domain Selector Variable\*(R" +.PP +See also \*(L"host Selector Variable\*(R" +.PP +See also \*(L"hostd Selector Variable\*(R" +.PP +See also \*(L"karch Selector Variable\*(R" +.PP +See also \*(L"os Selector Variable\*(R" +.PP +See also \*(L"osver Selector Variable\*(R" +.PP +See also \*(L"full_os Selector Variable\*(R" +.PP +See also \*(L"vendor Selector Variable\*(R" +.PP +See also \*(L"key Selector Variable\*(R" +.PP +See also \*(L"map Selector Variable\*(R" +.PP +See also \*(L"netnumber Selector Variable\*(R" +.PP +See also \*(L"network Selector Variable\*(R" +.PP +See also \*(L"path Selector Variable\*(R" +.PP +See also \*(L"wire Selector Variable\*(R" +.PP +See also \*(L"exists Selector Function\*(R" +.PP +See also \*(L"false Selector Function\*(R" +.PP +See also \*(L"netgrp Selector Function\*(R" +.PP +See also \*(L"netgrpd Selector Function\*(R" +.PP +See also \*(L"in_network Selector Function\*(R" +.PP +See also \*(L"true Selector Function\*(R" +.PP +\&\fB3.3.3.1 arch Selector Variable\fR +.PP +The machine architecture which was automatically determined at compile +time. The architecture type can be displayed by running the command +`\fBamd \-v\fR'. see \*(L"Supported Platforms\*(R". +.PP +\&\fB3.3.3.2 autodir Selector Variable\fR +.PP +The default directory under which to mount filesystems. This may be +changed by the `\fB\-a\fR' command line option. see \*(L"fs Option\*(R". +.PP +\&\fB3.3.3.3 byte Selector Variable\fR +.PP +The machine's byte ordering. This is either `\fBlittle\fR', indicating +little-endian, or `\fBbig\fR', indicating big-endian. One possible use is to +share `\fBrwho\fR' databases (see \*(L"rwho servers\*(R"). Another is to share +ndbm databases, however this use can be considered a courageous +juggling act. +.PP +\&\fB3.3.3.4 cluster Selector Variable\fR +.PP +This is provided as a hook for the name of the local cluster. This can +be used to decide which servers to use for copies of replicated +filesystems. `\fB${cluster}\fR' defaults to the value of `\fB${domain}\fR' unless +a different value is set with the `\fB\-C\fR' command line option. +.PP +\&\fB3.3.3.5 domain Selector Variable\fR +.PP +The local domain name as specified by the `\fB\-d\fR' command line option. +see \*(L"host Selector Variable\*(R". +.PP +\&\fB3.3.3.6 host Selector Variable\fR +.PP +The local hostname as determined by \fIgethostname\fR\|(2). If no domain name +was specified on the command line and the hostname contains a period +`\fB.\fR' then the string before the period is used as the host name, and the +string after the period is assigned to `\fB${domain}\fR'. For example, if +the hostname is `\fBstyx.doc.ic.ac.uk\fR' then `\fBhost\fR' would be `\fBstyx\fR' and +`\fBdomain\fR' would be `\fBdoc.ic.ac.uk\fR'. `\fBhostd\fR' would be `\fBstyx.doc.ic.ac.uk\fR'. +.PP +\&\fB3.3.3.7 hostd Selector Variable\fR +.PP +This resolves to the `\fB${host}\fR' and `\fB${domain}\fR' concatenated with a `\fB.\fR' +inserted between them if required. If `\fB${domain}\fR' is an empty string +then `\fB${host}\fR' and `\fB${hostd}\fR' will be identical. +.PP +\&\fB3.3.3.8 karch Selector Variable\fR +.PP +This is provided as a hook for the kernel architecture. This is used on +SunOS 4 and SunOS 5, for example, to distinguish between different +`\fB/usr/kvm\fR' volumes. `\fB${karch}\fR' defaults to the \*(L"machine\*(R" value gotten +from \fIuname\fR\|(2). If the \fIuname\fR\|(2) system call is not available, the value +of `\fB${karch}\fR' defaults to that of `\fB${arch}\fR'. Finally, a different +value can be set with the `\fB\-k\fR' command line option. +.PP +\&\fB3.3.3.9 os Selector Variable\fR +.PP +The operating system. Like the machine architecture, this is +automatically determined at compile time. The operating system name can +be displayed by running the command `\fBamd \-v\fR'. *Note Supported +Platforms::. +.PP +\&\fB3.3.3.10 osver Selector Variable\fR +.PP +The operating system version. Like the machine architecture, this is +automatically determined at compile time. The operating system name can +be displayed by running the command `\fBamd \-v\fR'. *Note Supported +Platforms::. +.PP +\&\fB3.3.3.11 full_os Selector Variable\fR +.PP +The full name of the operating system, including its version. This +value is automatically determined at compile time. The full operating +system name and version can be displayed by running the command `amd +\&\-v'. see \*(L"Supported Platforms\*(R". +.PP +\&\fB3.3.3.12 vendor Selector Variable\fR +.PP +The name of the vendor of the operating system. This value is +automatically determined at compile time. The name of the vendor can be +displayed by running the command `\fBamd \-v\fR'. see \*(L"Supported Platforms\*(R". +.PP +The following selectors are also provided. Unlike the other +selectors, they vary for each lookup. Note that when the name from the +kernel is expanded prior to a map lookup, these selectors are all +defined as empty strings. +.PP +\&\fB3.3.3.13 key Selector Variable\fR +.PP +The name being resolved. For example, if `\fB/home\fR' is an automount +point, then accessing `\fB/home/foo\fR' would set `\fB${key}\fR' to the string +`\fBfoo\fR'. The key is prefixed by the \s-1PREF\s0 option set in the parent mount +point. The default prefix is an empty string. If the prefix was +`\fBblah/\fR' then `\fB${key}\fR' would be set to `\fBblah/foo\fR'. +.PP +\&\fB3.3.3.14 map Selector Variable\fR +.PP +The name of the mount map being used. +.PP +\&\fB3.3.3.15 netnumber Selector Variable\fR +.PP +This selector is identical to the `\fBin_network\fR' selector function, see +see \*(L"in_network Selector Function\*(R". It will match either the name or +number of any network interface on which this host is connected to. +The names and numbers of all attached interfaces are available from the +output of `\fBamd \-v\fR'. +.PP +\&\fB3.3.3.16 network Selector Variable\fR +.PP +This selector is identical to the `\fBin_network\fR' selector function, see +see \*(L"in_network Selector Function\*(R". It will match either the name or +number of any network interface on which this host is connected to. +The names and numbers of all attached interfaces are available from the +output of `\fBamd \-v\fR'. +.PP +\&\fB3.3.3.17 path Selector Variable\fR +.PP +The full pathname of the name being resolved. For example `\fB/home/foo\fR' +in the example above. +.PP +\&\fB3.3.3.18 wire Selector Variable\fR +.PP +This selector is identical to the `\fBin_network\fR' selector function, see +see \*(L"in_network Selector Function\*(R". It will match either the name or +number of any network interface on which this host is connected to. +The names and numbers of all attached interfaces are available from the +output of `\fBamd \-v\fR'. +.PP +The following boolean functions are selectors which take an argument +\&\s-1ARG. \s0 They return a value of true or false, and thus do not need to be +compared with a value. Each of these may be negated by prepending `\fB!\fR' +to their name. +.PP +\&\fB3.3.3.19 exists Selector Function\fR +.PP +If the file listed by \s-1ARG\s0 exists (via \fIlstat\fR\|(2)), this function +evaluates to true. Otherwise it evaluates to false. +.PP +\&\fB3.3.3.20 false Selector Function\fR +.PP +Always evaluates to false. \s-1ARG\s0 is ignored. +.PP +\&\fB3.3.3.21 netgrp Selector Function\fR +.PP +If the current host as determined by the value of `\fB${host}\fR' (e.g., +short host name) is a member of the netgroup \s-1ARG,\s0 this selector +evaluates to true. Otherwise it evaluates to false. +.PP +For example, suppose you have a netgroup `\fBppp-hosts\fR', and for +reasons of performance, these have a local `\fB/home\fR' partition, while all +other clients on the faster network can access a shared home directory. +A common map to use for both might look like the following: +.PP +home/* netgrp(ppp\-hosts);type:=link;fs:=/local/${key} \e +!netgrp(ppp\-hosts);type:=nfs;rhost:=serv1;rfs:=/remote/${key} +.PP +\&\fB3.3.3.22 netgrpd Selector Function\fR +.PP +If the current host as determined by the value of `\fB${hostd}\fR' is a +member of the netgroup \s-1ARG,\s0 this selector evaluates to true. Otherwise +it evaluates to false. +.PP +The `\fBnetgrpd\fR' function uses fully-qualified host names (`\fB${hostd}\fR') +to match netgroup names, while the `\fBnetgrp\fR' function (*note netgrp +Selector Function::) uses short host names (`\fB${host}\fR'). +.PP +\&\fB3.3.3.23 in_network Selector Function\fR +.PP +If the current host has any network interface that is locally attached +to the network specified in \s-1ARG \s0(either via name or number), this +selector evaluates to true. Otherwise it evaluates to false. +.PP +For example, suppose you have two servers that have an exportable +`\fB/opt\fR' that smaller clients can \s-1NFS\s0 mount. The two servers are say, +`\fBserv1\fR' on network `\fBfoo\-net.site.com\fR' and `\fBserv2\fR' on network +`\fB123.4.5.0\fR'. You can write a map to be used by all clients that will +attempt to mount the closest one as follows: +.PP +opt in_network(foo\-net.site.com);rhost:=serv1;rfs:=/opt \e +in_network(123.4.5.0);rhost:=serv2;rfs:=/opt \e +rhost:=fallback\-server +.PP +\&\fB3.3.3.24 true Selector Function\fR +.PP +Always evaluates to true. \s-1ARG\s0 is ignored. +.PP +\&\fB3.3.4 Map Options\fR +.PP +Options are parsed concurrently with selectors. The difference is that +when an option is seen the string following the `\fB:=\fR' is recorded for +later use. As a minimum the \s-1TYPE\s0 option must be specified. Each +filesystem type has other options which must also be specified. *Note +Filesystem Types::, for details on the filesystem specific options. +.PP +Superfluous option specifications are ignored and are not reported +as errors. +.PP +The following options apply to more than one filesystem type. +.PP +* Menu: +.PP +See also \*(L"addopts Option\*(R" +.PP +See also \*(L"delay Option\*(R" +.PP +See also \*(L"fs Option\*(R" +.PP +See also \*(L"opts Option\*(R" +.PP +See also \*(L"remopts Option\*(R" +.PP +See also \*(L"sublink Option\*(R" +.PP +See also \*(L"type Option\*(R" +.PP +\&\fB3.3.4.1 addopts Option\fR +.PP +This option adds additional options to default options normally +specified in the `\fB/defaults\fR' entry or the defaults of the key entry +being processed (see \*(L"opts Option\*(R"). Normally when you specify +`\fBopts\fR' in both the `\fB/defaults\fR' and the map entry, the latter overrides +the former completely. But with `\fBaddopts\fR' it will append the options +and override any conflicting ones. +.PP +`\fBaddopts\fR' also overrides the value of the `\fBremopts\fR' option (*note +remopts Option::), which unless specified defaults to the value of +`\fBopts\fR'. +.PP +Options which start with `\fBno\fR' will override those with the same name +that do not start with `\fBno\fR' and vice verse. Special handling is given +to inverted options such as `\fBsoft\fR' and `\fBhard\fR', `\fBbg\fR' and `\fBfg\fR', `\fBro\fR' and +`\fBrw\fR', etc. +.PP +For example, if the default options specified were +opts:=rw,nosuid,intr,rsize=1024,wsize=1024,quota,posix +.PP +and the ones specified in a map entry were +.PP +addopts:=grpid,suid,ro,rsize=2048,quota,nointr +.PP +then the actual options used would be +.PP +wsize=1024,posix,grpid,suid,ro,rsize=2048,quota,nointr +.PP +\&\fB3.3.4.2 delay Option\fR +.PP +The delay, in seconds, before an attempt will be made to mount from the +current location. Auxiliary data, such as network address, file handles +and so on are computed regardless of this value. +.PP +A delay can be used to implement the notion of primary and secondary +file servers. The secondary servers would have a delay of a few +seconds, thus giving the primary servers a chance to respond first. +.PP +\&\fB3.3.4.3 fs Option\fR +.PP +The local mount point. The semantics of this option vary between +filesystems. +.PP +For \s-1NFS\s0 and \s-1UFS\s0 filesystems the value of `\fB${fs}\fR' is used as the +local mount point. For other filesystem types it has other meanings +which are described in the section describing the respective filesystem +type. It is important that this string uniquely identifies the +filesystem being mounted. To satisfy this requirement, it should +contain the name of the host on which the filesystem is resident and the +pathname of the filesystem on the local or remote host. +.PP +The reason for requiring the hostname is clear if replicated +filesystems are considered. If a fileserver goes down and a +replacement filesystem is mounted then the \*(L"local\*(R" mount point \*(L"must\*(R" +be different from that of the filesystem which is hung. Some encoding +of the filesystem name is required if more than one filesystem is to be +mounted from any given host. +.PP +If the hostname is first in the path then all mounts from a +particular host will be gathered below a single directory. If that +server goes down then the hung mount points are less likely to be +accidentally referenced, for example when \fIgetcwd\fR\|(3) traverses the +namespace to find the pathname of the current directory. +.PP +The `\fBfs\fR' option defaults to `\fB${autodir}/${rhost}${rfs}\fR'. In +addition, `\fBrhost\fR' defaults to the local host name (`\fB${host}\fR') and `\fBrfs\fR' +defaults to the value of `\fB${path}\fR', which is the full path of the +requested file; `\fB/home/foo\fR' in the example above (see \*(L"Selectors\*(R"). +`\fB${autodir}\fR' defaults to `\fB/a\fR' but may be changed with the `\fB\-a\fR' command +line option. Sun's automounter defaults to `\fB/tmp_mnt\fR'. Note that +there is no `\fB/\fR' between the `\fB${rhost}\fR' and `\fB${rfs}\fR' since `\fB${rfs}\fR' +begins with a `\fB/\fR'. +.PP +\&\fB3.3.4.4 opts Option\fR +.PP +The options to pass to the mount system call. A leading `\fB\-\fR' is +silently ignored. The mount options supported generally correspond to +those used by \fImount\fR\|(8) and are listed below. Some additional +pseudo-options are interpreted by Amd and are also listed. +.PP +Unless specifically overridden, each of the system default mount +options applies. Any options not recognized are ignored. If no +options list is supplied the string `\fBrw,defaults\fR' is used and all the +system default mount options apply. Options which are not applicable +for a particular operating system are silently ignored. For example, +only 4.4BSD is known to implement the `\fBcompress\fR' and `\fBspongy\fR' options. +.PP +`\fBacdirmax=N\fR' +Set the maximum directory attribute cache timeout to N. +.PP +`\fBacdirmin=N\fR' +Set the minimum directory attribute cache timeout to N. +.PP +`\fBacregmax=N\fR' +Set the maximum file attribute cache timeout to N. +.PP +`\fBacregmin=N\fR' +Set the minimum file attribute cache timeout to N. +.PP +`\fBactimeo=N\fR' +Set the overall attribute cache timeout to N. +.PP +`\fBauto\fR' +`\fBignore\fR' +Ignore this mount by \fIdf\fR\|(1). +.PP +`\fBcache\fR' +Allow data to be cached from a remote server for this mount. +.PP +`\fBcompress\fR' +Use \s-1NFS\s0 compression protocol. +.PP +`\fBdefperm\fR' +Ignore the permission mode bits, and default file permissions to +0555, \s-1UID 0,\s0 and \s-1GID 0. \s0 Useful for CD-ROMs formatted as \s-1ISO\-9660.\s0 +.PP +`\fBdev\fR' +Allow local special devices on this filesystem. +.PP +`\fBdumbtimr\fR' +Turn off the dynamic retransmit timeout estimator. This may be +useful for \s-1UDP\s0 mounts that exhibit high retry rates, since it is +possible that the dynamically estimated timeout interval is too +short. +.PP +`\fBextatt\fR' +Enable extended attributes in \s-1ISO\-9660\s0 file systems. +.PP +`\fBfsid\fR' +Set \s-1ID\s0 of filesystem. +.PP +`\fBgens\fR' +Enable generations in \s-1ISO\-9660\s0 file systems. Generations allow +you to see all versions of a given file. +.PP +`\fBgrpid\fR' +Use \s-1BSD\s0 directory group-id semantics. +.PP +`\fBint\fR' +`\fBintr\fR' +Allow keyboard interrupts on hard mounts. +.PP +`\fBmulti\fR' +Perform multi-component lookup on files. +.PP +`\fBmaxgroups\fR' +Set the maximum number of groups to allow for this mount. +.PP +`\fBnfsv3\fR' +Use \s-1NFS\s0 Version 3 for this mount. +.PP +`\fBnoac\fR' +Turn off the attribute cache. +.PP +`\fBnoauto\fR' +This option is used by the mount command in `\fB/etc/fstab\fR' or +`\fB/etc/vfstab\fR' and means not to mount this file system when mount \-a +is used. +.PP +`\fBnocache\fR' +Do not allow data to be cached from a remote server for this mount. +.PP +`\fBnoconn\fR' +Don't make a connection on datagram transports. +.PP +`\fBnocto\fR' +No close-to-open consistency. +.PP +`\fBnodefperm\fR' +Do not ignore the permission mode bits. Useful for CD-ROMS +formatted as \s-1ISO\-9660.\s0 +.PP +`\fBnodev\fR' +`\fBnodevs\fR' +Don't allow local special devices on this filesystem. +.PP +`\fBnoint\fR' +Do not allow keyboard interrupts for this mount +.PP +`\fBnorrip\fR' +Turn off using of the Rock Ridge Interchange Protocol (\s-1RRIP\s0) +extensions to \s-1ISO\-9660.\s0 +.PP +`\fBnosub\fR' +Disallow mounts beneath this mount. +.PP +`\fBnosuid\fR' +Don't allow set-uid or set-gid executables on this filesystem. +.PP +`\fBnoversion\fR' +Strip the extension `\fB;#\fR' from the version string of files recorded +on an \s-1ISO\-9660\s0 CD-ROM. +.PP +`\fBoverlay\fR' +Overlay this mount on top of an existing mount, if any. +.PP +`\fBpgthresh=N\fR' +Set the paging threshold to N kilobytes. +.PP +`\fBport=N\fR' +Set the \s-1NFS\s0 port to N. +.PP +`\fBposix\fR' +Turn on \s-1POSIX\s0 static pathconf for mounts. +.PP +`\fBproto=S\fR' +Use transport protocol S for \s-1NFS \s0(can be `\fB\*(L"tcp\*(R"\fR' or `\fB\*(L"udp\*(R"\fR'). +.PP +`\fBquota\fR' +Enable quota checking on this mount. +.PP +`\fBrdonly\fR' +`\fBro\fR' +Mount this filesystem readonly. +.PP +`\fBresvport\fR' +Use a reserved port (smaller than 1024) for remote \s-1NFS\s0 mounts. +Most systems assume that, but some allow for mounts to occur on +non-reserved ports. This causes problems when such a system +tries to \s-1NFS\s0 mount one that requires reserved ports. It is +recommended that this option always be on. +.PP +`\fBretrans=n\fR' +The number of \s-1NFS\s0 retransmits made before a user error is +generated by a `\fBsoft\fR' mounted filesystem, and before a `\fBhard\fR' +mounted filesystem reports `\s-1NFS\s0 server \*(L"yoyo\*(R" not responding still +trying'. +.PP +`\fBretry\fR' +Set the \s-1NFS\s0 retry counter. +.PP +`\fBrrip\fR' +Uses the Rock Ridge Interchange Protocol (\s-1RRIP\s0) extensions to +\&\s-1ISO\-9660.\s0 +.PP +`\fBrsize=N\fR' +The \s-1NFS\s0 read packet size. You may need to set this if you are +using \s-1NFS/UDP\s0 through a gateway or a slow link. +.PP +`\fBrw\fR' +Allow reads and writes on this filesystem. +.PP +`\fBsoft\fR' +Give up after \*(L"retrans\*(R" retransmissions. +.PP +`\fBspongy\fR' +Like `\fBsoft\fR' for status requests, and `\fBhard\fR' for data transfers. +.PP +`\fBsuid\fR' +Allow set-uid programs on this mount. +.PP +`\fBsymttl\fR' +Turn of the symbolic link cache time-to-live. +.PP +`\fBsync\fR' +Perform synchronous filesystem operations on this mount. +.PP +`\fBtcp\fR' +Use \s-1TCP/IP\s0 instead of \s-1UDP/IP,\s0 ignored if the \s-1NFS\s0 implementation +does not support \s-1TCP/IP\s0 mounts. +.PP +`\fBtimeo=N\fR' +The \s-1NFS\s0 timeout, in tenth-seconds, before a request is +retransmitted. +.PP +`\fBvers=N\fR' +Use \s-1NFS\s0 protocol version number N (can be 2 or 3). +.PP +`\fBwsize=N\fR' +The \s-1NFS\s0 write packet size. You may need to set this if you are +using \s-1NFS/UDP\s0 through a gateway or a slow link. +.PP +The following options are implemented by Amd, rather than being +passed to the kernel. +.PP +`\fBnounmount\fR' +Configures the mount so that its time-to-live will never expire. +This is also the default for some filesystem types. +.PP +`\fBping=N\fR' +The interval, in seconds, between keep-alive pings. When four +consecutive pings have failed the mount point is marked as hung. +This interval defaults to 30 seconds. If the ping interval is +less than zero, no pings are sent and the host is assumed to be +always up. By default, pings are not sent for an \s-1NFS/TCP\s0 mount. +.PP +`\fBretry=N\fR' +The number of times to retry the mount system call. +.PP +`\fButimeout=N\fR' +The interval, in seconds, by which the mount's time-to-live is +extended after an unmount attempt has failed. In fact the +interval is extended before the unmount is attempted to avoid +thrashing. The default value is 120 seconds (two minutes) or as +set by the `\fB\-w\fR' command line option. +.PP +\&\fB3.3.4.5 remopts Option\fR +.PP +This option has the same use as `\fB${opts}\fR' but applies only when the +remote host is on a non-local network. For example, when using \s-1NFS\s0 +across a gateway it is often necessary to use smaller values for the +data read and write sizes. This can simply be done by specifying the +small values in \s-1REMOPTS. \s0 When a non-local host is accessed, the +smaller sizes will automatically be used. +.PP +Amd determines whether a host is local by examining the network +interface configuration at startup. Any interface changes made after +Amd has been started will not be noticed. The likely effect will be +that a host may incorrectly be declared non-local. +.PP +Unless otherwise set, the value of `\fB${remopts}\fR' is the same as the +value of `\fB${opts}\fR'. +.PP +\&\fB3.3.4.6 sublink Option\fR +.PP +The subdirectory within the mounted filesystem to which the reference +should point. This can be used to prevent duplicate mounts in cases +where multiple directories in the same mounted filesystem are used. +.PP +\&\fB3.3.4.7 type Option\fR +.PP +The filesystem type to be used. see \*(L"Filesystem Types\*(R", for a full +description of each type. +.SS "4 Amd Command Line Options" +.IX Subsection "4 Amd Command Line Options" +Many of Amd's parameters can be set from the command line. The command +line is also used to specify automount points and maps. +.PP +The general format of a command line is +.PP +amd [options] [{ directory map-name [\-map\-options] } ...] +.PP +For each directory and map-name given or specified in the `\fBamd.conf\fR' +file, Amd establishes an automount point. The \*(L"map-options\*(R" may be any +sequence of options or selectors\*(--see \*(L"Location Format\*(R". The +\&\*(L"map-options\*(R" apply only to Amd's mount point. +.PP +`\fBtype:=toplvl;cache:=mapdefault;fs:=${map}\fR' is the default value for +the map options. Default options for a map are read from a special +entry in the map whose key is the string `\fB/defaults\fR'. When default +options are given they are prepended to any options specified in the +mount-map locations as explained in see \*(L"Map Defaults\*(R". +.PP +The \*(L"options\*(R" are any combination of those listed below. +.PP +Once the command line has been parsed, the automount points are +mounted. The mount points are created if they do not already exist, in +which case they will be removed when Amd exits. Finally, Amd +disassociates itself from its controlling terminal and forks into the +background. +.PP +Note: Even if Amd has been built with `\fB\-DDEBUG\fR' (via `configure +\&\-\-enable\-debug'), it will still background itself and disassociate +itself from the controlling terminal. To use a debugger it is +necessary to specify `\fB\-D nodaemon\fR' on the command line. However, even +with all of this, mounts and unmounts are performed in the background, +and Amd will always fork before doing them. Therefore, debugging what +happens closely during un/mounts is more challenging. +.PP +_All_ of Amd's command options (save `\fB\-F\fR' and `\fB\-T\fR') can be specified +in the `\fBamd.conf\fR' file. see \*(L"Amd Configuration File\*(R". If Amd is +invoked without any command line options, it will default to using the +configuration file `\fB/etc/amd.conf\fR', if one exists. +.PP +* Menu: +.PP +Automount directory.: see \*(L"\-a Option\*(R" +.PP +Cache timeout interval.: see \*(L"\-c Option\*(R" +.PP +Domain name.: see \*(L"\-d Option\*(R" +.PP +Kernel architecture.: see \*(L"\-k Option\*(R" +.PP +Log file.: see \*(L"\-l Option\*(R" +.PP +Hostname normalization.: see \*(L"\-n Option\*(R" +.PP +Operating system version.: see \*(L"\-o Option\*(R" +.PP +Output process id.: see \*(L"\-p Option\*(R" +.PP +Restart existing mounts.: see \*(L"\-r Option\*(R" +.PP +Kernel \s-1RPC\s0 timeout.: see \*(L"\-t Option\*(R" +.PP +Version information.: see \*(L"\-v Option\*(R" +.PP +Wait interval after failed unmount.: see \*(L"\-w Option\*(R" +.PP +Log options.: see \*(L"\-x Option\*(R" +.PP +\&\s-1NIS\s0 domain.: see \*(L"\-y Option\*(R" +.PP +Cluster name.: see \*(L"\-C\-Option\*(R" +.PP +Debug flags.: see \*(L"\-D\-Option\*(R" +.PP +Amd configuration file.: see \*(L"\-F Option\*(R" +.PP +Show brief help.: see \*(L"\-H Option\*(R" +.PP +Operating system name.: see \*(L"\-O\-Option\*(R" +.PP +Lock executable pages in memory.: see \*(L"\-S Option\*(R" +.PP +Set tag for configuration file.: see \*(L"\-T\-Option\*(R" +.PP +\&\fB4.1 `\-a' \s-1DIRECTORY\s0\fR +.PP +Specifies the default mount directory. This option changes the variable +`\fB${autodir}\fR' which otherwise defaults to `\fB/a\fR'. For example, some sites +prefer `\fB/amd\fR' or `\fB/n\fR'. +.PP +amd \-a /amd ... +.PP +\&\fB4.2 `\-c' CACHE-INTERVAL\fR +.PP +Selects the period, in seconds, for which a name is cached by Amd. If +no reference is made to the volume in this period, Amd discards the +volume name to filesystem mapping. +.PP +Once the last reference to a filesystem has been removed, Amd +attempts to unmount the filesystem. If the unmount fails the interval +is extended by a further period as specified by the `\fB\-w\fR' command line +option or by the `\fButimeout\fR' mount option. +.PP +The default \*(L"cache-interval\*(R" is 300 seconds (five minutes). +.PP +\&\fB4.3 `\-d' \s-1DOMAIN\s0\fR +.PP +Specifies the host's domain. This sets the internal variable +`\fB${domain}\fR' and affects the `\fB${hostd}\fR' variable. +.PP +If this option is not specified and the hostname already contains the +local domain then that is used, otherwise the default value of +`\fB${domain}\fR' is `\fBunknown.domain\fR'. +.PP +For example, if the local domain was `\fBdoc.ic.ac.uk\fR', Amd could be +started as follows: +.PP +amd \-d doc.ic.ac.uk ... +.PP +\&\fB4.4 `\-k' KERNEL-ARCHITECTURE\fR +.PP +Specifies the kernel architecture of the system. This is usually the +output of `\fBuname \-m\fR' (the \*(L"machine\*(R" value gotten from \fIuname\fR\|(2)). If +the \fIuname\fR\|(2) system call is not available, the value of `\fB${karch}\fR' +defaults to that of `\fB${arch}\fR'. +.PP +The only effect of this option is to set the variable `\fB${karch}\fR'. +.PP +This option would be used as follows: +.PP +amd \-k `arch \-k` ... +.PP +\&\fB4.5 `\-l' LOG-OPTION\fR +.PP +Selects the form of logging to be made. Several special \*(L"log-options\*(R" +are recognized. +.PP +1. If \*(L"log-option\*(R" is the string `\fBsyslog\fR', Amd will use the \fIsyslog\fR\|(3) +mechanism. If your system supports syslog facilities, then the +default facility used is `\fB\s-1LOG_DAEMON\s0\fR'. +.PP +2. When using syslog, if you wish to change the facility, append its +name to the log option name, delimited by a single colon. For +example, if \*(L"log-options\*(R" is the string `\fBsyslog:local7\fR' then Amd +will log messages via \fIsyslog\fR\|(3) using the `\fB\s-1LOG_LOCAL7\s0\fR' facility. +If the facility name specified is not recognized, Amd will default +to `\fB\s-1LOG_DAEMON\s0\fR'. Note: while you can use any syslog facility +available on your system, it is generally a bad idea to use those +reserved for other services such as `\fBkern\fR', `\fBlpr\fR', `\fBcron\fR', etc. +.PP +3. If \*(L"log-option\*(R" is the string `\fB/dev/stderr\fR', Amd will use standard +error, which is also the default target for log messages. To +implement this, Amd simulates the effect of the `\fB/dev/fd\fR' driver. +.PP +Any other string is taken as a filename to use for logging. Log +messages are appended to the file if it already exists, otherwise a new +file is created. The file is opened once and then held open, rather +than being re-opened for each message. +.PP +Normally, when long-running daemons hold an open file descriptor on a +log file, it is impossible to \*(L"rotate\*(R" the log file and compress older +logs on a daily basis. The daemon needs to be told to discard (via +\&\fIclose\fR\|(2)) its file handle, and re-open the log file. This is done +using `\fBamq \-l\fR' log-option. see \*(L"Amq \-l option\*(R". +.PP +If the `\fBsyslog\fR' option is specified but the system does not support +syslog or if the named file cannot be opened or created, Amd will use +standard error. Error messages generated before Amd has finished +parsing the command line are printed on standard error. +.PP +Since Amd tends to generate a lot of logging information (especially +if debugging was turned on), and due to it being an important program +running on the system, it is usually best to log to a separate disk +file. In that case Amd would be started as follows: +.PP +amd \-l /var/log/amd ... +.PP +\&\fB4.6 `\-n'\fR +.PP +Normalizes the remote hostname before using it. Normalization is done +by replacing the value of `\fB${rhost}\fR' with the (generally fully +qualified) primary name returned by a hostname lookup. +.PP +This option should be used if several names are used to refer to a +single host in a mount map. +.PP +\&\fB4.7 `\-o' OP-SYS-VER\fR +.PP +Overrides the compiled-in version number of the operating system, with +OP-SYS-VER. Useful when the built-in version is not desired for +backward compatibility reasons. For example, if the built-in version is +`\fB2.5.1\fR', you can override it to `\fB5.5.1\fR', and use older maps that were +written with the latter in mind. +.PP +\&\fB4.8 `\-p'\fR +.PP +Causes Amd's process id to be printed on standard output. This can be +redirected to a suitable file for use with kill: +.PP +amd \-p > /var/run/amd.pid ... +.PP +This option only has an affect if Amd is running in daemon mode. If +Amd is started with the `\fB\-D nodaemon\fR' debug flag, this option is +ignored. +.PP +\&\fB4.9 `\-r'\fR +.PP +Tells Amd to restart existing mounts (see \*(L"Inheritance Filesystem\*(R"). +.PP +\&\fB4.10 `\-t' \s-1TIMEOUT.RETRANSMIT\s0\fR +.PP +Specifies the \s-1RPC \s0\*(L"timeout\*(R" interval and the \*(L"retransmit\*(R" counter used +by the kernel to communicate to Amd. These are used to set the `\fBtimeo\fR' +and `\fBretrans\fR' mount options, respectively. The default timeout is 0.8 +seconds, and the default number of retransmissions is 11. +.PP +Amd relies on the kernel \s-1RPC\s0 retransmit mechanism to trigger mount +retries. The values of these parameters change the overall retry +interval. Too long an interval gives poor interactive response; too +short an interval causes excessive retries. +.PP +\&\fB4.11 `\-v'\fR +.PP +Print version information on standard error and then exit. The output +is of the form: +.PP +Copyright (c) 1997\-1999 Erez Zadok +Copyright (c) 1990 Jan-Simon Pendry +Copyright (c) 1990 Imperial College of Science, Technology & Medicine +Copyright (c) 1990 The Regents of the University of California. +am-utils version 6.0a15 (build 61). +Built by ezk@cs.columbia.edu on date Wed Oct 22 15:21:03 \s-1EDT 1997.\s0 +cpu=sparc (big-endian), arch=sun4, karch=sun4u. +full_os=solaris2.5.1, os=sos5, osver=5.5.1, vendor=sun. +Map support for: root, passwd, union, nisplus, nis, ndbm, file, error. +\&\s-1AMFS:\s0 nfs, link, nfsx, nfsl, host, linkx, program, union, inherit, +ufs, lofs, hsfs, pcfs, auto, direct, toplvl, error. +\&\s-1FS:\s0 autofs, cachefs, cdfs, lofs, nfs, nfs3, pcfs, tfs, tmpfs, ufs. +Network 1: wire=\*(L"mcl\-lab\-net.cs.columbia.edu\*(R" (netnumber=128.59.13). +Network 2: wire=\*(L"14\-net.cs.columbia.edu\*(R" (netnumber=128.59.14). +Network 3: wire=\*(L"old\-net.cs.columbia.edu\*(R" (netnumber=128.59.16). +.PP +The information includes the version number, number of times Amd was +compiled on the local system, release date and name of the release. +Following come the cpu type, byte ordering, and the architecture and +kernel architecture as `\fB${arch}\fR' and `\fB${karch}\fR', respectively. The +next line lists the operating system full name, short name, version, +and vendor. These four values correspond to the variables +`\fB${full_os}\fR', `\fB${os}\fR', `\fB${osver}\fR', and `\fB${vendor}\fR', respectively. +see \*(L"Supported Platforms\*(R". +.PP +Then come a list of map types supported, filesystems internally +supported by Amd (\s-1AMFS\s0), and generic filesystems available (\s-1FS\s0). +Finally all known networks (if any) of this host are listed by name and +number. They are available via the variables `\fB${wire}\fR' or +`\fB${network}\fR', and `\fB${netnumber}\fR' (see \*(L"Selectors\*(R") or the `\fBin_network\fR' +selector function (see \*(L"in_network Selector Function\*(R"). +.PP +\&\fB4.12 `\-w' WAIT-TIMEOUT\fR +.PP +Selects the interval in seconds between unmount attempts after the +initial time-to-live has expired. +.PP +This defaults to 120 seconds (two minutes). +.PP +\&\fB4.13 `\-x' \s-1OPTS\s0\fR +.PP +Specifies the type and verbosity of log messages. \*(L"opts\*(R" is a comma +separated list selected from the following options: +.PP +`\fBfatal\fR' +Fatal errors +.PP +`\fBerror\fR' +Non-fatal errors +.PP +`\fBuser\fR' +Non-fatal user errors +.PP +`\fBwarn\fR' +Recoverable errors +.PP +`\fBwarning\fR' +Alias for `\fBwarn\fR' +.PP +`\fBinfo\fR' +Information messages +.PP +`\fBmap\fR' +Mount map usage +.PP +`\fBstats\fR' +Additional statistics +.PP +`\fBall\fR' +All of the above +.PP +Initially a set of default logging flags is enabled. This is as if +`\fB\-x all,nomap,nostats\fR' had been selected. The command line is parsed +and logging is controlled by the `\fB\-x\fR' option. The very first set of +logging flags is saved and can not be subsequently disabled using Amq. +This default set of options is useful for general production use. +.PP +The `\fBinfo\fR' messages include details of what is mounted and unmounted +and when filesystems have timed out. If you want to have the default +set of messages without the `\fBinfo\fR' messages then you simply need `\-x +noinfo'. The messages given by `\fBuser\fR' relate to errors in the mount +maps, so these are useful when new maps are installed. The following +table lists the syslog priorities used for each of the message types. +.PP +`\fBfatal\fR' +`\fB\s-1LOG_CRIT\s0\fR' +.PP +`\fBerror\fR' +`\fB\s-1LOG_ERR\s0\fR' +.PP +`\fBuser\fR' +`\fB\s-1LOG_WARNING\s0\fR' +.PP +`\fBwarning\fR' +`\fB\s-1LOG_WARNING\s0\fR' +.PP +`\fBinfo\fR' +`\fB\s-1LOG_INFO\s0\fR' +.PP +`\fBdebug\fR' +`\fB\s-1LOG_DEBUG\s0\fR' +.PP +`\fBmap\fR' +`\fB\s-1LOG_DEBUG\s0\fR' +.PP +`\fBstats\fR' +`\fB\s-1LOG_INFO\s0\fR' +.PP +The options can be prefixed by the string `\fBno\fR' to indicate that this +option should be turned off. For example, to obtain all but `\fBinfo\fR' +messages the option `\fB\-x all,noinfo\fR' would be used. +.PP +If Amd was built with debugging enabled the `\fBdebug\fR' option is +automatically enabled regardless of the command line options. +.PP +\&\fB4.14 `\-y' NIS-DOMAIN\fR +.PP +Selects an alternate \s-1NIS\s0 domain. This is useful for debugging and +cross-domain shared mounting. If this flag is specified, Amd +immediately attempts to bind to a server for this domain. +.PP +\&\fB4.15 `\-C' CLUSTER-NAME\fR +.PP +Specifies the name of the cluster of which the local machine is a +member. The only effect is to set the variable `\fB${cluster}\fR'. The +\&\*(L"cluster-name\*(R" is will usually obtained by running another command +which uses a database to map the local hostname into a cluster name. +`\fB${cluster}\fR' can then be used as a selector to restrict mounting of +replicated data. If this option is not given, `\fB${cluster}\fR' has the +same value as `\fB${domain}\fR'. This would be used as follows: +.PP +amd \-C `clustername` ... +.PP +\&\fB4.16 `\-D' \s-1OPTS\s0\fR +.PP +Controls the verbosity and coverage of the debugging trace; \*(L"opts\*(R" is a +comma separated list of debugging options. The `\fB\-D\fR' option is only +available if Amd was compiled with `\fB\-DDEBUG\fR', or configured with +`\fBconfigure \-\-enable\-debug\fR'. The memory debugging facilities (`\fBmem\fR') +are only available if Amd was compiled with `\fB\-DDEBUG_MEM\fR' (in addition +to `\fB\-DDEBUG\fR'), or configured with `\fBconfigure \-\-enable\-debug=mem\fR'. +.PP +The most common options to use are `\fB\-D trace\fR' and `\fB\-D test\fR' (which +turns on all the useful debug options). As usual, every option can be +prefixed with `\fBno\fR' to turn it off. +.PP +`\fBall\fR' +all options +.PP +`\fBamq\fR' +register for amq +.PP +`\fBdaemon\fR' +enter daemon mode +.PP +`\fBfork\fR' +fork server +.PP +`\fBfull\fR' +program trace +.PP +`\fBinfo\fR' +info service specific debugging (hesiod, nis, etc.) In the case of +hesiod maps, turns on the hesiod \s-1RES_DEBUG\s0 internal debugging +option. +.PP +`\fBmem\fR' +trace memory allocations +.PP +`\fBmtab\fR' +use local `\fB./mtab\fR' file +.PP +`\fBstr\fR' +debug string munging +.PP +`\fBtest\fR' +full debug but no daemon +.PP +`\fBtrace\fR' +trace \s-1RPC\s0 protocol and \s-1NFS\s0 mount arguments +.PP +You may also refer to the program source for a more detailed +explanation of the available options. +.PP +\&\fB4.17 `\-F' CONF-FILE\fR +.PP +Specify an Amd configuration file CONF-FILE to use. For a description +of the format and syntax, see \*(L"Amd Configuration File\*(R". This +configuration file is used to specify any options in lieu of typing +many of them on the command line. The `\fBamd.conf\fR' file includes +directives for every command line option Amd has, and many more that +are only available via the configuration file facility. The +configuration file specified by this option is processed after all other +options had been processed, regardless of the actual location of this +option on the command line. +.PP +\&\fB4.18 `\-H'\fR +.PP +Print a brief help and usage string. +.PP +\&\fB4.19 `\-O' OP-SYS-NAME\fR +.PP +Overrides the compiled-in name of the operating system, with +OP-SYS-NAME. Useful when the built-in name is not desired for backward +compatibility reasons. For example, if the build in name is `\fBsunos5\fR', +you can override it to the old name `\fBsos5\fR', and use older maps which +were written with the latter in mind. +.PP +\&\fB4.20 `\-S'\fR +.PP +Do _not_ lock the running executable pages of Amd into memory. To +improve Amd's performance, systems that support the \fIplock\fR\|(3) call lock +the Amd process into memory. This way there is less chance the +operating system will schedule, page out, and swap the Amd process as +needed. This tends to improve Amd's performance, at the cost of +reserving the memory used by the Amd process (making it unavailable for +other processes). If this behavior is not desired, use the `\fB\-S\fR' option. +.PP +\&\fB4.21 `\-T' \s-1TAG\s0\fR +.PP +Specify a tag to use with `\fBamd.conf\fR'. All map entries tagged with \s-1TAG\s0 +will be processed. Map entries that are not tagged are always +processed. Map entries that are tagged with a tag other than \s-1TAG\s0 will +not be processed. +.SS "5 Filesystem Types" +.IX Subsection "5 Filesystem Types" +To mount a volume, Amd must be told the type of filesystem to be used. +Each filesystem type typically requires additional information such as +the fileserver name for \s-1NFS.\s0 +.PP +From the point of view of Amd, a \*(L"filesystem\*(R" is anything that can +resolve an incoming name lookup. An important feature is support for +multiple filesystem types. Some of these filesystems are implemented +in the local kernel and some on remote fileservers, whilst the others +are implemented internally by Amd. +.PP +The two common filesystem types are \s-1UFS\s0 and \s-1NFS. \s0 Four other user +accessible filesystems (`\fBlink\fR', `\fBprogram\fR', `\fBauto\fR' and `\fBdirect\fR') are +also implemented internally by Amd and these are described below. +There are two additional filesystem types internal to Amd which are not +directly accessible to the user (`\fBinherit\fR' and `\fBerror\fR'). Their use is +described since they may still have an effect visible to the user. +.PP +* Menu: +.PP +A single \s-1NFS\s0 filesystem.: see \*(L"Network Filesystem\*(R" +.PP +\&\s-1NFS\s0 mount a host's entire export tree.: see \*(L"Network Host Filesystem\*(R" +.PP +An atomic group of \s-1NFS\s0 filesystems.: see \*(L"Network Filesystem Group\*(R" +.PP +Native disk filesystem.: see \*(L"Unix Filesystem\*(R" +.PP +Caching from remote server filesystem.: see \*(L"Caching Filesystem\*(R" +.PP +\&\s-1ISO9660 CD ROM.:\s0 see \*(L"CD-ROM Filesystem\*(R" +.PP +Local loopback-mount filesystem.: see \*(L"Loopback Filesystem\*(R" +.PP +A memory or RAM-based filesystem.: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory +.PP +4.4BSD's loopback-mount filesystem.: see \*(L"Null Filesystem\*(R" +.PP +MS-DOS Floppy filesystem.: see \*(L"Floppy Filesystem\*(R" +.PP +The directory merging filesystem.: see \*(L"Translucent Filesystem\*(R" +.PP +Sun's tmpfs filesystem.: see \*(L"Shared Memory+Swap Filesystem\*(R" +.PP +4.4BSD's umapfs filesystem.: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R" +.PP +Generic Program mounts.: see \*(L"Program Filesystem\*(R" +.PP +Local link.: see \*(L"Symbolic Link Filesystem\*(R" +.PP +Local link referencing existing filesystem.: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0 +.PP +Link if path exists, \s-1NFS\s0 otherwise.: see \*(L"NFS-Link Filesystem\*(R" +.PP +See also \*(L"Automount Filesystem\*(R" +.PP +See also \*(L"Direct Automount Filesystem\*(R" +.PP +See also \*(L"Union Filesystem\*(R" +.PP +See also \*(L"Error Filesystem\*(R" +.PP +See also \*(L"Top-level Filesystem\*(R" +.PP +Sun's kernel-based automounter filesystem.: see \*(L"Autofs Filesystem\*(R" +.PP +See also \*(L"Root Filesystem\*(R" +.PP +See also \*(L"Inheritance Filesystem\*(R" +.PP +\&\fB5.1 Network Filesystem (`nfs')\fR +.PP +The \*(L"nfs\*(R" (`\fBtype:=nfs\fR') filesystem type provides access to Sun's \s-1NFS.\s0 +.PP +The following options must be specified: +.PP +`\fBrhost\fR' +the remote fileserver. This must be an entry in the hosts +database. \s-1IP\s0 addresses are not accepted. The default value is +taken from the local host name (`\fB${host}\fR') if no other value is +specified. +.PP +`\fBrfs\fR' +the remote filesystem. If no value is specified for this option, +an internal default of `\fB${path}\fR' is used. +.PP +\&\s-1NFS\s0 mounts require a two stage process. First, the \*(L"file handle\*(R" of +the remote file system must be obtained from the server. Then a mount +system call must be done on the local system. Amd keeps a cache of +file handles for remote file systems. The cache entries have a +lifetime of a few minutes. +.PP +If a required file handle is not in the cache, Amd sends a request +to the remote server to obtain it. Amd \*(L"does not\*(R" wait for a response; +it notes that one of the locations needs retrying, but continues with +any remaining locations. When the file handle becomes available, and +assuming none of the other locations was successfully mounted, Amd will +retry the mount. This mechanism allows several \s-1NFS\s0 filesystems to be +mounted in parallel. The first one which responds with a valid file +handle will be used. +.PP +An \s-1NFS\s0 entry might be: +.PP +jsp host!=charm;type:=nfs;rhost:=charm;rfs:=/home/charm;sublink:=jsp +.PP +The mount system call and any unmount attempts are always done in a +new task to avoid the possibility of blocking Amd. +.PP +\&\fB5.2 Network Host Filesystem (`host')\fR +.PP +The \*(L"host\*(R" (`\fBtype:=host\fR') filesystem allows access to the entire export +tree of an \s-1NFS\s0 server. The implementation is layered above the `\fBnfs\fR' +implementation so keep-alives work in the same way. The only option +which needs to be specified is `\fBrhost\fR' which is the name of the +fileserver to mount. +.PP +The `\fBhost\fR' filesystem type works by querying the mount daemon on the +given fileserver to obtain its export list. Amd then obtains +filehandles for each of the exported filesystems. Any errors at this +stage cause that particular filesystem to be ignored. Finally each +filesystem is mounted. Again, errors are logged but ignored. One +common reason for mounts to fail is that the mount point does not exist. +Although Amd attempts to automatically create the mount point, it may +be on a remote filesystem to which Amd does not have write permission. +.PP +When an attempt to unmount a `\fBhost\fR' filesystem mount fails, Amd +remounts any filesystems which had successfully been unmounted. To do +this Amd queries the mount daemon again and obtains a fresh copy of the +export list. Amd then tries to mount any exported filesystems which +are not currently mounted. +.PP +Sun's automounter provides a special `\fB\-hosts\fR' map. To achieve the +same effect with Amd requires two steps. First a mount map must be +created as follows: +.PP +* type:=host;rhost:=${key};fs:=${autodir}/${rhost}/root +.PP +and then start Amd with the following command +.PP +amd /net net.map +.PP +where `\fBnet.map\fR' is the name of map described above. Note that the +value of `\fB${fs}\fR' is overridden in the map. This is done to avoid a +clash between the mount tree and any other filesystem already mounted +from the same fileserver. +.PP +If different mount options are needed for different hosts then +additional entries can be added to the map, for example +.PP +host2 opts:=ro,nosuid,soft +.PP +would soft mount `\fBhost2\fR' read-only. +.PP +\&\fB5.3 Network Filesystem Group (`nfsx')\fR +.PP +The \*(L"nfsx\*(R" (`\fBtype:=nfsx\fR') filesystem allows a group of filesystems to +be mounted from a single \s-1NFS\s0 server. The implementation is layered +above the `\fBnfs\fR' implementation so keep-alives work in the same way. +.PP +The options are the same as for the `\fBnfs\fR' filesystem with one +difference. +.PP +The following options must be specified: +.PP +`\fBrhost\fR' +the remote fileserver. This must be an entry in the hosts +database. \s-1IP\s0 addresses are not accepted. The default value is +taken from the local host name (`\fB${host}\fR') if no other value is +specified. +.PP +`\fBrfs\fR' +as a list of filesystems to mount. The list is in the form of a +comma separated strings. +.PP +For example: +.PP +pub type:=nfsx;rhost:=gould;\e +rfs:=/public,/,graphics,usenet;fs:=${autodir}/${rhost}/root +.PP +The first string defines the root of the tree, and is applied as a +prefix to the remaining members of the list which define the individual +filesystems. The first string is _not_ used as a filesystem name. A +parallel operation is used to determine the local mount points to +ensure a consistent layout of a tree of mounts. +.PP +Here, the _three_ filesystems, `\fB/public\fR', `\fB/public/graphics\fR' and +`\fB/public/usenet\fR', would be mounted. +.PP +A local mount point, `\fB${fs}\fR', _must_ be specified. The default +local mount point will not work correctly in the general case. A +suggestion is to use `\fBfs:=${autodir}/${rhost}/root\fR'. +.PP +\&\fB5.4 Unix Filesystem (`ufs', `xfs', or `efs')\fR +.PP +The \*(L"ufs\*(R" (`\fBtype:=ufs\fR') filesystem type provides access to the system's +standard disk filesystem\*(--usually a derivative of the Berkeley Fast +Filesystem. +.PP +The following option must be specified: +.PP +`\fBdev\fR' +the block special device to be mounted. +.PP +A \s-1UFS\s0 entry might be: +.PP +jsp host==charm;type:=ufs;dev:=/dev/sd0d;sublink:=jsp +.PP +\&\s-1UFS\s0 is the default Unix disk-based file system, which Am-utils picks +up during the autoconfiguration phase. Some systems have more than one +type, such as \s-1IRIX,\s0 that comes with \s-1EFS \s0(Extent File System) and \s-1XFS +\&\s0(Extended File System). In those cases, you may explicitly set the file +system type, by using entries such: +.PP +ez1 type:=efs;dev:=/dev/xd0a +ez2 type:=xfs;dev:=/dev/sd3c +.PP +\&\fB5.5 Caching Filesystem (`cachefs')\fR +.PP +The \*(L"cachefs\*(R" (`\fBtype:=cachefs\fR') filesystem caches files from one +location onto another, presumably providing faster access. It is +particularly useful to cache from a larger and remote (slower) \s-1NFS\s0 +partition to a smaller and local (faster) \s-1UFS\s0 directory. +.PP +The following options must be specified: +.PP +`\fBcachedir\fR' +the directory where the cache is stored. +.PP +`\fBrfs\fR' +the path name to the \*(L"back file system\*(R" to be cached from. +.PP +`\fBfs\fR' +the \*(L"front file system\*(R" mount point to the cached files, where Amd +will set a symbolic link pointing to. +.PP +A CacheFS entry for, say, the `\fB/import\fR' Amd mount point, might be: +.PP +copt type:=cachefs;cachedir:=/cache;rfs:=/import/opt;fs:=/n/import/copt +.PP +Access to the pathname `\fB/import/copt\fR' will follow a symbolic link to +`\fB/n/import/copt\fR'. The latter is the mount point for a caching file +system, that caches from `\fB/import/opt\fR' to `\fB/cache\fR'. +.PP +Caveats: +1. This file system is currently only implemented for Solaris 2.x! +.PP +2. Before being used for the first time, the cache directory must be +initialized with `\fBcfsadmin \-c \s-1CACHEDIR\s0\fR'. See the manual page for +cfsadmin(1M) for more information. +.PP +3. The \*(L"back file system\*(R" mounted must be a complete file system, not +a subdirectory thereof; otherwise you will get an error \*(L"Invalid +Argument\*(R". +.PP +4. If Amd aborts abnormally, the state of the cache may be +inconsistent, requiring running the command `fsck \-F cachefs +\&\s-1CACHEDIR\s0'. Otherwise you will get the error \*(L"No Space Left on +Device\*(R". +.PP +\&\fB5.6 CD-ROM Filesystem (`cdfs')\fR +.PP +The \*(L"cdfs\*(R" (`\fBtype:=cdfs\fR') filesystem mounts a CD-ROM with an \s-1ISO9660\s0 +format filesystem on it. +.PP +The following option must be specified: +.PP +`\fBdev\fR' +the block special device to be mounted. +.PP +Some operating systems will fail to mount read-only CDs unless the +`\fBro\fR' option is specified. A cdfs entry might be: +.PP +cdfs os==sunos4;type:=cdfs;dev:=/dev/sr0 \e +os==sunos5;addopts:=ro;type:=cdfs;dev:=/dev/dsk/c0t6d0s2 +.PP +\&\fB5.7 Loopback Filesystem (`lofs')\fR +.PP +The \*(L"lofs\*(R" (`\fBtype:=lofs\fR') filesystem is also called the loopback +filesystem. It mounts a local directory on another, thus providing +mount-time binding to another location (unlike symbolic links). +.PP +The loopback filesystem is particularly useful within the context of +a chroot-ed directory (via \fIchroot\fR\|(2)), to provide access to directories +otherwise inaccessible. +.PP +The following option must be specified: +.PP +`\fBrfs\fR' +the pathname to be mounted on top of `\fB${fs}\fR'. +.PP +Usually, the \s-1FTP\s0 server runs in a chroot-ed environment, for security +reasons. In this example, lofs is used to provide a subdirectory within +a user's home directory, also available for public ftp. +.PP +lofs type:=lofs;rfs:=/home/ezk/myftpdir;fs:=/usr/ftp/pub/ezk +.PP +\&\fB5.8 Memory/RAM Filesystem (`mfs')\fR +.PP +The \*(L"mfs\*(R" (`\fBtype:=mfs\fR') filesystem is available in 4.4BSD, Linux, and +other systems. It creates a filesystem in a portion of the system's +memory, thus providing very fast file (volatile) access. +.PP +\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0! +.PP +\&\fB5.9 Null Filesystem (`nullfs')\fR +.PP +The \*(L"nullfs\*(R" (`\fBtype:=nullfs\fR') filesystem is available from 4.4BSD, and +is very similar to the loopback filesystem, \*(L"lofs\*(R". +.PP +\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0! +.PP +\&\fB5.10 Floppy Filesystem (`pcfs')\fR +.PP +The \*(L"pcfs\*(R" (`\fBtype:=pcfs\fR') filesystem mounts a floppy previously +formatted for the MS-DOS format. +.PP +The following option must be specified: +.PP +`\fBdev\fR' +the block special device to be mounted. +.PP +A pcfs entry might be: +.PP +pcfs os==sunos4;type:=pcfs;dev:=/dev/fd0 \e +os==sunos5;type:=pcfs;dev:=/dev/diskette +.PP +\&\fB5.11 Translucent Filesystem (`tfs')\fR +.PP +The \*(L"tfs\*(R" (`\fBtype:=tfs\fR') filesystem is an older version of the 4.4BSD +\&\*(L"unionfs\*(R". +.PP +\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0! +.PP +\&\fB5.12 Shared Memory+Swap Filesystem (`tmpfs')\fR +.PP +The \*(L"tmpfs\*(R" (`\fBtype:=tmpfs\fR') filesystem shares memory between a the swap +device and the rest of the system. It is generally used to provide a +fast access `\fB/tmp\fR' directory, one that uses memory that is otherwise +unused. This filesystem is available in SunOS 4.x and 5.x. +.PP +\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0! +.PP +\&\fB5.13 User \s-1ID\s0 Mapping Filesystem (`umapfs')\fR +.PP +The \*(L"umapfs\*(R" (`\fBtype:=umapfs\fR') filesystem maps User IDs of file +ownership, and is available from 4.4BSD. +.PP +\&\s-1XXX: THIS FILESYSTEM IS NOT IMPLEMENTED YET\s0! +.PP +\&\fB5.14 Program Filesystem (`program')\fR +.PP +The \*(L"program\*(R" (`\fBtype:=program\fR') filesystem type allows a program to be +run whenever a mount or unmount is required. This allows easy addition +of support for other filesystem types, such as \s-1MIT\s0's Remote Virtual +Disk (\s-1RVD\s0) which has a programmatic interface via the commands +`\fBrvdmount\fR' and `\fBrvdunmount\fR'. +.PP +The following options must be specified: +.PP +`\fBmount\fR' +the program which will perform the mount. +.PP +`\fBunmount\fR' +the program which will perform the unmount. +.PP +The exit code from these two programs is interpreted as a Unix error +code. As usual, exit code zero indicates success. To execute the +program Amd splits the string on whitespace to create an array of +substrings. Single quotes `'' can be used to quote whitespace if that +is required in an argument. There is no way to escape or change the +quote character. +.PP +To run the program `\fBrvdmount\fR' with a host name and filesystem as +arguments would be specified by +`\fBfs:=${autodir}${path};mount:=\*(L"/etc/rvdmount rvdmount fserver ${fs}\*(R"\fR'. +.PP +The first element in the array is taken as the pathname of the +program to execute. The other members of the array form the argument +vector to be passed to the program, \*(L"including argument zero\*(R". This +means that the split string must have at least two elements. The +program is directly executed by Amd, not via a shell. This means that +scripts must begin with a `\fB#!\fR' interpreter specification. +.PP +If a filesystem type is to be heavily used, it may be worthwhile +adding a new filesystem type into Amd, but for most uses the program +filesystem should suffice. +.PP +When the program is run, standard input and standard error are +inherited from the current values used by Amd. Standard output is a +duplicate of standard error. The value specified with the `\fB\-l\fR' command +line option has no effect on standard error. +.PP +\&\fB5.15 Symbolic Link Filesystem (`link')\fR +.PP +Each filesystem type creates a symbolic link to point from the volume +name to the physical mount point. The `\fBlink\fR' filesystem does the same +without any other side effects. This allows any part of the machines +name space to be accessed via Amd. +.PP +One common use for the symlink filesystem is `\fB/homes\fR' which can be +made to contain an entry for each user which points to their +(auto-mounted) home directory. Although this may seem rather expensive, +it provides a great deal of administrative flexibility. +.PP +The following option must be defined: +.PP +`\fBfs\fR' +The value of \s-1FS\s0 option specifies the destination of the link, as +modified by the \s-1SUBLINK\s0 option. If \s-1SUBLINK\s0 is non-null, it is +appended to `\fB${fs}\fR'`\fB/\fR' and the resulting string is used as the +target. +.PP +The `\fBlink\fR' filesystem can be thought of as identical to the `\fBufs\fR' +filesystem but without actually mounting anything. +.PP +An example entry might be: +.PP +jsp host==charm;type:=link;fs:=/home/charm;sublink:=jsp +which would return a symbolic link pointing to `\fB/home/charm/jsp\fR'. +.PP +\&\fB5.16 Symbolic Link Filesystem \s-1II \s0(`linkx')\fR +.PP +The \*(L"linkx\*(R" (`\fBtype:=linkx\fR') filesystem type is identical to `\fBlink\fR' with +the exception that the target of the link must exist. Existence is +checked with the \fIlstat\fR\|(2) system call. +.PP +The `\fBlinkx\fR' filesystem type is particularly useful for wildcard map +entries. In this case, a list of possible targets can be given and Amd +will choose the first one which exists on the local machine. +.PP +\&\fB5.17 NFS-Link Filesystem (`nfsl')\fR +.PP +The \*(L"nfsl\*(R" (`\fBtype:=nfsl\fR') filesystem type is a combination of two +others: `\fBlink\fR' and `\fBnfs\fR'. If the local host name is equal to the value +of `\fB${rhost}\fR', or if the target pathname listed in `\fB${fs}\fR' exists, +`\fBnfsl\fR' will behave exactly as `\fBtype:=link\fR', and refer to the target as +a symbolic link. If the local host name is not equal to the value of +`\fB${rhost}\fR', or if the target of the link does not exist, Amd will treat +it as `\fBtype:=nfs\fR', and will mount a remote pathname for it. +.PP +The `\fBnfsl\fR' filesystem type is particularly useful as a shorthand for +the more cumbersome and yet one of the most popular Amd entries. For +example, you can simplify all map entries that look like: +.PP +zing \-fs:=/n/shekel/u/zing \e +host!=shekel;type:=nfs;rhost:=shekel;rfs:=${fs} \e +host==shekel;type:=link +.PP +or +.PP +zing \-fs:=/n/shekel/u/zing \e +exists(${fs});type:=link \e +!exists(${fs});type:=nfs;rhost:=shekel;rfs:=${fs} +.PP +into a shorter form +.PP +zing type:=nfsl;fs:=/n/shekel/u/zing;rhost:=shekel;rfs:=${fs} +.PP +Not just does it make the maps smaller and simpler, but it avoids +possible mistakes that often happen when forgetting to set up the two +entries (one for `\fBtype:=nfs\fR' and the other for `\fBtype:=link\fR') necessary +to perform transparent mounts of existing or remote mounts. +.PP +\&\fB5.18 Automount Filesystem (`auto')\fR +.PP +The \*(L"auto\*(R" (`\fBtype:=auto\fR') filesystem type creates a new automount point +below an existing automount point. Top-level automount points appear +as system mount points. An automount mount point can also appear as a +sub-directory of an existing automount point. This allows some +additional structure to be added, for example to mimic the mount tree of +another machine. +.PP +The following options may be specified: +.PP +`\fBcache\fR' +specifies whether the data in this mount-map should be cached. +The default value is `\fBnone\fR', in which case no caching is done in +order to conserve memory. +.PP +However, better performance and reliability can be obtained by +caching some or all of a mount-map. +.PP +If the cache option specifies `\fBall\fR', the entire map is enumerated +when the mount point is created. +.PP +If the cache option specifies `\fBinc\fR', caching is done incrementally +as and when data is required. Some map types do not support cache +mode `\fBall\fR', in which case `\fBinc\fR' is used whenever `\fBall\fR' is +requested. +.PP +Caching can be entirely disabled by using cache mode `\fBnone\fR'. +.PP +If the cache option specifies `\fBregexp\fR' then the entire map will be +enumerated and each key will be treated as an egrep-style regular +expression. The order in which a cached map is searched does not +correspond to the ordering in the source map so the regular +expressions should be mutually exclusive to avoid confusion. +.PP +Each mount map type has a default cache type, usually `\fBinc\fR', which +can be selected by specifying `\fBmapdefault\fR'. +.PP +The cache mode for a mount map can only be selected on the command +line. Starting Amd with the command: +.PP +amd /homes hesiod.homes \-cache:=inc +.PP +will cause `\fB/homes\fR' to be automounted using the \*(L"Hesiod\*(R" name +server with local incremental caching of all successfully resolved +names. +.PP +All cached data is forgotten whenever Amd receives a `\fB\s-1SIGHUP\s0\fR' +signal and, if cache `\fBall\fR' mode was selected, the cache will be +reloaded. This can be used to inform Amd that a map has been +updated. In addition, whenever a cache lookup fails and Amd needs +to examine a map, the map's modify time is examined. If the cache +is out of date with respect to the map then it is flushed as if a +`\fB\s-1SIGHUP\s0\fR' had been received. +.PP +An additional option (`\fBsync\fR') may be specified to force Amd to +check the map's modify time whenever a cached entry is being used. +For example, an incremental, synchronized cache would be created +by the following command: +.PP +amd /homes hesiod.homes \-cache:=inc,sync +.PP +`\fBfs\fR' +specifies the name of the mount map to use for the new mount point. +.PP +Arguably this should have been specified with the `\fB${rfs}\fR' option +but we are now stuck with it due to historical accident. +.PP +`\fBpref\fR' +alters the name that is looked up in the mount map. If `\fB${pref}\fR', +the \*(L"prefix\*(R", is non-null then it is prepended to the name +requested by the kernel \*(L"before\*(R" the map is searched. +.PP +The server `\fBdylan.doc.ic.ac.uk\fR' has two user disks: `\fB/dev/dsk/2s0\fR' +and `\fB/dev/dsk/5s0\fR'. These are accessed as `\fB/home/dylan/dk2\fR' and +`\fB/home/dylan/dk5\fR' respectively. Since `\fB/home\fR' is already an automount +point, this naming is achieved with the following map entries: +.PP +dylan type:=auto;fs:=${map};pref:=${key}/ +dylan/dk2 type:=ufs;dev:=/dev/dsk/2s0 +dylan/dk5 type:=ufs;dev:=/dev/dsk/5s0 +.PP +\&\fB5.19 Direct Automount Filesystem (`direct')\fR +.PP +The \*(L"direct\*(R" (`\fBtype:=direct\fR') filesystem is almost identical to the +automount filesystem. Instead of appearing to be a directory of mount +points, it appears as a symbolic link to a mounted filesystem. The +mount is done at the time the link is accessed. *Note Automount +Filesystem::, for a list of required options. +.PP +Direct automount points are created by specifying the `\fBdirect\fR' +filesystem type on the command line: +.PP +amd ... /usr/man auto.direct \-type:=direct +.PP +where `\fBauto.direct\fR' would contain an entry such as: +.PP +usr/man \-type:=nfs;rfs:=/usr/man \e +rhost:=man\-server1 rhost:=man\-server2 +.PP +In this example, `\fBman\-server1\fR' and `\fBman\-server2\fR' are file servers +which export copies of the manual pages. Note that the key which is +looked up is the name of the automount point without the leading `\fB/\fR'. +.PP +\&\fB5.20 Union Filesystem (`union')\fR +.PP +The \*(L"union\*(R" (`\fBtype:=union\fR') filesystem type allows the contents of +several directories to be merged and made visible in a single +directory. This can be used to overcome one of the major limitations +of the Unix mount mechanism which only allows complete directories to +be mounted. +.PP +For example, supposing `\fB/tmp\fR' and `\fB/var/tmp\fR' were to be merged into +a new directory called `\fB/mtmp\fR', with files in `\fB/var/tmp\fR' taking +precedence. The following command could be used to achieve this effect: +.PP +amd ... /mtmp union:/tmp:/var/tmp \-type:=union +.PP +Currently, the unioned directories must _not_ be automounted. That +would cause a deadlock. This seriously limits the current usefulness of +this filesystem type and the problem will be addressed in a future +release of Amd. +.PP +Files created in the union directory are actually created in the last +named directory. This is done by creating a wildcard entry which points +to the correct directory. The wildcard entry is visible if the union +directory is listed, so allowing you to see which directory has +priority. +.PP +The files visible in the union directory are computed at the time +Amd is started, and are not kept up-to-date with respect to the +underlying directories. Similarly, if a link is removed, for example +with the `\fBrm\fR' command, it will be lost forever. +.PP +\&\fB5.21 Error Filesystem (`error')\fR +.PP +The \*(L"error\*(R" (`\fBtype:=error\fR') filesystem type is used internally as a +catch-all in the case where none of the other filesystems was selected, +or some other error occurred. Lookups and mounts always fail with \*(L"No +such file or directory\*(R". All other operations trivially succeed. +.PP +The error filesystem is not directly accessible. +.PP +\&\fB5.22 Top-level Filesystem (`toplvl')\fR +.PP +The \*(L"toplvl\*(R" (`\fBtype:=toplvl\fR') filesystems is derived from the `\fBauto\fR' +filesystem and is used to mount the top-level automount nodes. +Requests of this type are automatically generated from the command line +arguments and can also be passed in by using the `\fB\-M\fR' option of the +\&\*(L"Amq\*(R" command. That option is insecure, and is unavailable unless +am-utils was configured with `\fB\-\-with\-amq\-mount\fR'. +.PP +\&\fB5.23 Root Filesystem (`root')\fR +.PP +The \*(L"root\*(R" (`\fBtype:=root\fR') filesystem type acts as an internal +placeholder onto which Amd can pin `\fBtoplvl\fR' mounts. Only one node of +this type need ever exist and one is created automatically during +startup. The effect of having more than one root node is undefined. +.PP +The root filesystem is not directly accessible. +.PP +\&\fB5.24 Autofs Filesystem (`autofs')\fR +.PP +The \*(L"autofs\*(R" (`\fBtype:=autofs\fR') filesystem uses Sun's kernel-based +automounter supporting filesystem for Amd's mount points. Hence it is +another type of top level filesystem. +.PP +The autofs filesystem is not directly accessible from Amd maps, but +only from the `\fBamd.conf\fR' file (see \*(L"mount_type Parameter\*(R"). +.PP +Note that Autofs support is still very early. See the distribution +file `\fB\s-1README\s0.autofs\fR' for detail of what works and what does not. +.PP +\&\fB5.25 Inheritance Filesystem (`inherit')\fR +.PP +The \*(L"inheritance\*(R" (`\fBtype:=inherit\fR') filesystem is not directly +accessible. Instead, internal mount nodes of this type are +automatically generated when Amd is started with the `\fB\-r\fR' option. At +this time the system mount table is scanned to locate any filesystems +which are already mounted. If any reference to these filesystems is +made through Amd then instead of attempting to mount it, Amd simulates +the mount and \*(L"inherits\*(R" the filesystem. This allows a new version of +Amd to be installed on a live system simply by killing the old daemon +with `\fB\s-1SIGTERM\s0\fR' and starting the new one. +.PP +This filesystem type is not generally visible externally, but it is +possible that the output from `\fBamq \-m\fR' may list `\fBinherit\fR' as the +filesystem type. This happens when an inherit operation cannot be +completed for some reason, usually because a fileserver is down. +.SS "6 Amd Configuration File" +.IX Subsection "6 Amd Configuration File" +The `\fBamd.conf\fR' file is the configuration file for Amd, as part of the +am-utils suite. This file contains runtime configuration information +for the Amd automounter program. +.PP +* Menu: +.PP +See also \*(L"File Format\*(R" +.PP +See also \*(L"The Global Section\*(R" +.PP +See also \*(L"Regular Map Sections\*(R" +.PP +See also \*(L"Common Parameters\*(R" +.PP +See also \*(L"Global Parameters\*(R" +.PP +See also \*(L"Regular Map Parameters\*(R" +.PP +See also \*(L"amd.conf Examples\*(R" +.PP +\&\fB6.1 File Format\fR +.PP +The `\fBamd.conf\fR' file consists of sections and parameters. A section +begins with the name of the section in square brackets `\fB[]\fR' and +continues until the next section begins or the end of the file is +reached. Sections contain parameters of the form `\fBname = value\fR'. +.PP +The file is line-based \*(-- that is, each newline-terminated line +represents either a comment, a section name or a parameter. No +line-continuation syntax is available. +.PP +Section names, parameter names and their values are case sensitive. +.PP +Only the first equals sign in a parameter is significant. Whitespace +before or after the first equals sign is discarded. Leading, trailing +and internal whitespace in section and parameter names is irrelevant. +Leading and trailing whitespace in a parameter value is discarded. +Internal whitespace within a parameter value is not allowed, unless the +whole parameter value is quoted with double quotes as in `name = \*(L"some +value\*(R"'. +.PP +Any line beginning with a pound sign `\fB#\fR' is ignored, as are lines +containing only whitespace. +.PP +The values following the equals sign in parameters are all either a +string (no quotes needed if string does not include spaces) or a +boolean, which may be given as `\fByes\fR'/`\fBno\fR'. Case is significant in all +values. Some items such as cache timeouts are numeric. +.PP +\&\fB6.2 The Global Section\fR +.PP +The global section must be specified as `\fB[global]\fR'. Parameters in this +section either apply to Amd as a whole, or to all other regular map +sections which follow. There should be only one global section defined +in one configuration file. +.PP +It is highly recommended that this section be specified first in the +configuration file. If it is not, then regular map sections which +precede it will not use global values defined later. +.PP +\&\fB6.3 Regular Map Sections\fR +.PP +Parameters in regular (non-global) sections apply to a single map entry. +For example, if the map section `\fB[/homes]\fR' is defined, then all +parameters following it will be applied to the `\fB/homes\fR' Amd-managed +mount point. +.PP +\&\fB6.4 Common Parameters\fR +.PP +These parameters can be specified either in the global or a map-specific +section. Entries specified in a map-specific section override the +default value or one defined in the global section. If such a common +parameter is specified only in the global section, it is applicable to +all regular map sections that follow. +.PP +* Menu: +.PP +See also \*(L"browsable_dirs Parameter\*(R" +.PP +See also \*(L"map_options Parameter\*(R" +.PP +See also \*(L"map_type Parameter\*(R" +.PP +See also \*(L"mount_type Parameter\*(R" +.PP +See also \*(L"search_path Parameter\*(R" +.PP +\&\fB6.4.1 browsable_dirs Parameter\fR +.PP +(type=string, default=`\fBno\fR'). If `\fByes\fR', then Amd's top-level mount +points will be browsable to \fIreaddir\fR\|(3) calls. This means you could run +for example \fIls\fR\|(1) and see what keys are available to mount in that +directory. Not all entries are made visible to \fIreaddir\fR\|(3): the +`\fB/defaults\fR' entry, wildcard entries, and those with a `\fB/\fR' in them are +not included. If you specify `\fBfull\fR' to this option, all but the +`\fB/defaults\fR' entry will be visible. Note that if you run a command +which will attempt to \fIstat\fR\|(2) the entries, such as often done by `ls +\&\-l' or `\fBls \-F\fR', Amd will attempt to mount every entry in that map. +This is often called a \*(L"mount storm\*(R". +.PP +\&\fB6.4.2 map_options Parameter\fR +.PP +(type=string, default no options). This option is the same as +specifying map options on the command line to Amd, such as `\fBcache:=all\fR'. +.PP +\&\fB6.4.3 map_type Parameter\fR +.PP +(type=string, default search all map types). If specified, Amd will +initialize the map only for the type given. This is useful to avoid the +default map search type used by Amd which takes longer and can have +undesired side-effects such as initializing \s-1NIS\s0 even if not used. +Possible values are +.PP +`\fBfile\fR' +plain files +.PP +`\fBhesiod\fR' +Hesiod name service from \s-1MIT\s0 +.PP +`\fBldap\fR' +Lightweight Directory Access Protocol +.PP +`\fBndbm\fR' +(New) dbm style hash files +.PP +`\fBnis\fR' +Network Information Services (version 2) +.PP +`\fBnisplus\fR' +Network Information Services Plus (version 3) +.PP +`\fBpasswd\fR' +local password files +.PP +`\fBunion\fR' +union maps +.PP +\&\fB6.4.4 mount_type Parameter\fR +.PP +(type=string, default=`\fBnfs\fR'). All Amd mount types default to \s-1NFS.\s0 +That is, Amd is an \s-1NFS\s0 server on the map mount points, for the local +host it is running on. If `\fBautofs\fR' is specified, Amd will be an autofs +server for those mount points. +.PP +\&\fB6.4.5 search_path Parameter\fR +.PP +(type=string, default no search path). This provides a +(colon-delimited) search path for file maps. Using a search path, +sites can allow for local map customizations and overrides, and can +distributed maps in several locations as needed. +.PP +\&\fB6.5 Global Parameters\fR +.PP +The following parameters are applicable to the `\fB[global]\fR' section only. +.PP +* Menu: +.PP +See also \*(L"arch Parameter\*(R" +.PP +See also \*(L"auto_dir Parameter\*(R" +.PP +See also \*(L"cache_duration Parameter\*(R" +.PP +See also \*(L"cluster Parameter\*(R" +.PP +See also \*(L"debug_options Parameter\*(R" +.PP +See also \*(L"dismount_interval Parameter\*(R" +.PP +See also \*(L"full_os Parameter\*(R" +.PP +See also \*(L"fully_qualified_hosts Parameter\*(R" +.PP +See also \*(L"hesiod_base Parameter\*(R" +.PP +See also \*(L"karch Parameter\*(R" +.PP +See also \*(L"ldap_base Parameter\*(R" +.PP +See also \*(L"ldap_cache_maxmem Parameter\*(R" +.PP +See also \*(L"ldap_cache_seconds Parameter\*(R" +.PP +See also \*(L"ldap_hostports Parameter\*(R" +.PP +See also \*(L"local_domain Parameter\*(R" +.PP +See also \*(L"log_file Parameter\*(R" +.PP +See also \*(L"log_options Parameter\*(R" +.PP +See also \*(L"nfs_retransmit_counter Parameter\*(R" +.PP +See also \*(L"nfs_retry_interval Parameter\*(R" +.PP +See also \*(L"nis_domain Parameter\*(R" +.PP +See also \*(L"normalize_hostnames Parameter\*(R" +.PP +See also \*(L"os Parameter\*(R" +.PP +See also \*(L"osver Parameter\*(R" +.PP +See also \*(L"pid_file Parameter\*(R" +.PP +See also \*(L"plock Parameter\*(R" +.PP +See also \*(L"portmap_program Parameter\*(R" +.PP +See also \*(L"print_pid Parameter\*(R" +.PP +See also \*(L"print_version Parameter\*(R" +.PP +See also \*(L"restart_mounts Parameter\*(R" +.PP +See also \*(L"selectors_on_default Parameter\*(R" +.PP +See also \*(L"show_statfs_entries Parameter\*(R" +.PP +See also \*(L"unmount_on_exit Parameter\*(R" +.PP +See also \*(L"vendor Parameter\*(R" +.PP +\&\fB6.5.1 arch Parameter\fR +.PP +(type=string, default to compiled in value). Allows you to override the +value of the arch Amd variable. +.PP +\&\fB6.5.2 auto_dir Parameter\fR +.PP +(type=string, default=`\fB/a\fR'). Same as the `\fB\-a\fR' option to Amd. This +sets the private directory where Amd will create sub-directories for +its real mount points. +.PP +\&\fB6.5.3 cache_duration Parameter\fR +.PP +(type=numeric, default=300). Same as the `\fB\-c\fR' option to Amd. Sets the +duration in seconds that looked up map entries remain in the cache. +.PP +\&\fB6.5.4 cluster Parameter\fR +.PP +(type=string, default no cluster). Same as the `\fB\-C\fR' option to Amd. +Specifies the alternate HP-UX cluster to use. +.PP +\&\fB6.5.5 debug_options Parameter\fR +.PP +(type=string, default no debug options). Same as the `\fB\-D\fR' option to +Amd. Specify any debugging options for Amd. Works only if am-utils +was configured for debugging using the `\fB\-\-enable\-debug\fR' option. The +`\fBmem\fR' option, as well as all other options, can be turned on via +`\fB\-\-enable\-debug=mem\fR'. Otherwise debugging options are ignored. +Options are comma delimited, and can be preceded by the string `\fBno\fR' to +negate their meaning. You can get the list of supported debugging and +logging options by running `\fBamd \-H\fR'. Possible values are: +.PP +`\fBall\fR' +all options +.PP +`\fBamq\fR' +register for amq +.PP +`\fBdaemon\fR' +enter daemon mode +.PP +`\fBfork\fR' +fork server +.PP +`\fBfull\fR' +program trace +.PP +`\fBmem\fR' +trace memory allocations +.PP +`\fBmtab\fR' +use local `\fB./mtab\fR' file +.PP +`\fBstr\fR' +debug string munging +.PP +`\fBtest\fR' +full debug but no daemon +.PP +`\fBtrace\fR' +trace \s-1RPC\s0 protocol and \s-1NFS\s0 mount arguments +.PP +\&\fB6.5.6 dismount_interval Parameter\fR +.PP +(type=numeric, default=120). Same as the `\fB\-w\fR' option to Amd. Specify +in seconds, the time between attempts to dismount file systems that +have exceeded their cached times. +.PP +\&\fB6.5.7 full_os Parameter\fR +.PP +(type=string, default to compiled in value). The full name of the +operating system, along with its version. Allows you to override the +compiled-in full name and version of the operating system. Useful when +the compiled-in name is not desired. For example, the full operating +system name on linux comes up as `\fBlinux\fR', but you can override it to +`\fBlinux\-2.2.5\fR'. +.PP +\&\fB6.5.8 fully_qualified_hosts Parameter\fR +.PP +(type=string, default=`\fBno\fR'). If `\fByes\fR', Amd will perform \s-1RPC\s0 +authentication using fully-qualified host names. This is necessary for +some systems, and especially when performing cross-domain mounting. For +this function to work, the Amd variable `\fB${hostd}\fR' is used, requiring +that `\fB${domain}\fR' not be null. +.PP +\&\fB6.5.9 hesiod_base Parameter\fR +.PP +(type=string, default=`\fBautomount\fR'). Specify the base name for hesiod +maps. +.PP +\&\fB6.5.10 karch Parameter\fR +.PP +(type=string, default to karch of the system). Same as the `\fB\-k\fR' option +to Amd. Allows you to override the kernel-architecture of your system. +Useful for example on Sun (Sparc) machines, where you can build one Amd +binary, and run it on multiple machines, yet you want each one to get +the correct karch variable set (for example, sun4c, sun4m, sun4u, etc.) +Note that if not specified, Amd will use \fIuname\fR\|(2) to figure out the +kernel architecture of the machine. +.PP +\&\fB6.5.11 ldap_base Parameter\fR +.PP +(type=string, default not set). Specify the base name for \s-1LDAP.\s0 +.PP +\&\fB6.5.12 ldap_cache_maxmem Parameter\fR +.PP +(type=numeric, default=131072). Specify the maximum memory Amd should +use to cache \s-1LDAP\s0 entries. +.PP +\&\fB6.5.13 ldap_cache_seconds Parameter\fR +.PP +(type=numeric, default=0). Specify the number of seconds to keep +entries in the cache. +.PP +\&\fB6.5.14 ldap_hostports Parameter\fR +.PP +(type=string, default not set). Specify LDAP-specific values such as +country and organization. +.PP +\&\fB6.5.15 local_domain Parameter\fR +.PP +(type=string, default no sub-domain). Same as the `\fB\-d\fR' option to Amd. +Specify the local domain name. If this option is not given the domain +name is determined from the hostname, by removing the first component +of the fully-qualified host name. +.PP +\&\fB6.5.16 log_file Parameter\fR +.PP +(type=string, default=`\fBstderr\fR'). Same as the `\fB\-l\fR' option to Amd. +Specify a file name to log Amd events to. If the string `\fB/dev/stderr\fR' +is specified, Amd will send its events to the standard error file +descriptor. +.PP +If the string `\fBsyslog\fR' is given, Amd will record its events with the +system logger \fIsyslogd\fR\|(8). If your system supports syslog facilities, +then the default facility used is `\fB\s-1LOG_DAEMON\s0\fR'. +.PP +When using syslog, if you wish to change the facility, append its +name to the option name, delimited by a single colon. For example, if +it is the string `\fBsyslog:local7\fR' then Amd will log messages via +\&\fIsyslog\fR\|(3) using the `\fB\s-1LOG_LOCAL7\s0\fR' facility. If the facility name +specified is not recognized, Amd will default to `\fB\s-1LOG_DAEMON\s0\fR'. Note: +while you can use any syslog facility available on your system, it is +generally a bad idea to use those reserved for other services such as +`\fBkern\fR', `\fBlpr\fR', `\fBcron\fR', etc. +.PP +\&\fB6.5.17 log_options Parameter\fR +.PP +(type=string, default no logging options). Same as the `\fB\-x\fR' option to +Amd. Specify any logging options for Amd. Options are comma +delimited, and can be preceded by the string `\fBno\fR' to negate their +meaning. The `\fBdebug\fR' logging option is only available if am-utils was +configured with `\fB\-\-enable\-debug\fR'. You can get the list of supported +debugging options by running `\fBamd \-H\fR'. Possible values are: +.PP +`\fBall\fR' +all messages +.PP +`\fBdebug\fR' +debug messages +.PP +`\fBerror\fR' +non-fatal system errors +.PP +`\fBfatal\fR' +fatal errors +.PP +`\fBinfo\fR' +information +.PP +`\fBmap\fR' +map errors +.PP +`\fBstats\fR' +additional statistical information +.PP +`\fBuser\fR' +non-fatal user errors +.PP +`\fBwarn\fR' +warnings +.PP +`\fBwarning\fR' +warnings +.PP +\&\fB6.5.18 nfs_retransmit_counter Parameter\fR +.PP +(type=numeric, default=11). Same as the retransmit part of the `\fB\-t\fR' +timeout.retransmit option to Amd. Specifies the number of \s-1NFS\s0 +retransmissions that the kernel will use to communicate with Amd. +see \*(L"\-t Option\*(R". +.PP +\&\fB6.5.19 nfs_retry_interval Parameter\fR +.PP +(type=numeric, default=8). Same as the timeout part of the `\fB\-t\fR' +timeout.retransmit option to Amd. Specifies the \s-1NFS\s0 timeout interval, +in _tenths_ of seconds, between \s-1NFS/RPC\s0 retries (for \s-1UDP\s0 only). This +is the value that the kernel will use to communicate with Amd. *Note +\&\-t Option::. +.PP +Amd relies on the kernel \s-1RPC\s0 retransmit mechanism to trigger mount +retries. The values of the nfs_retransmit_counter and the +nfs_retry_interval parameters change the overall retry interval. Too +long an interval gives poor interactive response; too short an interval +causes excessive retries. +.PP +\&\fB6.5.20 nis_domain Parameter\fR +.PP +(type=string, default to local \s-1NIS\s0 domain name). Same as the `\fB\-y\fR' +option to Amd. Specify an alternative \s-1NIS\s0 domain from which to fetch +the \s-1NIS\s0 maps. The default is the system domain name. This option is +ignored if \s-1NIS\s0 support is not available. +.PP +\&\fB6.5.21 normalize_hostnames Parameter\fR +.PP +(type=boolean, default=`\fBno\fR'). Same as the `\fB\-n\fR' option to Amd. If +`\fByes\fR', then the name referred to by `\fB${rhost}\fR' is normalized relative +to the host database before being used. The effect is to translate +aliases into \*(L"official\*(R" names. +.PP +\&\fB6.5.22 os Parameter\fR +.PP +(type=string, default to compiled in value). Same as the `\fB\-O\fR' option +to Amd. Allows you to override the compiled-in name of the operating +system. Useful when the built-in name is not desired for backward +compatibility reasons. For example, if the built-in name is `\fBsunos5\fR', +you can override it to `\fBsos5\fR', and use older maps which were written +with the latter in mind. +.PP +\&\fB6.5.23 osver Parameter\fR +.PP +(type=string, default to compiled in value). Same as the `\fB\-o\fR' option +to Amd. Allows you to override the compiled-in version number of the +operating system. Useful when the built-in version is not desired for +backward compatibility reasons. For example, if the build in version +is `\fB2.5.1\fR', you can override it to `\fB5.5.1\fR', and use older maps that +were written with the latter in mind. +.PP +\&\fB6.5.24 pid_file Parameter\fR +.PP +(type=string, default=`\fB/dev/stdout\fR'). Specify a file to store the +process \s-1ID\s0 of the running daemon into. If not specified, Amd will +print its process id onto the standard output. Useful for killing Amd +after it had run. Note that the \s-1PID\s0 of a running Amd can also be +retrieved via Amq (see \*(L"Amq \-p option\*(R"). +.PP +This file is used only if the `\fBprint_pid\fR' option is on (*note +print_pid Parameter::). +.PP +\&\fB6.5.25 plock Parameter\fR +.PP +(type=boolean, default=`\fByes\fR'). Same as the `\fB\-S\fR' option to Amd. If +`\fByes\fR', lock the running executable pages of Amd into memory. To +improve Amd's performance, systems that support the \fIplock\fR\|(3) call can +lock the Amd process into memory. This way there is less chance the +operating system will schedule, page out, and swap the Amd process as +needed. This improves Amd's performance, at the cost of reserving the +memory used by the Amd process (making it unavailable for other +processes). +.PP +\&\fB6.5.26 portmap_program Parameter\fR +.PP +(type=numeric, default=300019). Specify an alternate Port-mapper \s-1RPC\s0 +program number, other than the official number. This is useful when +running multiple Amd processes. For example, you can run another Amd +in \*(L"test\*(R" mode, without affecting the primary Amd process in any way. +For safety reasons, the alternate program numbers that can be specified +must be in the range 300019\-300029, inclusive. Amq has an option `\fB\-P\fR' +which can be used to specify an alternate program number of an Amd to +contact. In this way, amq can fully control any number of Amd +processes running on the same host. +.PP +\&\fB6.5.27 print_pid Parameter\fR +.PP +(type=boolean, default=`\fBno\fR'). Same as the `\fB\-p\fR' option to Amd. If +`\fByes\fR', Amd will print its process \s-1ID\s0 upon starting. +.PP +\&\fB6.5.28 print_version Parameter\fR +.PP +(type=boolean, default=`\fBno\fR'). Same as the `\fB\-v\fR' option to Amd, but the +version prints and Amd continues to run. If `\fByes\fR', Amd will print its +version information string, which includes some configuration and +compilation values. +.PP +\&\fB6.5.29 restart_mounts Parameter\fR +.PP +(type=boolean, default=`\fBno\fR'). Same as the `\fB\-r\fR' option to Amd. If +`\fByes\fR' Amd will scan the mount table to determine which file systems are +currently mounted. Whenever one of these would have been auto-mounted, +Amd inherits it. +.PP +\&\fB6.5.30 selectors_on_default Parameter\fR +.PP +(type=boolean, default=`\fBno\fR'). If `\fByes\fR', then the `\fB/defaults\fR' entry of +maps will be looked for and any selectors processed before setting +defaults for all other keys in that map. Useful when you want to set +different options for a complete map based on some parameters. For +example, you may want to better the \s-1NFS\s0 performance over slow +slip-based networks as follows: +.PP +/defaults \e +wire==slip\-net;opts:=intr,rsize=1024,wsize=1024 \e +wire!=slip\-net;opts:=intr,rsize=8192,wsize=8192 +.PP +\&\fB6.5.31 show_statfs_entries Parameter\fR +.PP +(type=boolean), default=`\fBno\fR'). If `\fByes\fR', then all maps which are +browsable will also show the number of entries (keys) they have when +\&\fIdf\fR\|(1) runs. (This is accomplished by returning non-zero values to the +\&\fIstatfs\fR\|(2) system call). +.PP +\&\fB6.5.32 unmount_on_exit Parameter\fR +.PP +(type=boolean), default=`\fBno\fR'). If `\fByes\fR', then Amd will attempt to +unmount all file systems which it knows about. Normally it leaves all +(esp. \s-1NFS\s0) mounted file systems intact. Note that Amd does not know +about file systems mounted before it starts up, unless the +`\fBrestart_mounts\fR' option is used (see \*(L"restart_mounts Parameter\*(R"). +.PP +\&\fB6.5.33 vendor Parameter\fR +.PP +(type=string, default to compiled in value). The name of the vendor of +the operating system. Overrides the compiled-in vendor name. Useful +when the compiled-in name is not desired. For example, most Intel based +systems set the vendor name to `\fBunknown\fR', but you can set it to +`\fBredhat\fR'. +.PP +\&\fB6.6 Regular Map Parameters\fR +.PP +The following parameters are applicable only to regular map sections. +.PP +* Menu: +.PP +See also \*(L"map_name Parameter\*(R" +.PP +See also \*(L"tag Parameter\*(R" +.PP +\&\fB6.6.1 map_name Parameter\fR +.PP +(type=string, must be specified). Name of the map where the keys are +located. +.PP +\&\fB6.6.2 tag Parameter\fR +.PP +(type=string, default no tag). Each map entry in the configuration file +can be tagged. If no tag is specified, that map section will always be +processed by Amd. If it is specified, then Amd will process the map if +the `\fB\-T\fR' option was given to Amd, and the value given to that +command-line option matches that in the map section. +.PP +\&\fB6.7 amd.conf Examples\fR +.PP +The following is the actual `\fBamd.conf\fR' file I use at the Computer +Science Department of Columbia University. +.PP +# \s-1GLOBAL OPTIONS SECTION\s0 +[ global ] +normalize_hostnames = no +print_pid = no +#pid_file = /var/run/amd.pid +restart_mounts = yes +#unmount_on_exit = yes +auto_dir = /n +log_file = /var/log/amd +log_options = all +#debug_options = all +plock = no +selectors_on_default = yes +# config.guess picks up \*(L"sunos5\*(R" and I don't want to edit my maps yet +os = sos5 +# if you print_version after setting up \*(L"os\*(R", it will show it. +print_version = no +map_type = file +search_path = /etc/amdmaps:/usr/lib/amd:/usr/local/AMD/lib +browsable_dirs = yes +fully_qualified_hosts = no +.PP +# \s-1DEFINE AN AMD MOUNT POINT\s0 +[ /u ] +map_name = amd.u +.PP +[ /proj ] +map_name = amd.proj +.PP +[ /src ] +map_name = amd.src +.PP +[ /misc ] +map_name = amd.misc +.PP +[ /import ] +map_name = amd.import +.PP +[ /tftpboot/.amd ] +tag = tftpboot +map_name = amd.tftpboot +.SS "7 Run-time Administration" +.IX Subsection "7 Run-time Administration" +* Menu: +.PP +See also \*(L"Starting Amd\*(R" +.PP +See also \*(L"Stopping Amd\*(R" +.PP +See also \*(L"Restarting Amd\*(R" +.PP +See also \*(L"Controlling Amd\*(R" +.PP +\&\fB7.1 Starting Amd\fR +.PP +Amd is best started from `\fB/etc/rc.local\fR' on \s-1BSD\s0 systems, or from the +appropriate start-level script in `\fB/etc/init.d\fR' on System V systems. +.PP +if [ \-f /usr/local/sbin/ctl\-amd ]; then +/usr/local/sbin/ctl\-amd start; (echo \-n ' amd') > /dev/console +fi +.PP +The shell script, `\fBctl-amd\fR' is used to start, stop, or restart Amd. It +is a relatively generic script. All options you want to set should not +be made in this script, but rather updated in the `\fBamd.conf\fR' file. +see \*(L"Amd Configuration File\*(R". +.PP +If you do not wish to use an Amd configuration file, you may start +Amd manually. For example, getting the map entries via \s-1NIS:\s0 +.PP +amd \-r \-l /var/log/amd `ypcat \-k auto.master` +.PP +\&\fB7.2 Stopping Amd\fR +.PP +Amd stops in response to two signals. +.PP +`\fB\s-1SIGTERM\s0\fR' +causes the top-level automount points to be unmounted and then Amd +to exit. Any automounted filesystems are left mounted. They can +be recovered by restarting Amd with the `\fB\-r\fR' command line option. +.PP +`\fB\s-1SIGINT\s0\fR' +causes Amd to attempt to unmount any filesystems which it has +automounted, in addition to the actions of `\fB\s-1SIGTERM\s0\fR'. This signal +is primarily used for debugging. +.PP +Actions taken for other signals are undefined. +.PP +The easiest and safest way to stop Amd, without having to find its +process \s-1ID\s0 by hand, is to use the `\fBctl-amd\fR' script, as with: +.PP +ctl-amd stop +.PP +\&\fB7.3 Restarting Amd\fR +.PP +Before Amd can be started, it is vital to ensure that no other Amd +processes are managing any of the mount points, and that the previous +process(es) have terminated cleanly. When a terminating signal is set +to Amd, the automounter does _not_ terminate right then. Rather, it +starts by unmounting all of its managed mount mounts in the background, +and then terminates. It usually takes a few seconds for this process +to happen, but it can take an arbitrarily longer time. If two or more +Amd processes attempt to manage the same mount point, it usually will +result in a system lockup. +.PP +The easiest and safest way to restart Amd, without having to find +its process \s-1ID\s0 by hand, sending it the `\fB\s-1SIGTERM\s0\fR' signal, waiting for Amd +to die cleanly, and verifying so, is to use the `\fBctl-amd\fR' script, as +with: +.PP +ctl-amd restart +.PP +The script will locate the process \s-1ID\s0 of Amd, kill it, and wait for +it to die cleanly before starting a new instance of the automounter. +`\fBctl-amd\fR' will wait for a total of 30 seconds for Amd to die, and will +check once every 5 seconds if it had. +.PP +\&\fB7.4 Controlling Amd\fR +.PP +It is sometimes desirable or necessary to exercise external control +over some of Amd's internal state. To support this requirement, Amd +implements an \s-1RPC\s0 interface which is used by the \*(L"Amq\*(R" program. A +variety of information is available. +.PP +Amq generally applies an operation, specified by a single letter +option, to a list of mount points. The default operation is to obtain +statistics about each mount point. This is similar to the output shown +above but includes information about the number and type of accesses to +each mount point. +.PP +* Menu: +.PP +Default command behavior.: see \*(L"Amq default\*(R" +.PP +Flushing the map cache.: see \*(L"Amq \-f option\*(R" +.PP +Controlling a non-local host.: see \*(L"Amq \-h option\*(R" +.PP +Controlling the log file.: see \*(L"Amq \-l option\*(R" +.PP +Obtaining mount statistics.: see \*(L"Amq \-m option\*(R" +.PP +Mounting a volume.: see \*(L"Amq \-M\-option\*(R" +.PP +Getting Amd's process \s-1ID.:\s0 see \*(L"Amq \-p option\*(R" +.PP +Contacting alternate Amd processes.: see \*(L"Amq \-P\-option\*(R" +.PP +Obtaining global statistics.: see \*(L"Amq \-s option\*(R" +.PP +Use \s-1TCP\s0 transport.: see \*(L"Amq \-T option\*(R" +.PP +Use \s-1UDP\s0 transport.: see \*(L"Amq \-U\-option\*(R" +.PP +Forcing volumes to time out.: see \*(L"Amq \-u option\*(R" +.PP +Version information.: see \*(L"Amq \-v option\*(R" +.PP +Three other special options.: see \*(L"Other Amq options\*(R" +.PP +\&\fB7.4.1 Amq default information\fR +.PP +With no arguments, \*(L"Amq\*(R" obtains a brief list of all existing mounts +created by Amd. This is different from the list displayed by \fIdf\fR\|(1) +since the latter only includes system mount points. +.PP +The output from this option includes the following information: +.PP +* the automount point, +.PP +* the filesystem type, +.PP +* the mount map or mount information, +.PP +* the internal, or system mount point. +.PP +For example: +.PP +/ root \*(L"root\*(R" sky:(pid75) +/homes toplvl /usr/local/etc/amd.homes /homes +/home toplvl /usr/local/etc/amd.home /home +/homes/jsp nfs charm:/home/charm /a/charm/home/charm/jsp +/homes/phjk nfs toytown:/home/toytown /a/toytown/home/toytown/ai/phjk +.PP +If an argument is given then statistics for that volume name will be +output. For example: +.PP +What Uid Getattr Lookup RdDir RdLnk Statfs Mounted@ +/homes 0 1196 512 22 0 30 90/09/14 12:32:55 +/homes/jsp 0 0 0 0 1180 0 90/10/13 12:56:58 +.PP +`\fBWhat\fR' +the volume name. +.PP +`\fBUid\fR' +ignored. +.PP +`\fBGetattr\fR' +the count of \s-1NFS \s0\*(L"getattr\*(R" requests on this node. This should +only be non-zero for directory nodes. +.PP +`\fBLookup\fR' +the count of \s-1NFS \s0\*(L"lookup\*(R" requests on this node. This should only +be non-zero for directory nodes. +.PP +`\fBRdDir\fR' +the count of \s-1NFS \s0\*(L"readdir\*(R" requests on this node. This should only +be non-zero for directory nodes. +.PP +`\fBRdLnk\fR' +the count of \s-1NFS \s0\*(L"readlink\*(R" requests on this node. This should be +zero for directory nodes. +.PP +`\fBStatfs\fR' +the count of \s-1NFS \s0\*(L"statfs\*(R" requests on this node. This should only +be non-zero for top-level automount points. +.PP +`\fBMounted@\fR' +the date and time the volume name was first referenced. +.PP +\&\fB7.4.2 Amq `\-f' option\fR +.PP +The `\fB\-f\fR' option causes Amd to flush the internal mount map cache. This +is useful for example in Hesiod maps since Amd will not automatically +notice when they have been updated. The map cache can also be +synchronized with the map source by using the `\fBsync\fR' option (*note +Automount Filesystem::). +.PP +\&\fB7.4.3 Amq `\-l' option\fR +.PP +Tell Amd to use log_file as the log file name. For security reasons, +this _must_ be the same log file which Amd used when started. This +option is therefore only useful to refresh Amd's open file handle on +the log file, so that it can be rotated and compressed via daily cron +jobs. +.PP +\&\fB7.4.4 Amq `\-h' option\fR +.PP +By default the local host is used. In an HP-UX cluster the root server +is used since that is the only place in the cluster where Amd will be +running. To query Amd on another host the `\fB\-h\fR' option should be used. +.PP +\&\fB7.4.5 Amq `\-m' option\fR +.PP +The `\fB\-m\fR' option displays similar information about mounted filesystems, +rather than automount points. The output includes the following +information: +.PP +* the mount information, +.PP +* the mount point, +.PP +* the filesystem type, +.PP +* the number of references to this filesystem, +.PP +* the server hostname, +.PP +* the state of the file server, +.PP +* any error which has occurred. +.PP +For example: +.PP +\&\*(L"root\*(R" truth:(pid602) root 1 localhost is up +hesiod.home /home toplvl 1 localhost is up +hesiod.vol /vol toplvl 1 localhost is up +hesiod.homes /homes toplvl 1 localhost is up +amy:/home/amy /a/amy/home/amy nfs 5 amy is up +swan:/home/swan /a/swan/home/swan nfs 0 swan is up (Permission denied) +ex:/home/ex /a/ex/home/ex nfs 0 ex is down +.PP +When the reference count is zero the filesystem is not mounted but +the mount point and server information is still being maintained by Amd. +.PP +\&\fB7.4.6 Amq `\-M' option\fR +.PP +The `\fB\-M\fR' option passes a new map entry to Amd and waits for it to be +evaluated, possibly causing a mount. For example, the following +command would cause `\fB/home/toytown\fR' on host `\fBtoytown\fR' to be mounted +locally on `\fB/mnt/toytown\fR'. +.PP +amq \-M '/mnt/toytown type:=nfs;rfs:=/home/toytown;rhost:=toytown;fs:=${key}' +.PP +Amd applies some simple security checks before allowing this +operation. The check tests whether the incoming request is from a +privileged \s-1UDP\s0 port on the local machine. \*(L"Permission denied\*(R" is +returned if the check fails. +.PP +This option is very insecure as it is vulnerable to attacks such as +\&\s-1IP\s0 Spoofing. In other words, it is relatively easy for an attacker who +really wants to, to make your Amd process mount any filesystem from the +Internet! Therefore, the _complete_ code which supports the `\fB\-M\fR' +option in Amd and Amq is turned off by default. To turn it on, you +have to reconfigure am-utils with `\fBconfigure \-\-enable\-amq\-mount\fR'. +Think twice before doing so, and use this option only if you absolutely +need to. +.PP +A future release of Amd will include code to allow the \fImount\fR\|(8) +command to mount automount points: +.PP +mount \-t amd /vol hesiod.vol +.PP +This will then allow Amd to be controlled from the standard system +filesystem mount list. +.PP +\&\fB7.4.7 Amq `\-p' option\fR +.PP +Return the process \s-1ID\s0 of the remote or locally running Amd. Useful +when you need to send a signal to the local Amd process, and would +rather not have to search through the process table. This option is +used in the `\fBctl-amd\fR' script. +.PP +\&\fB7.4.8 Amq `\-P' option\fR +.PP +Contact an alternate running Amd that had registered itself on a +different \s-1RPC PROGRAM_NUMBER\s0 and apply all other operations to that +instance of the automounter. This is useful when you run multiple +copies of Amd, and need to manage each one separately. If not +specified, Amq will use the default program number for Amd, 300019. +For security reasons, the only alternate program numbers Amd can use +range from 300019 to 300029, inclusive. +.PP +For example, to kill an alternate running Amd: +.PP +kill `amq \-p \-P 300020` +.PP +\&\fB7.4.9 Amq `\-s' option\fR +.PP +The `\fB\-s\fR' option displays global statistics. If any other options are +specified or any filesystems named then this option is ignored. For +example: +.PP +requests stale mount mount unmount +deferred fhandles ok failed failed +1054 1 487 290 7017 +.PP +`\fBDeferred requests\fR' +are those for which an immediate reply could not be constructed. +For example, this would happen if a background mount was required. +.PP +`\fBStale filehandles\fR' +counts the number of times the kernel passes a stale filehandle to +Amd. Large numbers indicate problems. +.PP +`\fBMount ok\fR' +counts the number of automounts which were successful. +.PP +`\fBMount failed\fR' +counts the number of automounts which failed. +.PP +`\fBUnmount failed\fR' +counts the number of times a filesystem could not be unmounted. +Very large numbers here indicate that the time between unmount +attempts should be increased. +.PP +\&\fB7.4.10 Amq `\-T' option\fR +.PP +The `\fB\-T\fR' option causes the Amq to contact Amd using the \s-1TCP\s0 transport +only (connection oriented). Normally, Amq will use \s-1TCP\s0 first, and if +that failed, will try \s-1UDP.\s0 +.PP +\&\fB7.4.11 Amq `\-U' option\fR +.PP +The `\fB\-U\fR' option causes the Amq to contact Amd using the \s-1UDP\s0 transport +only (connectionless). Normally, Amq will use \s-1TCP\s0 first, and if that +failed, will try \s-1UDP.\s0 +.PP +\&\fB7.4.12 Amq `\-u' option\fR +.PP +The `\fB\-u\fR' option causes the time-to-live interval of the named mount +points to be expired, thus causing an unmount attempt. This is the only +safe way to unmount an automounted filesystem. It is not possible to +unmount a filesystem which has been mounted with the `\fBnounmount\fR' flag. +.PP +\&\fB7.4.13 Amq `\-v' option\fR +.PP +The `\fB\-v\fR' option displays the version of Amd in a similar way to Amd's +`\fB\-v\fR' option. +.PP +\&\fB7.4.14 Other Amq options\fR +.PP +Two other operations are implemented. These modify the state of Amd as +a whole, rather than any particular filesystem. The `\fB\-x\fR' and `\fB\-D\fR' +options have exactly the same effect as Amd's corresponding command +line options. +.PP +When Amd receives a `\fB\-x\fR' flag it limits the log options being +modified to those which were not enabled at startup. This prevents a +user turning _off_ any logging option which was specified at startup, +though any which have been turned on since then can still be turned +off. The `\fB\-D\fR' option has a similar behavior. +.SS "8 FSinfo" +.IX Subsection "8 FSinfo" +\&\s-1XXX:\s0 this chapter should be reviewed by someone knowledgeable with +fsinfo. +.PP +* Menu: +.PP +Introduction to FSinfo.: see \*(L"FSinfo Overview\*(R" +.PP +Basic concepts.: see \*(L"Using FSinfo\*(R" +.PP +Language syntax, semantics and examples.: see \*(L"FSinfo Grammar\*(R" +.PP +Defining a new host.: see \*(L"FSinfo host definitions\*(R" +.PP +Definable host attributes.: see \*(L"FSinfo host attributes\*(R" +.PP +Defining locally attached filesystems.: see \*(L"FSinfo filesystems\*(R" +.PP +Defining additional static mounts.: see \*(L"FSinfo static mounts\*(R" +.PP +See also \*(L"FSinfo automount definitions\*(R" +.PP +See also \*(L"FSinfo Command Line Options\*(R" +.PP +See also \*(L"FSinfo errors\*(R" +.PP +\&\fB8.1 FSinfo overview\fR +.PP +FSinfo is a filesystem management tool. It has been designed to work +with Amd to help system administrators keep track of the ever +increasing filesystem namespace under their control. +.PP +The purpose of FSinfo is to generate all the important standard +filesystem data files from a single set of input data. Starting with a +single data source guarantees that all the generated files are +self-consistent. One of the possible output data formats is a set of +Amd maps which can be used amongst the set of hosts described in the +input data. +.PP +FSinfo implements a declarative language. This language is +specifically designed for describing filesystem namespace and physical +layouts. The basic declaration defines a mounted filesystem including +its device name, mount point, and all the volumes and access +permissions. FSinfo reads this information and builds an internal map +of the entire network of hosts. Using this map, many different data +formats can be produced including `\fB/etc/fstab\fR', `\fB/etc/exports\fR', Amd +mount maps and `\fB/etc/bootparams\fR'. +.PP +\&\fB8.2 Using FSinfo\fR +.PP +The basic strategy when using FSinfo is to gather all the information +about all disks on all machines into one set of declarations. For each +machine being managed, the following data is required: +.PP +* Hostname +.PP +* List of all filesystems and, optionally, their mount points. +.PP +* Names of volumes stored on each filesystem. +.PP +* \s-1NFS\s0 export information for each volume. +.PP +* The list of static filesystem mounts. +.PP +The following information can also be entered into the same +configuration files so that all data can be kept in one place. +.PP +* List of network interfaces +.PP +* \s-1IP\s0 address of each interface +.PP +* Hardware address of each interface +.PP +* Dumpset to which each filesystem belongs +.PP +* and more ... +.PP +To generate Amd mount maps, the automount tree must also be defined +(see \*(L"FSinfo automount definitions\*(R"). This will have been designed at +the time the volume names were allocated. Some volume names will not be +automounted, so FSinfo needs an explicit list of which volumes should +be automounted. +.PP +Hostnames are required at several places in the FSinfo language. It +is important to stick to either fully qualified names or unqualified +names. Using a mixture of the two will inevitably result in confusion. +.PP +Sometimes volumes need to be referenced which are not defined in the +set of hosts being managed with FSinfo. The required action is to add a +dummy set of definitions for the host and volume names required. Since +the files generated for those particular hosts will not be used on them, +the exact values used is not critical. +.PP +\&\fB8.3 FSinfo grammar\fR +.PP +FSinfo has a relatively simple grammar. Distinct syntactic constructs +exist for each of the different types of data, though they share a +common flavor. Several conventions are used in the grammar fragments +below. +.PP +The notation, list(xxx), indicates a list of zero or more xxx's. +The notation, opt(xxx), indicates zero or one xxx. Items in double +quotes, eg \*(L"host\*(R", represent input tokens. Items in angle brackets, eg +<\s-1HOSTNAME\s0>, represent strings in the input. Strings need not be in +double quotes, except to differentiate them from reserved words. +Quoted strings may include the usual set of C \*(L"\e\*(R" escape sequences with +one exception: a backslash-newline-whitespace sequence is squashed into +a single space character. To defeat this feature, put a further +backslash at the start of the second line. +.PP +At the outermost level of the grammar, the input consists of a +sequence of host and automount declarations. These declarations are +all parsed before they are analyzed. This means they can appear in any +order and cyclic host references are possible. +.PP +fsinfo : list(fsinfo_attr) ; +.PP +fsinfo_attr : host | automount ; +.PP +* Menu: +.PP +See also \*(L"FSinfo host definitions\*(R" +.PP +See also \*(L"FSinfo automount definitions\*(R" +.PP +\&\fB8.4 FSinfo host definitions\fR +.PP +A host declaration consists of three parts: a set of machine attribute +data, a list of filesystems physically attached to the machine, and a +list of additional statically mounted filesystems. +.PP +host : \*(L"host\*(R" host_data list(filesystem) list(mount) ; +.PP +Each host must be declared in this way exactly once. Such things as +the hardware address, the architecture and operating system types and +the cluster name are all specified within the \*(L"host data\*(R". +.PP +All the disks the machine has should then be described in the \*(L"list +of filesystems\*(R". When describing disks, you can specify what \*(L"volname\*(R" +the disk/partition should have and all such entries are built up into a +dictionary which can then be used for building the automounter maps. +.PP +The \*(L"list of mounts\*(R" specifies all the filesystems that should be +statically mounted on the machine. +.PP +* Menu: +.PP +See also \*(L"FSinfo host attributes\*(R" +.PP +See also \*(L"FSinfo filesystems\*(R" +.PP +See also \*(L"FSinfo static mounts\*(R" +.PP +\&\fB8.5 FSinfo host attributes\fR +.PP +The host data, \*(L"host_data\*(R", always includes the \*(L"hostname\*(R". In +addition, several other host attributes can be given. +.PP +host_data : <\s-1HOSTNAME\s0> +| \*(L"{\*(R" list(host_attrs) \*(L"}\*(R" <\s-1HOSTNAME\s0> +; +.PP +host_attrs : host_attr \*(L"=\*(R" <\s-1STRING\s0> +| netif +; +.PP +host_attr : \*(L"config\*(R" +| \*(L"arch\*(R" +| \*(L"os\*(R" +| \*(L"cluster\*(R" +; +.PP +The \*(L"hostname\*(R" is, typically, the fully qualified hostname of the +machine. +.PP +Examples: +.PP +host dylan.doc.ic.ac.uk +.PP +host { +os = hpux +arch = hp300 +} dougal.doc.ic.ac.uk +.PP +The options that can be given as host attributes are shown below. +.PP +* Menu: +.PP +netif Option: see \*(L"FSinfo host netif:\*(R" +.PP +config Option: see \*(L"FSinfo host config:\*(R" +.PP +arch Option: see \*(L"FSinfo host arch:\*(R" +.PP +os Option: see \*(L"FSinfo host os:\*(R" +.PP +cluster Option: see \*(L"FSinfo host cluster:\*(R" +.PP +\&\fB8.5.1 netif Option\fR +.PP +This defines the set of network interfaces configured on the machine. +The interface attributes collected by FSinfo are the \s-1IP\s0 address, subnet +mask and hardware address. Multiple interfaces may be defined for +hosts with several interfaces by an entry for each interface. The +values given are sanity checked, but are currently unused for anything +else. +.PP +netif : \*(L"netif\*(R" <\s-1STRING\s0> \*(L"{\*(R" list(netif_attrs) \*(L"}\*(R" ; +.PP +netif_attrs : netif_attr \*(L"=\*(R" <\s-1STRING\s0> ; +.PP +netif_attr : \*(L"inaddr\*(R" | \*(L"netmask\*(R" | \*(L"hwaddr\*(R" ; +.PP +Examples: +.PP +netif ie0 { +inaddr = 129.31.81.37 +netmask = 0xfffffe00 +hwaddr = \*(L"08:00:20:01:a6:a5\*(R" +} +.PP +netif ec0 { } +.PP +\&\fB8.5.2 config Option\fR +.PP +This option allows you to specify configuration variables for the +startup scripts (`\fBrc\fR' scripts). A simple string should immediately +follow the keyword. +.PP +Example: +.PP +config \*(L"NFS_SERVER=true\*(R" +config \*(L"ZEPHYR=true\*(R" +.PP +This option is currently unsupported. +.PP +\&\fB8.5.3 arch Option\fR +.PP +This defines the architecture of the machine. For example: +.PP +arch = hp300 +.PP +This is intended to be of use when building architecture specific +mountmaps, however, the option is currently unsupported. +.PP +\&\fB8.5.4 os Option\fR +.PP +This defines the operating system type of the host. For example: +.PP +os = hpux +.PP +This information is used when creating the `\fBfstab\fR' files, for +example in choosing which format to use for the `\fBfstab\fR' entries within +the file. +.PP +\&\fB8.5.5 cluster Option\fR +.PP +This is used for specifying in which cluster the machine belongs. For +example: +.PP +cluster = \*(L"theory\*(R" +.PP +The cluster is intended to be used when generating the automount +maps, although it is currently unsupported. +.PP +\&\fB8.6 FSinfo filesystems\fR +.PP +The list of physically attached filesystems follows the machine +attributes. These should define all the filesystems available from this +machine, whether exported or not. In addition to the device name, +filesystems have several attributes, such as filesystem type, mount +options, and `\fBfsck\fR' pass number which are needed to generate `\fBfstab\fR' +entries. +.PP +filesystem : \*(L"fs\*(R" <\s-1DEVICE\s0> \*(L"{\*(R" list(fs_data) \*(L"}\*(R" ; +.PP +fs_data : fs_data_attr \*(L"=\*(R" <\s-1STRING\s0> +| mount +; +.PP +fs_data_attr +: \*(L"fstype\*(R" | \*(L"opts\*(R" | \*(L"passno\*(R" +| \*(L"freq\*(R" | \*(L"dumpset\*(R" | \*(L"log\*(R" +; +.PP +Here, <\s-1DEVICE\s0> is the device name of the disk (for example, +`\fB/dev/dsk/2s0\fR'). The device name is used for building the mount maps +and for the `\fBfstab\fR' file. The attributes that can be specified are +shown in the following section. +.PP +The FSinfo configuration file for `\fBdylan.doc.ic.ac.uk\fR' is listed +below. +.PP +host dylan.doc.ic.ac.uk +.PP +fs /dev/dsk/0s0 { +fstype = swap +} +.PP +fs /dev/dsk/0s0 { +fstype = hfs +opts = rw,noquota,grpid +passno = 0; +freq = 1; +mount / { } +} +.PP +fs /dev/dsk/1s0 { +fstype = hfs +opts = defaults +passno = 1; +freq = 1; +mount /usr { +local { +exportfs \*(L"dougal eden dylan zebedee brian\*(R" +volname /nfs/hp300/local +} +} +} +.PP +fs /dev/dsk/2s0 { +fstype = hfs +opts = defaults +passno = 1; +freq = 1; +mount default { +exportfs \*(L"toytown_clients hangers_on\*(R" +volname /home/dylan/dk2 +} +} +.PP +fs /dev/dsk/3s0 { +fstype = hfs +opts = defaults +passno = 1; +freq = 1; +mount default { +exportfs \*(L"toytown_clients hangers_on\*(R" +volname /home/dylan/dk3 +} +} +.PP +fs /dev/dsk/5s0 { +fstype = hfs +opts = defaults +passno = 1; +freq = 1; +mount default { +exportfs \*(L"toytown_clients hangers_on\*(R" +volname /home/dylan/dk5 +} +} +.PP +* Menu: +.PP +fstype Option: see \*(L"FSinfo filesystems fstype:\*(R" +.PP +opts Option: see \*(L"FSinfo filesystems opts:\*(R" +.PP +passno Option: see \*(L"FSinfo filesystems passno:\*(R" +.PP +freq Option: see \*(L"FSinfo filesystems freq:\*(R" +.PP +mount Option: see \*(L"FSinfo filesystems mount:\*(R" +.PP +dumpset Option: see \*(L"FSinfo filesystems dumpset:\*(R" +.PP +log Option: see \*(L"FSinfo filesystems log:\*(R" +.PP +\&\fB8.6.1 fstype Option\fR +.PP +This specifies the type of filesystem being declared and will be placed +into the `\fBfstab\fR' file as is. The value of this option will be handed +to `\fBmount\fR' as the filesystem type\*(--it should have such values as `\fB4.2\fR', +`\fBnfs\fR' or `\fBswap\fR'. The value is not examined for correctness. +.PP +There is one special case. If the filesystem type is specified as +`\fBexport\fR' then the filesystem information will not be added to the +host's `\fBfstab\fR' information, but it will still be visible on the +network. This is useful for defining hosts which contain referenced +volumes but which are not under full control of FSinfo. +.PP +Example: +.PP +fstype = swap +.PP +\&\fB8.6.2 opts Option\fR +.PP +This defines any options that should be given to \fImount\fR\|(8) in the +`\fBfstab\fR' file. For example: +.PP +opts = rw,nosuid,grpid +.PP +\&\fB8.6.3 passno Option\fR +.PP +This defines the \fIfsck\fR\|(8) pass number in which to check the filesystem. +This value will be placed into the `\fBfstab\fR' file. +.PP +Example: +.PP +passno = 1 +.PP +\&\fB8.6.4 freq Option\fR +.PP +This defines the interval (in days) between dumps. The value is placed +as is into the `\fBfstab\fR' file. +.PP +Example: +.PP +freq = 3 +.PP +\&\fB8.6.5 mount Option\fR +.PP +This defines the mountpoint at which to place the filesystem. If the +mountpoint of the filesystem is specified as `\fBdefault\fR', then the +filesystem will be mounted in the automounter's tree under its volume +name and the mount will automatically be inherited by the automounter. +.PP +Following the mountpoint, namespace information for the filesystem +may be described. The options that can be given here are `\fBexportfs\fR', +`\fBvolname\fR' and `\fBsel\fR'. +.PP +The format is: +.PP +mount : \*(L"mount\*(R" vol_tree ; +.PP +vol_tree : list(vol_tree_attr) ; +.PP +vol_tree_attr +: <\s-1STRING\s0> \*(L"{\*(R" list(vol_tree_info) vol_tree \*(L"}\*(R" ; +.PP +vol_tree_info +: \*(L"exportfs\*(R" <\s-1EXPORT\-DATA\s0> +| \*(L"volname\*(R" <\s-1VOLNAME\s0> +| \*(L"sel\*(R" <\s-1SELECTOR\-LIST\s0> +; +.PP +Example: +.PP +mount default { +exportfs \*(L"dylan dougal florence zebedee\*(R" +volname /vol/andrew +} +.PP +In the above example, the filesystem currently being declared will +have an entry placed into the `\fBexports\fR' file allowing the filesystem to +be exported to the machines `\fBdylan\fR', `\fBdougal\fR', `\fBflorence\fR' and +`\fBzebedee\fR'. The volume name by which the filesystem will be referred to +remotely, is `\fB/vol/andrew\fR'. By declaring the mountpoint to be +`\fBdefault\fR', the filesystem will be mounted on the local machine in the +automounter tree, where Amd will automatically inherit the mount as +`\fB/vol/andrew\fR'. +.PP +`\fBexportfs\fR' +a string defining which machines the filesystem may be exported to. +This is copied, as is, into the `\fBexports\fR' file\*(--no sanity checking +is performed on this string. +.PP +`\fBvolname\fR' +a string which declares the remote name by which to reference the +filesystem. The string is entered into a dictionary and allows +you to refer to this filesystem in other places by this volume +name. +.PP +`\fBsel\fR' +a string which is placed into the automounter maps as a selector +for the filesystem. +.PP +\&\fB8.6.6 dumpset Option\fR +.PP +This provides support for Imperial College's local file backup tools and +is not documented further here. +.PP +\&\fB8.6.7 log Option\fR +.PP +Specifies the log device for the current filesystem. This is ignored if +not required by the particular filesystem type. +.PP +\&\fB8.7 FSinfo static mounts\fR +.PP +Each host may also have a number of statically mounted filesystems. For +example, the host may be a diskless workstation in which case it will +have no `\fBfs\fR' declarations. In this case the `\fBmount\fR' declaration is +used to determine from where its filesystems will be mounted. In +addition to being added to the `\fBfstab\fR' file, this information can also +be used to generate a suitable `\fBbootparams\fR' file. +.PP +mount : \*(L"mount\*(R" <\s-1VOLNAME\s0> list(localinfo) ; +.PP +localinfo : localinfo_attr <\s-1STRING\s0> ; +.PP +localinfo_attr +: \*(L"as\*(R" +| \*(L"from\*(R" +| \*(L"fstype\*(R" +| \*(L"opts\*(R" +; +.PP +The filesystem specified to be mounted will be searched for in the +dictionary of volume names built when scanning the list of hosts' +definitions. +.PP +The attributes have the following semantics: +`\fBfrom \s-1MACHINE\s0\fR' +mount the filesystem from the machine with the hostname of +\&\*(L"machine\*(R". +.PP +`\fBas \s-1MOUNTPOINT\s0\fR' +mount the filesystem locally as the name given, in case this is +different from the advertised volume name of the filesystem. +.PP +`\fBopts \s-1OPTIONS\s0\fR' +native \fImount\fR\|(8) options. +.PP +`\fBfstype \s-1TYPE\s0\fR' +type of filesystem to be mounted. +.PP +An example: +.PP +mount /export/exec/hp300/local as /usr/local +.PP +If the mountpoint specified is either `\fB/\fR' or `\fBswap\fR', the machine +will be considered to be booting off the net and this will be noted for +use in generating a `\fBbootparams\fR' file for the host which owns the +filesystems. +.PP +\&\fB8.8 Defining an Amd Mount Map in FSinfo\fR +.PP +The maps used by Amd can be constructed from FSinfo by defining all the +automount trees. FSinfo takes all the definitions found and builds one +map for each top level tree. +.PP +The automount tree is usually defined last. A single automount +configuration will usually apply to an entire management domain. One +`\fBautomount\fR' declaration is needed for each Amd automount point. FSinfo +determines whether the automount point is \*(L"direct\*(R" (*note Direct +Automount Filesystem::) or \*(L"indirect\*(R" (see \*(L"Top-level Filesystem\*(R"). +Direct automount points are distinguished by the fact that there is no +underlying \*(L"automount_tree\*(R". +.PP +automount : \*(L"automount\*(R" opt(auto_opts) automount_tree ; +.PP +auto_opts : \*(L"opts\*(R" <\s-1MOUNT\-OPTIONS\s0> ; +.PP +automount_tree +: list(automount_attr) +; +.PP +automount_attr +: <\s-1STRING\s0> \*(L"=\*(R" <\s-1VOLNAME\s0> +| <\s-1STRING\s0> \*(L"\->\*(R" <\s-1SYMLINK\s0> +| <\s-1STRING\s0> \*(L"{\*(R" automount_tree \*(L"}\*(R" +; +.PP +If <\s-1MOUNT\-OPTIONS\s0> is given, then it is the string to be placed in +the maps for Amd for the `\fBopts\fR' option. +.PP +A \*(L"map\*(R" is typically a tree of filesystems, for example `\fBhome\fR' +normally contains a tree of filesystems representing other machines in +the network. +.PP +A map can either be given as a name representing an already defined +volume name, or it can be a tree. A tree is represented by placing +braces after the name. For example, to define a tree `\fB/vol\fR', the +following map would be defined: +.PP +automount /vol { } +.PP +Within a tree, the only items that can appear are more maps. For +example: +.PP +automount /vol { +andrew { } +X11 { } +} +.PP +In this case, FSinfo will look for volumes named `\fB/vol/andrew\fR' and +`\fB/vol/X11\fR' and a map entry will be generated for each. If the volumes +are defined more than once, then FSinfo will generate a series of +alternate entries for them in the maps. +.PP +Instead of a tree, either a link (\s-1NAME\s0 `\fB\->\fR' \s-1DESTINATION\s0) or a +reference can be specified (\s-1NAME\s0 `\fB=\fR' \s-1DESTINATION\s0). A link creates a +symbolic link to the string specified, without further processing the +entry. A reference will examine the destination filesystem and +optimize the reference. For example, to create an entry for `\fBnjw\fR' in +the `\fB/homes\fR' map, either of the two forms can be used: +.PP +automount /homes { +njw \-> /home/dylan/njw +} +.PP +or +.PP +automount /homes { +njw = /home/dylan/njw +} +.PP +In the first example, when `\fB/homes/njw\fR' is referenced from Amd, a +link will be created leading to `\fB/home/dylan/njw\fR' and the automounter +will be referenced a second time to resolve this filename. The map +entry would be: +.PP +njw type:=link;fs:=/home/dylan/njw +.PP +In the second example, the destination directory is analyzed and +found to be in the filesystem `\fB/home/dylan\fR' which has previously been +defined in the maps. Hence the map entry will look like: +.PP +njw rhost:=dylan;rfs:=/home/dylan;sublink:=njw +.PP +Creating only one symbolic link, and one access to Amd. +.PP +\&\fB8.9 FSinfo Command Line Options\fR +.PP +FSinfo is started from the command line by using the command: +.PP +fsinfo [options] files ... +.PP +The input to FSinfo is a single set of definitions of machines and +automount maps. If multiple files are given on the command-line, then +the files are concatenated together to form the input source. The files +are passed individually through the C pre-processor before being parsed. +.PP +Several options define a prefix for the name of an output file. If +the prefix is not specified no output of that type is produced. The +suffix used will correspond either to the hostname to which a file +belongs, or to the type of output if only one file is produced. +Dumpsets and the `\fBbootparams\fR' file are in the latter class. To put the +output into a subdirectory simply put a `\fB/\fR' at the end of the prefix, +making sure that the directory has already been made before running +Fsinfo. +.PP +* Menu: +.PP +Amd automount directory:: see \*(L"\-a FSinfo Option\*(R" +.PP +Prefix for bootparams files.: see \*(L"\-b FSinfo Option\*(R" +.PP +Prefix for dumpset data files.: see \*(L"\-d FSinfo Option\*(R" +.PP +Prefix for exports files.: see \*(L"\-e FSinfo Option\*(R" +.PP +Prefix for fstab files.: see \*(L"\-f FSinfo Option\*(R" +.PP +Local hostname.: see \*(L"\-h FSinfo Option\*(R" +.PP +Prefix for automount maps.: see \*(L"\-m FSinfo Option\*(R" +.PP +Ultra quiet mode.: see \*(L"\-q FSinfo Option\*(R" +.PP +Verbose mode.: see \*(L"\-v FSinfo Option\*(R" +.PP +Define new #include directory.: see \*(L"\-I FSinfo Option\*(R" +.PP +Define macro.: see \*(L"\-D\-FSinfo Option\*(R" +.PP +Undefine macro.: see \*(L"\-U FSinfo Option\*(R" +.PP +\&\fB8.9.1 `\-a' \s-1AUTODIR\s0\fR +.PP +Specifies the directory name in which to place the automounter's +mountpoints. This defaults to `\fB/a\fR'. Some sites have the autodir set +to be `\fB/amd\fR', and this would be achieved by: +.PP +fsinfo \-a /amd ... +.PP +\&\fB8.9.2 `\-b' \s-1BOOTPARAMS\s0\fR +.PP +This specifies the prefix for the `\fBbootparams\fR' filename. If it is not +given, then the file will not be generated. The `\fBbootparams\fR' file will +be constructed for the destination machine and will be placed into a +file named `\fBbootparams\fR' and prefixed by this string. The file +generated contains a list of entries describing each diskless client +that can boot from the destination machine. +.PP +As an example, to create a `\fBbootparams\fR' file in the directory +`\fBgeneric\fR', the following would be used: +.PP +fsinfo \-b generic/ ... +.PP +\&\fB8.9.3 `\-d' \s-1DUMPSETS\s0\fR +.PP +This specifies the prefix for the `\fBdumpsets\fR' file. If it is not +specified, then the file will not be generated. The file will be for +the destination machine and will be placed into a filename `\fBdumpsets\fR', +prefixed by this string. The `\fBdumpsets\fR' file is for use by Imperial +College's local backup system. +.PP +For example, to create a `\fBdumpsets\fR' file in the directory `\fBgeneric\fR', +then you would use the following: +.PP +fsinfo \-d generic/ ... +.PP +\&\fB8.9.4 `\-e' \s-1EXPORTFS\s0\fR +.PP +Defines the prefix for the `\fBexports\fR' files. If it is not given, then +the file will not be generated. For each machine defined in the +configuration files as having disks, an `\fBexports\fR' file is constructed +and given a filename determined by the name of the machine, prefixed +with this string. If a machine is defined as diskless, then no +`\fBexports\fR' file will be created for it. The files contain entries for +directories on the machine that may be exported to clients. +.PP +Example: To create the `\fBexports\fR' files for each diskfull machine and +place them into the directory `\fBexports\fR': +.PP +fsinfo \-e exports/ ... +.PP +\&\fB8.9.5 `\-f' \s-1FSTAB\s0\fR +.PP +This defines the prefix for the `\fBfstab\fR' files. The files will only be +created if this prefix is defined. For each machine defined in the +configuration files, a `\fBfstab\fR' file is created with the filename +determined by prefixing this string with the name of the machine. These +files contain entries for filesystems and partitions to mount at boot +time. +.PP +Example, to create the files in the directory `\fBfstabs\fR': +.PP +fsinfo \-f fstabs/ ... +.PP +\&\fB8.9.6 `\-h' \s-1HOSTNAME\s0\fR +.PP +Defines the hostname of the destination machine to process for. If this +is not specified, it defaults to the local machine name, as returned by +\&\fIgethostname\fR\|(2). +.PP +Example: +.PP +fsinfo \-h dylan.doc.ic.ac.uk ... +.PP +\&\fB8.9.7 `\-m' MOUNT-MAPS\fR +.PP +Defines the prefix for the automounter files. The maps will only be +produced if this prefix is defined. The mount maps suitable for the +network defined by the configuration files will be placed into files +with names calculated by prefixing this string to the name of each map. +.PP +For example, to create the automounter maps and place them in the +directory `\fBautomaps\fR': +.PP +fsinfo \-m automaps/ ... +.PP +\&\fB8.9.8 `\-q'\fR +.PP +Selects quiet mode. FSinfo suppress the \*(L"running commentary\*(R" and only +outputs any error messages which are generated. +.PP +\&\fB8.9.9 `\-v'\fR +.PP +Selects verbose mode. When this is activated, the program will display +more messages, and display all the information discovered when +performing the semantic analysis phase. Each verbose message is output +to `\fBstdout\fR' on a line starting with a `\fB#\fR' character. +.PP +\&\fB8.9.10 `\-D' NAME[=DEFN]\fR +.PP +Defines a symbol \*(L"name\*(R" for the preprocessor when reading the +configuration files. Equivalent to `\fB#define\fR' directive. +.PP +\&\fB8.9.11 `\-I' \s-1DIRECTORY\s0\fR +.PP +This option is passed into the preprocessor for the configuration files. +It specifies directories in which to find include files +.PP +\&\fB8.9.12 `\-U' \s-1NAME\s0\fR +.PP +Removes any initial definition of the symbol \*(L"name\*(R". Inverse of the +`\fB\-D\fR' option. +.PP +\&\fB8.10 Errors produced by FSinfo\fR +.PP +The following table documents the errors and warnings which FSinfo may +produce. +.PP +" expected +Occurs if an unescaped newline is found in a quoted string. +.PP +ambiguous mount: \s-1VOLUME\s0 is a replicated filesystem +If several filesystems are declared as having the same volume +name, they will be considered replicated filesystems. To mount a +replicated filesystem statically, a specific host will need to be +named, to say which particular copy to try and mount, else this +error will result. +.PP +can't open \s-1FILENAME\s0 for writing +Occurs if any errors are encountered when opening an output file. +.PP +cannot determine localname since volname \s-1VOLUME\s0 is not uniquely defined +If a volume is replicated and an attempt is made to mount the +filesystem statically without specifying a local mountpoint, +FSinfo cannot calculate a mountpoint, as the desired pathname +would be ambiguous. +.PP +\&\s-1DEVICE\s0 has duplicate exportfs data +Produced if the `\fBexportfs\fR' option is used multiple times within the +same branch of a filesystem definition. For example, if you +attempt to set the `\fBexportfs\fR' data at different levels of the +mountpoint directory tree. +.PP +dump frequency for \s-1HOST:DEVICE\s0 is non-zero +Occurs if \s-1DEVICE\s0 has its `\fBfstype\fR' declared to be `\fBswap\fR' or +`\fBexport\fR' and the `\fBdump\fR' option is set to a value greater than +zero. Swap devices should not be dumped. +.PP +duplicate host \s-1HOSTNAME\s0! +If a host has more than one definition. +.PP +end of file within comment +A comment was unterminated before the end of one of the +configuration files. +.PP +\&\s-1FILENAME:\s0 cannot open for reading +If a file specified on the command line as containing +configuration data could not be opened. +.PP +\&\s-1FILESYSTEM\s0 has a volname but no exportfs data +Occurs when a volume name is declared for a file system, but the +string specifying what machines the filesystem can be exported to +is missing. +.PP +fs field \*(L"FIELD-NAME\*(R" already set +Occurs when multiple definitions are given for one of the +attributes of a host's filesystem. +.PP +host field \*(L"FIELD-NAME\*(R" already set +If duplicate definitions are given for any of the fields with a +host definition. +.PP +\&\s-1HOST:DEVICE\s0 has more than one mount point +Occurs if the mount option for a host's filesystem specifies +multiple trees at which to place the mountpoint. +.PP +\&\s-1HOST:DEVICE\s0 has no mount point +Occurs if the `\fBmount\fR' option is not specified for a host's +filesystem. +.PP +\&\s-1HOST:DEVICE\s0 needs field \*(L"FIELD-NAME\*(R" +Occurs when a filesystem is missing a required field. FIELD-NAME +could be one of `\fBfstype\fR', `\fBopts\fR', `\fBpassno\fR' or `\fBmount\fR'. +.PP +HOST:mount field specified for swap partition +Occurs if a mountpoint is given for a filesystem whose type is +declared to be `\fBswap\fR'. +.PP +malformed \s-1IP\s0 dotted quad: \s-1ADDRESS\s0 +If the Internet address of an interface is incorrectly specified. +An Internet address definition is handled to inet_addr(3N) to see +if it can cope. If not, then this message will be displayed. +.PP +malformed netmask: \s-1NETMASK\s0 +If the netmask cannot be decoded as though it were a hexadecimal +number, then this message will be displayed. It will typically be +caused by incorrect characters in the \s-1NETMASK\s0 value. +.PP +mount field \*(L"FIELD-NAME\*(R" already set +Occurs when a static mount has multiple definitions of the same +field. +.PP +mount tree field \*(L"FIELD-NAME\*(R" already set +Occurs when the FIELD-NAME is defined more than once during the +definition of a filesystems mountpoint. +.PP +netif field FIELD-NAME already set +Occurs if you attempt to define an attribute of an interface more +than once. +.PP +network booting requires both root and swap areas +Occurs if a machine has mount declarations for either the root +partition or the swap area, but not both. You cannot define a +machine to only partially boot via the network. +.PP +no disk mounts on \s-1HOSTNAME\s0 +If there are no static mounts, nor local disk mounts specified for +a machine, this message will be displayed. +.PP +no volname given for \s-1HOST:DEVICE\s0 +Occurs when a filesystem is defined to be mounted on `\fBdefault\fR', but +no volume name is given for the file system, then the mountpoint +cannot be determined. +.PP +not allowed '/' in a directory name +Occurs when a pathname with multiple directory elements is +specified as the name for an automounter tree. A tree should only +have one name at each level. +.PP +pass number for \s-1HOST:DEVICE\s0 is non-zero +Occurs if \s-1DEVICE\s0 has its `\fBfstype\fR' declared to be `\fBswap\fR' or +`\fBexport\fR' and the \fIfsck\fR\|(8) pass number is set. Swap devices should +not be fsck'd. see \*(L"FSinfo filesystems fstype\*(R". +.PP +sub-directory \s-1DIRECTORY\s0 of DIRECTORY-TREE starts with '/' +Within the filesystem specification for a host, if an element +\&\s-1DIRECTORY\s0 of the mountpoint begins with a `\fB/\fR' and it is not the +start of the tree. +.PP +sub-directory of DIRECTORY-TREE is named \*(L"default\*(R" +`\fBdefault\fR' is a keyword used to specify if a mountpoint should be +automatically calculated by FSinfo. If you attempt to specify a +directory name as this, it will use the filename of `\fBdefault\fR' but +will produce this warning. +.PP +unknown \e sequence +Occurs if an unknown escape sequence is found inside a string. +Within a string, you can give the standard C escape sequences for +strings, such as newlines and tab characters. +.PP +unknown directory attribute +If an unknown keyword is found while reading the definition of a +host's filesystem mount option. +.PP +unknown filesystem attribute +Occurs if an unrecognized keyword is used when defining a host's +filesystems. +.PP +unknown host attribute +Occurs if an unrecognized keyword is used when defining a host. +.PP +unknown mount attribute +Occurs if an unrecognized keyword is found while parsing the list +of static mounts. +.PP +unknown volname \s-1VOLUME\s0 automounted [ on name ] +Occurs if \s-1VOLUME\s0 is used in a definition of an automount map but +the volume name has not been declared during the host filesystem +definitions. +.PP +volname \s-1VOLUME\s0 is unknown +Occurs if an attempt is made to mount or reference a volume name +which has not been declared during the host filesystem definitions. +.PP +volname \s-1VOLUME\s0 not exported from \s-1MACHINE\s0 +Occurs if you attempt to mount the volume \s-1VOLUME\s0 from a machine +which has not declared itself to have such a filesystem available. +.SS "9 Hlfsd" +.IX Subsection "9 Hlfsd" +Hlfsd is a daemon which implements a filesystem containing a symbolic +link to subdirectory within a user's home directory, depending on the +user which accessed that link. It was primarily designed to redirect +incoming mail to users' home directories, so that it can be read from +anywhere. It was designed and implemented by Erez Zadok + and Alexander Dupuy , at +the Computer Science Department (http://www.cs.columbia.edu/) of +Columbia University (http://www.columbia.edu/). A paper +(http://www.cs.columbia.edu/~ezk/research/hlfsd/hlfsd.html) on Hlfsd +was presented at the Usenix \s-1LISA VII\s0 conference in 1993. +.PP +Hlfsd operates by mounting itself as an \s-1NFS\s0 server for the directory +containing linkname, which defaults to `\fB/hlfs/home\fR'. Lookups within +that directory are handled by Hlfsd, which uses the password map to +determine how to resolve the lookup. The directory will be created if +it doesn't already exist. The symbolic link will be to the accessing +user's home directory, with subdir appended to it. If not specified, +subdir defaults to `\fB.hlfsdir\fR'. This directory will also be created if +it does not already exist. +.PP +A `\fB\s-1SIGTERM\s0\fR' sent to Hlfsd will cause it to shutdown. A `\fB\s-1SIGHUP\s0\fR' +will flush the internal caches, and reload the password map. It will +also close and reopen the log file, to enable the original log file to +be removed or rotated. A `\fB\s-1SIGUSR1\s0\fR' will cause it to dump its internal +table of user IDs and home directories to the file `\fB/tmp/hlfsddump\fR'. +.PP +* Menu: +.PP +See also \*(L"Introduction to Hlfsd\*(R" +.PP +See also \*(L"Background to Mail Delivery\*(R" +.PP +See also \*(L"Using Hlfsd\*(R" +.PP +\&\fB9.1 Introduction to Hlfsd\fR +.PP +Electronic mail has become one of the major applications for many +computer networks, and use of this service is expected to increase over +time, as networks proliferate and become faster. Providing a convenient +environment for users to read, compose, and send electronic mail has +become a requirement for systems administrators (SAs). +.PP +Widely used methods for handling mail usually require users to be +logged into a designated \*(L"home\*(R" machine, where their mailbox files +reside. Only on that one machine can they read newly arrived mail. +Since users have to be logged into that system to read their mail, they +often find it convenient to run all of their other processes on that +system as well, including memory and CPU-intensive jobs. For example, +in our department, we have allocated and configured several +multi-processor servers to handle such demanding CPU/memory +applications, but these were underutilized, in large part due to the +inconvenience of not being able to read mail on those machines. (No +home directories were located on these designated CPU-servers, since we +did not want \s-1NFS\s0 service for users' home directories to have to compete +with CPU-intensive jobs. At the same time, we discouraged users from +running demanding applications on their home machines.) +.PP +Many different solutions have been proposed to allow users to read +their mail on any host. However, all of these solutions fail in one or +more of several ways: +.PP +* they introduce new single points of failure +.PP +* they require using different mail transfer agents (MTAs) or user +agents (UAs) +.PP +* they do not solve the problem for all cases, i.e. the solution is +only partially successful for a particular environment. +.PP +We have designed a simple filesystem, called the \*(L"Home-Link File +System\*(R", to provide the ability to deliver mail to users' home +directories, without modification to mail-related applications. We have +endeavored to make it as stable as possible. Of great importance to us +was to make sure the \s-1HLFS\s0 daemon, `\fBhlfsd\fR' , would not hang under any +circumstances, and would take the next-best action when faced with +problems. Compared to alternative methods, Hlfsd is a stable, more +general solution, and easier to install/use. In fact, in some ways, we +have even managed to improve the reliability and security of mail +service. +.PP +Our server implements a small filesystem containing a symbolic link +to a subdirectory of the invoking user's home directory, and named +symbolic links to users' mailbox files. +.PP +The Hlfsd server finds out the \s-1UID\s0 of the process that is accessing +its mount point, and resolves the pathname component `\fBhome\fR' as a +symbolic link to a subdirectory within the home directory given by the +\&\s-1UID\s0's entry in the password file. If the \s-1GID\s0 of the process that +attempts to access a mailbox file is a special one (called \s-1HLFS_GID\s0), +then the server maps the name of the _next_ pathname component directly +to the user's mailbox. This is necessary so that access to a mailbox +file by users other than the owner can succeed. The server has safety +features in case of failures such as hung filesystems or home directory +filesystems that are inaccessible or full. +.PP +On most of our machines, mail gets delivered to the directory +`\fB/var/spool/mail\fR'. Many programs, including UAs, depend on that path. +Hlfsd creates a directory `\fB/mail\fR', and mounts itself on top of that +directory. Hlfsd implements the path name component called `\fBhome\fR', +pointing to a subdirectory of the user's home directory. We have made +`\fB/var/spool/mail\fR' a symbolic link to `\fB/mail/home\fR', so that accessing +`\fB/var/spool/mail\fR' actually causes access to a subdirectory within a +user's home directory. +.PP +The following table shows an example of how resolving the pathname +`\fB/var/mail/NAME\fR' to `\fB/users/ezk/.mailspool/NAME\fR' proceeds. +.PP +Resolving Component Pathname left to resolve Value if symbolic link +/ var/mail/NAME +var/ mail/NAME +mail@ /mail/home/NAME mail@ \-> /mail/home +/ mail/home/NAME +mail/ home/NAME +home@ \s-1NAME \s0 home@ \-> +/users/ezk/.mailspool +/ users/ezk/.mailspool/NAME +users/ ezk/.mailspool/NAME +ezk/ .mailspool/NAME +\&.mailspool/ \s-1NAME +NAME\s0 +.PP +\&\fB9.2 Background to Mail Delivery\fR +.PP +This section provides an in-depth discussion of why available methods +for delivering mail to home directories are not as good as the one used +by Hlfsd. +.PP +* Menu: +.PP +See also \*(L"Single-Host Mail Spool Directory\*(R" +.PP +See also \*(L"Centralized Mail Spool Directory\*(R" +.PP +See also \*(L"Distributed Mail Spool Service\*(R" +.PP +See also \*(L"Why Deliver Into the Home Directory?\*(R" +.PP +\&\fB9.2.1 Single-Host Mail Spool Directory\fR +.PP +The most common method for mail delivery is for mail to be appended to a +mailbox file in a standard spool directory on the designated \*(L"mail +home\*(R" machine of the user. The greatest advantage of this method is +that it is the default method most vendors provide with their systems, +thus very little (if any) configuration is required on the \s-1SA\s0's part. +All they need to set up are mail aliases directing mail to the host on +which the user's mailbox file is assigned. (Otherwise, mail is +delivered locally, and users find mailboxes on many machines.) +.PP +As users become more sophisticated, and aided by windowing systems, +they find themselves logging in on multiple hosts at once, performing +several tasks concurrently. They ask to be able to read their mail on +any host on the network, not just the one designated as their \*(L"mail +home\*(R". +.PP +\&\fB9.2.2 Centralized Mail Spool Directory\fR +.PP +A popular method for providing mail readability from any host is to have +all mail delivered to a mail spool directory on a designated +\&\*(L"mail-server\*(R" which is exported via \s-1NFS\s0 to all of the hosts on the +network. Configuring such a system is relatively easy. On most +systems, the bulk of the work is a one-time addition to one or two +configuration files in `\fB/etc\fR'. The file-server's spool directory is +then hard-mounted across every machine on the local network. In small +environments with only a handful of hosts this can be an acceptable +solution. In our department, with a couple of hundred active hosts and +thousands of mail messages processed daily, this was deemed completely +unacceptable, as it introduced several types of problems: +.PP +Scalability and Performance +As more and more machines get added to the network, more mail +traffic has to go over \s-1NFS\s0 to and from the mail-server. Users like +to run mail-watchers, and read their mail often. The stress on the +shared infrastructure increases with every user and host added; +loads on the mail server would most certainly be high since all +mail delivery goes through that one \fImachine.\fR\|(1) This leads to +lower reliability and performance. To reduce the number of +concurrent connections between clients and the server host, some +SAs have resorted to automounting the mail-spool directory. But +this solution only makes things worse: since users often run mail +watchers, and many popular applications such as `\fBtrn\fR', `\fBemacs\fR', +`\fBcsh\fR' or `\fBksh\fR' check periodically for new mail, the automounted +directory would be effectively permanently mounted. If it gets +unmounted automatically by the automounter program, it is most +likely to get mounted shortly afterwards, consuming more I/O +resources by the constant cycle of mount and umount calls. +.PP +Reliability +The mail-server host and its network connectivity must be very +reliable. Worse, since the spool directory has to be +hard\-mounted,(2) many processes which access the spool directory +(various shells, `\fBlogin\fR', `\fBemacs\fR', etc.) would be hung as long as +connectivity to the mail-server is severed. To improve +reliability, SAs may choose to backup the mail-server's spool +partition several times a day. This may make things worse since +reading or delivering mail while backups are in progress may cause +backups to be inconsistent; more backups consume more backup-media +resources, and increase the load on the mail-server host. +.PP +\&\-\-\-\-\-\-\-\-\-\- Footnotes \-\-\-\-\-\-\-\-\-\- +.PP +(1) Delivery via NFS-mounted filesystems may require usage of +`\fBrpc.lockd\fR' and `\fBrpc.statd\fR' to provide distributed file-locking, both +of which are widely regarded as unstable and unreliable. Furthermore, +this will degrade performance, as local processes as well as remote +`\fBnfsd\fR' processes are kept busy. +.PP +(2) No \s-1SA\s0 in their right minds would soft-mount read/write +partitions \*(-- the chances for data loss are too great. +.PP +\&\fB9.2.3 Distributed Mail Spool Service\fR +.PP +Despite the existence of a few systems that support delivery to users' +home directories, mail delivery to home directories hasn't caught on. +We believe the main reason is that there are too many programs that +\&\*(L"know\*(R" where mailbox files reside. Besides the obvious (the delivery +program `\fB/bin/mail\fR' and mail readers like `\fB/usr/ucb/Mail\fR', `\fBmush\fR', +`\fBmm\fR', etc.), other programs that know mailbox location are login, from, +almost every shell, `\fBxbiff\fR', `\fBxmailbox\fR', and even some programs not +directly related to mail, such as `\fBemacs\fR' and `\fBtrn\fR'. Although some of +these programs can be configured to look in different directories with +the use of environment variables and other resources, many of them +cannot. The overall porting work is significant. +.PP +Other methods that have yet to catch on require the use of a special +mail-reading server, such as \s-1IMAP\s0 or \s-1POP. \s0 The main disadvantage of +these systems is that UAs need to be modified to use these services \*(-- +a long and involved task. That is why they are not popular at this +time. +.PP +Several other ideas have been proposed and even used in various +environments. None of them is robust. They are mostly very +specialized, inflexible, and do not extend to the general case. Some of +the ideas are plain bad, potentially leading to lost or corrupt mail: +.PP +automounters +Using an automounter such as Amd to provide a set of symbolic links +from the normal spool directory to user home directories is not +sufficient. UAs rename, unlink, and recreate the mailbox as a +regular file, therefore it must be a real file, not a symbolic +link. Furthermore, it must reside in a real directory which is +writable by the UAs and MTAs. This method may also require +populating `\fB/var/spool/mail\fR' with symbolic links and making sure +they are updated. Making Amd manage that directory directly +fails, since many various lock files need to be managed as well. +Also, Amd does not provide all of the \s-1NFS\s0 operations which are +required to write mail such as write, create, remove, and unlink. +.PP +`\fB\f(CB$MAIL\fB\fR' +Setting this variable to an automounted directory pointing to the +user's mail spool host only solves the problem for those programs +which know and use `\fB\f(CB$MAIL\fB\fR'. Many programs don't, therefore this +solution is partial and of limited flexibility. Also, it requires +the SAs or the users to set it themselves \*(-- an added level of +inconvenience and possible failures. +.PP +/bin/mail +Using a different mail delivery agent could be the solution. One +such example is `\fBhdmail\fR'. However, `\fBhdmail\fR' still requires +modifying all UAs, the \s-1MTA\s0's configuration, installing new +daemons, and changing login scripts. This makes the system less +upgradable or compatible with others, and adds one more +complicated system for SAs to deal with. It is not a complete +solution because it still requires each user have their `\fB\f(CB$MAIL\fB\fR' +variable setup correctly, and that every program use this variable. +.PP +\&\fB9.2.4 Why Deliver Into the Home Directory?\fR +.PP +There are several major reasons why SAs might want to deliver mail +directly into the users' home directories: +.PP +Location +Many mail readers need to move mail from the spool directory to the +user's home directory. It speeds up this operation if the two are +on the same filesystem. If for some reason the user's home +directory is inaccessible, it isn't that useful to be able to read +mail, since there is no place to move it to. In some cases, +trying to move mail to a non-existent or hung filesystem may +result in mail loss. +.PP +Distribution +Having all mail spool directories spread among the many more +filesystems minimizes the chances that complete environments will +grind to a halt when a single server is down. It does increase +the chance that there will be someone who is not able to read +their mail when a machine is down, but that is usually preferred +to having no one be able to read their mail because a centralized +mail server is down. The problem of losing some mail due to the +(presumably) higher chances that a user's machine is down is +minimized in \s-1HLFS.\s0 +.PP +Security +Delivering mail to users' home directories has another advantage \*(-- +enhanced security and privacy. Since a shared system mail spool +directory has to be world-readable and searchable, any user can see +whether other users have mail, when they last received new mail, +or when they last read their mail. Programs such as `\fBfinger\fR' +display this information, which some consider an infringement of +privacy. While it is possible to disable this feature of `\fBfinger\fR' +so that remote users cannot see a mailbox file's status, this +doesn't prevent local users from getting the information. +Furthermore, there are more programs which make use of this +information. In shared environments, disabling such programs has +to be done on a system-wide basis, but with mail delivered to +users' home directories, users less concerned with privacy who do +want to let others know when they last received or read mail can +easily do so using file protection bits. +.PP +In summary, delivering mail to home directories provides users the +functionality sought, and also avoids most of the problems just +discussed. +.PP +\&\fB9.3 Using Hlfsd\fR +.PP +* Menu: +.PP +See also \*(L"Controlling Hlfsd\*(R" +.PP +See also \*(L"Hlfsd Options\*(R" +.PP +See also \*(L"Hlfsd Files\*(R" +.PP +\&\fB9.3.1 Controlling Hlfsd\fR +.PP +Much the same way Amd is controlled by `\fBctl-amd\fR', so does Hlfsd get +controlled by the `\fBctl-hlfsd\fR' script: +.PP +ctl-hlfsd start +Start a new Hlfsd. +.PP +ctl-hlfsd stop +Stop a running Hlfsd. +.PP +ctl-hlfsd restart +Stop a running Hlfsd, wait for 10 seconds, and then start a new +one. It is hoped that within 10 seconds, the previously running +Hlfsd terminate properly; otherwise, starting a second one could +cause system lockup. +.PP +For example, on our systems, we start Hlfsd within `\fBctl-hlfsd\fR' as +follows on Solaris 2 systems: +.PP +hlfsd \-a /var/alt_mail \-x all \-l /var/log/hlfsd /mail/home .mailspool +.PP +The directory `\fB/var/alt_mail\fR' is a directory in the root partition +where alternate mail will be delivered into, when it cannot be delivered +into the user's home directory. +.PP +Normal mail gets delivered into `\fB/var/mail\fR', but on our systems, +that is a symbolic link to `\fB/mail/home\fR'. `\fB/mail\fR' is managed by Hlfsd, +which creates a dynamic symlink named `\fBhome\fR', pointing to the +subdirectory `\fB.mailspool\fR' _within_ the accessing user's home directory. +This results in mail which normally should go to `/var/mail/`\fB\f(CB$USER\fB\fR'', +to go to ``\fB\f(CB$HOME\fB\fR'/.mailspool/`\fB\f(CB$USER\fB\fR''. +.PP +Hlfsd does not create the `\fB/var/mail\fR' symlink. This needs to be +created (manually) once on each host, by the system administrators, as +follows: +.PP +mv /var/mail /var/alt_mail +ln \-s /mail/home /var/mail +.PP +\&\fB9.3.2 Hlfsd Options\fR +.PP +\&\-a \s-1ALT_DIR\s0 +Alternate directory. The name of the directory to which the +symbolic link returned by Hlfsd will point, if it cannot access +the home directory of the user. This defaults to `\fB/var/hlfs\fR'. +This directory will be created if it doesn't exist. It is +expected that either users will read these files, or the system +administrators will run a script to resend this \*(L"lost mail\*(R" to its +owner. +.PP +\&\-c CACHE-INTERVAL +Caching interval. Hlfsd will cache the validity of home +directories for this interval, in seconds. Entries which have +been verified within the last CACHE-INTERVAL seconds will not be +verified again, since the operation could be expensive, and the +entries are most likely still valid. After the interval has +expired, Hlfsd will re-verify the validity of the user's home +directory, and reset the cache time-counter. The default value +for CACHE-INTERVAL is 300 seconds (5 minutes). +.PP +\&\-f +Force fast startup. This option tells Hlfsd to skip startup-time +consistency checks such as existence of mount directory, alternate +spool directory, symlink to be hidden under the mount directory, +their permissions and validity. +.PP +\&\-g \s-1GROUP\s0 +Set the special group \s-1HLFS_GID\s0 to \s-1GROUP. \s0 Programs such as +`\fB/usr/ucb/from\fR' or `\fB/usr/sbin/in.comsat\fR', which access the +mailboxes of other users, must be setgid `\fB\s-1HLFS_GID\s0\fR' to work +properly. The default group is `\fBhlfs\fR'. If no group is provided, +and there is no group `\fBhlfs\fR', this feature is disabled. +.PP +\&\-h +Help. Print a brief help message, and exit. +.PP +\&\-i RELOAD-INTERVAL +Map-reloading interval. Each RELOAD-INTERVAL seconds, Hlfsd will +reload the password map. Hlfsd needs the password map for the +UIDs and home directory pathnames. Hlfsd schedules a `\fB\s-1SIGALRM\s0\fR' to +reload the password maps. A `\fB\s-1SIGHUP\s0\fR' sent to Hlfsd will force it +to reload the maps immediately. The default value for +RELOAD-INTERVAL is 900 seconds (15 minutes.) +.PP +\&\-l \s-1LOGFILE\s0 +Specify a log file to which Hlfsd will record events. If \s-1LOGFILE\s0 +is the string `\fBsyslog\fR' then the log messages will be sent to the +system log daemon by \fIsyslog\fR\|(3), using the `\fB\s-1LOG_DAEMON\s0\fR' facility. +This is also the default. +.PP +\&\-n +No verify. Hlfsd will not verify the validity of the symbolic link +it will be returning, or that the user's home directory contains +sufficient disk-space for spooling. This can speed up Hlfsd at the +cost of possibly returning symbolic links to home directories +which are not currently accessible or are full. By default, Hlfsd +validates the symbolic-link in the background. The `\fB\-n\fR' option +overrides the meaning of the `\fB\-c\fR' option, since no caching is +necessary. +.PP +\&\-o MOUNT-OPTIONS +Mount options which Hlfsd will use to mount itself on top of +\&\s-1DIRNAME. \s0 By default, MOUNT-OPTIONS is set to `\fBro\fR'. If the system +supports symbolic-link caching, default options are set to +`\fBro,nocache\fR'. +.PP +\&\-p +Print \s-1PID. \s0 Outputs the process-id of Hlfsd to standard output +where it can be saved into a file. +.PP +\&\-v +Version. Displays version information to standard error. +.PP +\&\-x LOG-OPTIONS +Specify run-time logging options. The options are a comma +separated list chosen from: `\fBfatal\fR', `\fBerror\fR', `\fBuser\fR', `\fBwarn\fR', +`\fBinfo\fR', `\fBmap\fR', `\fBstats\fR', `\fBall\fR'. +.PP +\&\-C +Force Hlfsd to run on systems that cannot turn off the \s-1NFS\s0 +attribute-cache. Use of this option on those systems is +discouraged, as it may result in loss or misdelivery of mail. The +option is ignored on systems that can turn off the attribute-cache. +.PP +\&\-D LOG-OPTIONS +Select from a variety of debugging options. Prefixing an option +with the string `\fBno\fR' reverses the effect of that option. Options +are cumulative. The most useful option is `\fBall\fR'. Since this +option is only used for debugging other options are not documented +here. A fuller description is available in the program source. A +`\fB\s-1SIGUSR1\s0\fR' sent to Hlfsd will cause it to dump its internal +password map to the file `\fB/usr/tmp/hlfsd.dump.XXXXXX\fR', where +`\fB\s-1XXXXXX\s0\fR' will be replaced by a random string generated by +\&\fImktemp\fR\|(3) or (the more secure) \fImkstemp\fR\|(3). +.PP +\&\-P PASSWORD-FILE +Read the user-name, user-id, and home directory information from +the file PASSWORD-FILE. Normally, Hlfsd will use \fIgetpwent\fR\|(3) to +read the password database. This option allows you to override the +default database, and is useful if you want to map users' mail +files to a directory other than their home directory. Only the +username, uid, and home-directory fields of the file PASSWORD-FILE +are read and checked. All other fields are ignored. The file +PASSWORD-FILE must otherwise be compliant with Unix Version 7 +colon-delimited format \fIpasswd\fR\|(4). +.PP +\&\fB9.3.3 Hlfsd Files\fR +.PP +The following files are used by Hlfsd: +.PP +`\fB/hlfs\fR' +directory under which Hlfsd mounts itself and manages the symbolic +link `\fBhome\fR'. +.PP +`\fB.hlfsdir\fR' +default sub-directory in the user's home directory, to which the +`\fBhome\fR' symbolic link returned by Hlfsd points. +.PP +`\fB/var/hlfs\fR' +directory to which `\fBhome\fR' symbolic link returned by Hlfsd points +if it is unable to verify the that user's home directory is +accessible. +.PP +For discussion on other files used by Hlfsd, see *Note +lostaltmail::, and see \*(L"lostaltmail.conf\-sample\*(R". +.SS "10 Assorted Tools" +.IX Subsection "10 Assorted Tools" +The following are additional utilities and scripts included with +am-utils, and get installed. +.PP +* Menu: +.PP +See also \*(L"am-eject\*(R" +.PP +See also \*(L"amd.conf\-sample\*(R" +.PP +See also \*(L"amd2ldif\*(R" +.PP +See also \*(L"amd2sun\*(R" +.PP +See also \*(L"automount2amd\*(R" +.PP +See also \*(L"ctl-amd\*(R" +.PP +See also \*(L"ctl-hlfsd\*(R" +.PP +See also \*(L"expn\*(R" +.PP +See also \*(L"fix-amd-map\*(R" +.PP +See also \*(L"fixmount\*(R" +.PP +See also \*(L"fixrmtab\*(R" +.PP +See also \*(L"lostaltmail\*(R" +.PP +See also \*(L"lostaltmail.conf\-sample\*(R" +.PP +See also \*(L"mk-amd-map\*(R" +.PP +See also \*(L"pawd\*(R" +.PP +See also \*(L"wait4amd\*(R" +.PP +See also \*(L"wait4amd2die\*(R" +.PP +See also \*(L"wire-test\*(R" +.PP +\&\fB10.1 am-eject\fR +.PP +A shell script unmounts a floppy or CD-ROM that is automounted, and +then attempts to eject the removable device. +.PP +\&\fB10.2 amd.conf\-sample\fR +.PP +A sample Amd configuration file. see \*(L"Amd Configuration File\*(R". +.PP +\&\fB10.3 amd2ldif\fR +.PP +A script to convert Amd maps to \s-1LDAP\s0 input files. Use it as follows: +.PP +amd2ldif mapname base < amd.mapfile > mapfile.ldif +.PP +\&\fB10.4 amd2sun\fR +.PP +A script to convert Amd maps to Sun Automounter maps. Use it as follows +.PP +amd2sun < amd.mapfile > auto_mapfile +.PP +\&\fB10.5 automount2amd\fR +.PP +A script to convert old Sun Automounter maps to Amd maps. +.PP +Say you have the Sun automount file auto.foo, with these two lines: +home earth:/home +moon \-ro,intr server:/proj/images +Running +automount2amd auto.foo > amd.foo +.PP +will produce the Amd map amd.foo with this content: +.PP +# generated by automount2amd on Sat Aug 14 17:59:32 US/Eastern 1999 +.PP +/defaults \e\e +type:=nfs;opts:=rw,grpid,nosuid,utimeout=600 +.PP +home \e +host==earth;type:=link;fs:=/home \e\e +rhost:=earth;rfs:=/home +.PP +moon \e +\&\-addopts:=ro,intr \e\e +host==server;type:=link;fs:=/proj/images \e\e +rhost:=server;rfs:=/proj/images +.PP +This perl script will use the following /default entry +type:=nfs;opts:=rw,grpid,nosuid,utimeout=600 +If you wish to override that, define the \f(CW$DEFAULTS\fR environment +variable, or modify the script. +.PP +If you wish to generate Amd maps using the hostd (*note hostd +Selector Variable::) Amd map syntax, then define the environment +variable \f(CW$DOMAIN\fR or modify the script. +.PP +Note that automount2amd does not understand newer Sun Automount map +syntax, those used by autofs. +.PP +\&\fB10.6 ctl-amd\fR +.PP +A script to start, stop, or restart Amd. Use it as follows: +.PP +ctl-amd start +Start a new Amd process. +.PP +ctl-amd stop +Stop the running Amd. +.PP +ctl-amd restart +Stop the running Amd (if any), safely wait for it to terminate, and +then start a new process \*(-- only if the previous one died cleanly. +.PP +see \*(L"Run-time Administration\*(R", for more details. +.PP +\&\fB10.7 ctl-hlfsd\fR +.PP +A script for controlling Hlfsd, much the same way `\fBctl-amd\fR' controls +Amd. Use it as follows: +.PP +ctl-hlfsd start +Start a new Hlfsd process. +.PP +ctl-hlfsd stop +Stop the running Hlfsd. +.PP +ctl-hlfsd restart +Stop the running Hlfsd (if any), wait for 10 seconds for it to +terminate, and then start a new process \*(-- only if the previous one +died cleanly. +.PP +see \*(L"Hlfsd\*(R", for more details. +.PP +\&\fB10.8 expn\fR +.PP +A script to expand email addresses into their full name. It is +generally useful when using with the `\fBlostaltmail\fR' script, but is a +useful tools otherwise. +.PP +$ expn \-v ezk@cs.columbia.edu +ezk@cs.columbia.edu \-> +ezk@shekel.mcl.cs.columbia.edu +ezk@shekel.mcl.cs.columbia.edu \-> +Erez Zadok <"| /usr/local/mh/lib/slocal \-user ezk || exit 75> +Erez Zadok <\eezk> +Erez Zadok +.PP +\&\fB10.9 fix-amd-map\fR +.PP +Am-utils changed some of the syntax and default values of some +variables. For example, the default value for `\fB${os}\fR' for Solaris 2.x +(aka SunOS 5.x) systems used to be `\fBsos5\fR', it is now more automatically +generated from `\fBconfig.guess\fR' and its value is `\fBsunos5\fR'. +.PP +This script converts older Amd maps to new ones. Use it as follows: +.PP +fix-amd-map < old.map > new.map +.PP +\&\fB10.10 fixmount\fR +.PP +`\fBfixmount\fR' is a variant of \fIshowmount\fR\|(8) that can delete bogus mount +entries in remote \fImountd\fR\|(8) daemons. This is useful to cleanup +otherwise ever-accumulating \*(L"junk\*(R". Use it for example: +.PP +fixmount \-r host +.PP +See the online manual page for `\fBfixmount\fR' for more details of its +usage. +.PP +\&\fB10.11 fixrmtab\fR +.PP +A script to invalidate `\fB/etc/rmtab\fR' entries for hosts named. Also +restart mountd for changes to take effect. Use it for example: +.PP +fixrmtab host1 host2 ... +.PP +\&\fB10.12 lostaltmail\fR +.PP +A script used with Hlfsd to resend any \*(L"lost\*(R" mail. Hlfsd redirects +mail which cannot be written into the user's home directory to an +alternate directory. This is useful to continue delivering mail, even +if the user's file system was unavailable, full, or over quota. But, +the mail which gets delivered to the alternate directory needs to be +resent to its respective users. This is what the `\fBlostaltmail\fR' script +does. +.PP +Use it as follows: +.PP +lostaltmail +.PP +This script needs a configuration file `\fBlostaltmail.conf\fR' set up +with the right parameters to properly work. see \*(L"Hlfsd\*(R", for more +details. +.PP +\&\fB10.13 lostaltmail.conf\-sample\fR +.PP +This is a text file with configuration parameters needed for the +`\fBlostaltmail\fR' script. The script includes comments explaining each of +the configuration variables. See it for more information. Also *note +Hlfsd:: for general information. +.PP +\&\fB10.14 mk-amd-map\fR +.PP +This program converts a normal Amd map file into an ndbm database with +the same prefix as the named file. Use it as follows: +.PP +mk-amd-map mapname +.PP +\&\fB10.15 pawd\fR +.PP +Pawd is used to print the current working directory, adjusted to +reflect proper paths that can be reused to go through the automounter +for the shortest possible path. In particular, the path printed back +does not include any of Amd's local mount points. Using them is +unsafe, because Amd may unmount managed file systems from the mount +points, and thus including them in paths may not always find the files +within. +.PP +Without any arguments, Pawd will print the automounter adjusted +current working directory. With any number of arguments, it will print +the adjusted path of each one of the arguments. +.PP +\&\fB10.16 wait4amd\fR +.PP +A script to wait for Amd to start on a particular host before +performing an arbitrary command. The command is executed repeatedly, +with 1 second intervals in between. You may interrupt the script using +`\fB^C\fR' (or whatever keyboard sequence your terminal's `\fBintr\fR' function is +bound to). +.PP +Examples: +.PP +wait4amd saturn amq \-p \-h saturn +When Amd is up on host `\fBsaturn\fR', get the process \s-1ID\s0 of that +running Amd. +.PP +wait4amd pluto rlogin pluto +Remote login to host `\fBpluto\fR' when Amd is up on that host. It is +generally necessary to wait for Amd to properly start and +initialize on a remote host before logging in to it, because +otherwise user home directories may not be accessible across the +network. +.PP +wait4amd pluto +A short-hand version of the previous command, since the most useful +reason for this script is to login to a remote host. I use it very +often when testing out new versions of Amd, and need to reboot hung +hosts. +.PP +\&\fB10.17 wait4amd2die\fR +.PP +This script is used internally by `\fBctl-amd\fR' when used to restart Amd. +It waits for Amd to terminate. If it detected that Amd terminated +cleanly, this script will return an exist status of zero. Otherwise, +it will return a non-zero exit status. +.PP +The script tests for Amd's existence once every 5 seconds, six +times, for a total of 30 seconds. It will return a zero exist status as +soon as it detects that Amd dies. +.PP +\&\fB10.18 wire-test\fR +.PP +A simple program to test if some of the most basic networking functions +in am-util's library `\fBlibamu\fR' work. It also tests the combination of +\&\s-1NFS\s0 protocol and version number that are supported from the current +host, to a remote one. +.PP +For example, in this test a machine which only supports \s-1NFS\s0 Version +2 is contacting a remote host that can support the same version, but +using both \s-1UDP\s0 and \s-1TCP. \s0 If no host name is specified, `\fBwire-test\fR' will +try `\fBlocalhost\fR'. +.PP +$ wire-test moisil +Network name is \*(L"mcl\-lab\-net.cs.columbia.edu\*(R" +Network number is \*(L"128.59.13\*(R" +Network name is \*(L"old\-net.cs.columbia.edu\*(R" +Network number is \*(L"128.59.16\*(R" +My \s-1IP\s0 address is 0x7f000001. +\&\s-1NFS\s0 Version and protocol tests to host \*(L"moisil\*(R"... +testing vers=2, proto=\*(L"udp\*(R" \-> found version 2. +testing vers=3, proto=\*(L"udp\*(R" \-> failed! +testing vers=2, proto=\*(L"tcp\*(R" \-> found version 2. +testing vers=3, proto=\*(L"tcp\*(R" \-> failed! +.SS "11 Examples" +.IX Subsection "11 Examples" +* Menu: +.PP +See also \*(L"User Filesystems\*(R" +.PP +See also \*(L"Home Directories\*(R" +.PP +See also \*(L"Architecture Sharing\*(R" +.PP +See also \*(L"Wildcard Names\*(R" +.PP +See also \*(L"rwho servers\*(R" +.PP +See also \*(L"vol\*(R"\*(L" in \*(R" +.PP +See also \*(L"defaults with selectors\*(R"\*(L" in \*(R" +.PP +See also \*(L"tftpboot in a chroot-ed environment\*(R"\*(L" in \*(R" +.PP +\&\fB11.1 User Filesystems\fR +.PP +With more than one fileserver, the directories most frequently +cross-mounted are those containing user home directories. A common +convention used at Imperial College is to mount the user disks under +/home/machine. +.PP +Typically, the `\fB/etc/fstab\fR' file contained a long list of entries +such as: +.PP +machine:/home/machine /home/machine nfs ... +.PP +for each fileserver on the network. +.PP +There are numerous problems with this system. The mount list can +become quite large and some of the machines may be down when a system is +booted. When a new fileserver is installed, `\fB/etc/fstab\fR' must be +updated on every machine, the mount directory created and the filesystem +mounted. +.PP +In many environments most people use the same few workstations, but +it is convenient to go to a colleague's machine and access your own +files. When a server goes down, it can cause a process on a client +machine to hang. By minimizing the mounted filesystems to only include +those actively being used, there is less chance that a filesystem will +be mounted when a server goes down. +.PP +The following is a short extract from a map taken from a research +fileserver at Imperial College. +.PP +Note the entry for `\fBlocalhost\fR' which is used for users such as the +operator (`\fBopr\fR') who have a home directory on most machine as +`\fB/home/localhost/opr\fR'. +.PP +/defaults opts:=rw,intr,grpid,nosuid +charm host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \e +host==${key};type:=ufs;dev:=/dev/xd0g +# +\&... +.PP +# +localhost type:=link;fs:=${host} +\&... +# +# dylan has two user disks so have a +# top directory in which to mount them. +# +dylan type:=auto;fs:=${map};pref:=${key}/ +# +dylan/dk2 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \e +host==dylan;type:=ufs;dev:=/dev/dsk/2s0 +# +dylan/dk5 host!=dylan;type:=nfs;rhost:=dylan;rfs:=/home/${key} \e +host==dylan;type:=ufs;dev:=/dev/dsk/5s0 +\&... +# +toytown host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \e +host==${key};type:=ufs;dev:=/dev/xy1g +\&... +# +zebedee host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} \e +host==${key};type:=ufs;dev:=/dev/dsk/1s0 +# +# Just for access... +# +gould type:=auto;fs:=${map};pref:=${key}/ +gould/staff host!=gould;type:=nfs;rhost:=gould;rfs:=/home/${key} +# +gummo host!=${key};type:=nfs;rhost:=${key};rfs:=/home/${key} +\&... +.PP +This map is shared by most of the machines listed so on those +systems any of the user disks is accessible via a consistent name. Amd +is started with the following command +.PP +amd /home amd.home +.PP +Note that when mounting a remote filesystem, the \*(L"automounted\*(R" mount +point is referenced, so that the filesystem will be mounted if it is +not yet (at the time the remote `\fBmountd\fR' obtains the file handle). +.PP +\&\fB11.2 Home Directories\fR +.PP +One convention for home directories is to locate them in `\fB/homes\fR' so +user `\fBjsp\fR''s home directory is `\fB/homes/jsp\fR'. With more than a single +fileserver it is convenient to spread user files across several +machines. All that is required is a mount-map which converts login +names to an automounted directory. +.PP +Such a map might be started by the command: +.PP +amd /homes amd.homes +.PP +where the map `\fBamd.homes\fR' contained the entries: +.PP +/defaults type:=link # All the entries are of type:=link +jsp fs:=/home/charm/jsp +njw fs:=/home/dylan/dk5/njw +\&... +phjk fs:=/home/toytown/ai/phjk +sjv fs:=/home/ganymede/sjv +.PP +Whenever a login name is accessed in `\fB/homes\fR' a symbolic link +appears pointing to the real location of that user's home directory. In +this example, `\fB/homes/jsp\fR' would appear to be a symbolic link pointing +to `\fB/home/charm/jsp\fR'. Of course, `\fB/home\fR' would also be an automount +point. +.PP +This system causes an extra level of symbolic links to be used. +Although that turns out to be relatively inexpensive, an alternative is +to directly mount the required filesystems in the `\fB/homes\fR' map. The +required map is simple, but long, and its creation is best automated. +The entry for `\fBjsp\fR' could be: +.PP +jsp \-sublink:=${key};rfs:=/home/charm \e +host==charm;type:=ufs;dev:=/dev/xd0g \e +host!=charm;type:=nfs;rhost:=charm +.PP +This map can become quite big if it contains a large number of +entries. By combining two other features of Amd it can be greatly +simplified. +.PP +First the \s-1UFS\s0 partitions should be mounted under the control of +`\fB/etc/fstab\fR', taking care that they are mounted in the same place that +Amd would have automounted them. In most cases this would be something +like `\fB/a/\*(L"host\*(R"/home/\*(L"host\*(R"\fR' and `\fB/etc/fstab\fR' on host `\fBcharm\fR' would +have a line: +.PP +/dev/xy0g /a/charm/home/charm 4.2 rw,nosuid,grpid 1 5 +.PP +The map can then be changed to: +.PP +/defaults type:=nfs;sublink:=${key};opts:=rw,intr,nosuid,grpid +jsp rhost:=charm;rfs:=/home/charm +njw rhost:=dylan;rfs:=/home/dylan/dk5 +\&... +phjk rhost:=toytown;rfs:=/home/toytown;sublink:=ai/${key} +sjv rhost:=ganymede;rfs:=/home/ganymede +.PP +This map operates as usual on a remote machine (ie `\fB${host}\fR' not +equal to `\fB${rhost}\fR'). On the machine where the filesystem is stored +(ie `\fB${host}\fR' equal to `\fB${rhost}\fR'), Amd will construct a local +filesystem mount point which corresponds to the name of the locally +mounted \s-1UFS\s0 partition. If Amd is started with the `\fB\-r\fR' option then +instead of attempting an \s-1NFS\s0 mount, Amd will simply inherit the \s-1UFS\s0 +mount (see \*(L"Inheritance Filesystem\*(R"). If `\fB\-r\fR' is not used then a +loopback \s-1NFS\s0 mount will be made. This type of mount is known to cause +a deadlock on many systems. +.PP +\&\fB11.3 Architecture Sharing\fR +.PP +Often a filesystem will be shared by machines of different +architectures. Separate trees can be maintained for the executable +images for each architecture, but it may be more convenient to have a +shared tree, with distinct subdirectories. +.PP +A shared tree might have the following structure on the fileserver +(called `\fBfserver\fR' in the example): +.PP +local/tex +local/tex/fonts +local/tex/lib +local/tex/bin +local/tex/bin/sun3 +local/tex/bin/sun4 +local/tex/bin/hp9000 +\&... +.PP +In this example, the subdirectories of `\fBlocal/tex/bin\fR' should be +hidden when accessed via the automount point (conventionally `\fB/vol\fR'). +A mount-map for `\fB/vol\fR' to achieve this would look like: +.PP +/defaults sublink:=${/key};rhost:=fserver;type:=link +tex type:=auto;fs:=${map};pref:=${key}/ +tex/fonts host!=fserver;type:=nfs;rfs:=/vol/tex \e +host==fserver;fs:=/usr/local/tex +tex/lib host!=fserver;type:=nfs;rfs:=/vol/tex \e +host==fserver;fs:=/usr/local/tex +tex/bin \-sublink:=${/key}/${arch} \e +host!=fserver;type:=nfs;rfs:=/vol/tex \e +host:=fserver;fs:=/usr/local/tex +.PP +When `\fB/vol/tex/bin\fR' is referenced, the current machine architecture +is automatically appended to the path by the `\fB${sublink}\fR' variable. +This means that users can have `\fB/vol/tex/bin\fR' in their `\fB\s-1PATH\s0\fR' without +concern for architecture dependencies. +.PP +\&\fB11.4 Wildcard Names & Replicated Servers\fR +.PP +By using the wildcard facility, Amd can \*(L"overlay\*(R" an existing directory +with additional entries. The system files are usually mounted under +`\fB/usr\fR'. If instead, Amd is mounted on `\fB/usr\fR', additional names can be +overlayed to augment or replace names in the \*(L"master\*(R" `\fB/usr\fR'. A map to +do this would have the form: +.PP +local type:=auto;fs:=local\-map +share type:=auto;fs:=share\-map +* \-type:=nfs;rfs:=/export/exec/${arch};sublink:=\*(L"${key}\*(R" \e +rhost:=fserv1 rhost:=fserv2 rhost:=fserv3 +.PP +Note that the assignment to `\fB${sublink}\fR' is surrounded by double +quotes to prevent the incoming key from causing the map to be +misinterpreted. This map has the effect of directing any access to +`\fB/usr/local\fR' or `\fB/usr/share\fR' to another automount point. +.PP +In this example, it is assumed that the `\fB/usr\fR' files are replicated +on three fileservers: `\fBfserv1\fR', `\fBfserv2\fR' and `\fBfserv3\fR'. For any +references other than to `\fBlocal\fR' and `\fBshare\fR' one of the servers is used +and a symbolic link to ${autodir}/${rhost}/export/exec/${arch}/whatever +is returned once an appropriate filesystem has been mounted. +.PP +\&\fB11.5 `rwho' servers\fR +.PP +The `\fB/usr/spool/rwho\fR' directory is a good candidate for automounting. +For efficiency reasons it is best to capture the rwho data on a small +number of machines and then mount that information onto a large number +of clients. The data written into the rwho files is byte order +dependent so only servers with the correct byte ordering can be used by +a client: +.PP +/defaults type:=nfs +usr/spool/rwho \-byte==little;rfs:=/usr/spool/rwho \e +rhost:=vaxA rhost:=vaxB \e +|| \-rfs:=/usr/spool/rwho \e +rhost:=sun4 rhost:=hp300 +.PP +\&\fB11.6 `/vol'\fR +.PP +`\fB/vol\fR' is used as a catch-all for volumes which do not have other +conventional names. +.PP +Below is part of the `\fB/vol\fR' map for the domain `\fBdoc.ic.ac.uk\fR'. The +`\fBr+d\fR' tree is used for new or experimental software that needs to be +available everywhere without installing it on all the fileservers. +Users wishing to try out the new software then simply include +`\fB/vol/r+d/{bin,ucb}\fR' in their path. +.PP +The main tree resides on one host `\fBgould.doc.ic.ac.uk\fR', which has +different `\fBbin\fR', `\fBetc\fR', `\fBlib\fR' and `\fBucb\fR' sub-directories for each +machine architecture. For example, `\fB/vol/r+d/bin\fR' for a Sun\-4 would be +stored in the sub-directory `\fBbin/sun4\fR' of the filesystem `\fB/usr/r+d\fR'. +When it was accessed a symbolic link pointing to +`\fB/a/gould/usr/r+d/bin/sun4\fR' would be returned. +.PP +/defaults type:=nfs;opts:=rw,grpid,nosuid,intr,soft +wp \-opts:=rw,grpid,nosuid;rhost:=charm \e +host==charm;type:=link;fs:=/usr/local/wp \e +host!=charm;type:=nfs;rfs:=/vol/wp +\&... +# +src \-opts:=rw,grpid,nosuid;rhost:=charm \e +host==charm;type:=link;fs:=/usr/src \e +host!=charm;type:=nfs;rfs:=/vol/src +# +r+d type:=auto;fs:=${map};pref:=r+d/ +# per architecture bin,etc,lib&ucb... +r+d/bin rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch} +r+d/etc rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch} +r+d/include rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key} +r+d/lib rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch} +r+d/man rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key} +r+d/src rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key} +r+d/ucb rhost:=gould.doc.ic.ac.uk;rfs:=/usr/r+d;sublink:=${/key}/${arch} +# hades pictures +pictures \-opts:=rw,grpid,nosuid;rhost:=thpfs \e +host==thpfs;type:=link;fs:=/nbsd/pictures \e +host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=pictures +# hades tools +hades \-opts:=rw,grpid,nosuid;rhost:=thpfs \e +host==thpfs;type:=link;fs:=/nbsd/hades \e +host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=hades +# bsd tools for hp. +bsd \-opts:=rw,grpid,nosuid;arch==hp9000;rhost:=thpfs \e +host==thpfs;type:=link;fs:=/nbsd/bsd \e +host!=thpfs;type:=nfs;rfs:=/nbsd;sublink:=bsd +.PP +\&\fB11.7 `/defaults' with selectors\fR +.PP +It is sometimes useful to have different defaults for a given map. To +achieve this, the `\fB/defaults\fR' entry must be able to process normal +selectors. This feature is turned on by setting `selectors_on_default += yes' in the `\fBamd.conf\fR' file. see \*(L"selectors_on_default Parameter\*(R". +.PP +In this example, I set different default \s-1NFS\s0 mount options for hosts +which are running over a slower network link. By setting a smaller size +for the \s-1NFS\s0 read and write buffer sizes, you can greatly improve remote +file service performance. +.PP +/defaults \e +wire==slip\-net;opts:=rw,intr,rsize=1024,wsize=1024,timeo=20,retrans=10 \e +wire!=slip\-net;opts:=rw,intr +.PP +\&\fB11.8 `/tftpboot' in a chroot-ed environment\fR +.PP +In this complex example, we attempt to run an Amd process _inside_ a +chroot-ed environment. `\fBtftpd\fR' (Trivial \s-1FTP\s0) is used to trivially +retrieve files used to boot X\-Terminals, Network Printers, Network +routers, diskless workstations, and other such devices. For security +reasons, `\fBtftpd\fR' (and also `\fBftpd\fR') processes are run using the +\&\fIchroot\fR\|(2) system call. This provides an environment for these +processes, where access to any files outside the directory where the +chroot-ed process runs is denied. +.PP +For example, if you start `\fBtftpd\fR' on your system with +.PP +chroot /tftpboot /usr/sbin/tftpd +.PP +then the `\fBtftpd\fR' process will not be able to access any files outside +`\fB/tftpboot\fR'. This ensures that no one can retrieve files such as +`\fB/etc/passwd\fR' and run password crackers on it. +.PP +Since the \s-1TFTP\s0 service works by broadcast, it is necessary to have at +least one \s-1TFTP\s0 server running on each subnet. If you have lots of files +that you need to make available for `\fBtftp\fR', and many subnets, it could +take significant amounts of disk space on each host serving them. +.PP +A solution we implemented at Columbia University was to have every +host run `\fBtftpd\fR', but have those servers retrieve the boot files from +two replicated servers. Those replicated servers have special +partitions dedicated to the many network boot files. +.PP +We start Amd as follows: +.PP +amd /tftpboot/.amd amd.tftpboot +.PP +That is, Amd is serving the directory `\fB/tftpboot/.amd\fR'. The `\fBtftp\fR' +server runs inside `\fB/tftpboot\fR' and is chroot-ed in that directory too. +The `\fBamd.tftpboot\fR' map looks like: +.PP +# +# Amd /tftpboot directory \-> host map +# +.PP +/defaults opts:=nosuid,ro,intr,soft;fs:=/tftpboot/import;type:=nfs +.PP +tp host==lol;rfs:=/n/lol/import/tftpboot;type:=lofs \e +host==ober;rfs:=/n/ober/misc/win/tftpboot;type:=lofs \e +rhost:=ober;rfs:=/n/ober/misc/win/tftpboot \e +rhost:=lol;rfs:=/n/lol/import/tftpboot +.PP +To help understand this example, I list a few of the file entries +that are created inside `\fB/tftpboot\fR': +.PP +$ ls \-la /tftpboot +dr-xr-xr-x 2 root 512 Aug 30 23:11 .amd +drwxrwsr-x 12 root 512 Aug 30 08:00 import +lrwxrwxrwx 1 root 33 Feb 27 1997 adminpr.cfg \-> ./.amd/tp/hplj/adminpr.cfg +lrwxrwxrwx 1 root 22 Dec 5 1996 tekxp \-> ./.amd/tp/xterms/tekxp +lrwxrwxrwx 1 root 1 Dec 5 1996 tftpboot \-> . +.PP +Here is an explanation of each of the entries listed above: +.PP +`\fB.amd\fR' +This is the Amd mount point. Note that you do not need to run a +separate Amd process for the \s-1TFTP\s0 service. The \fIchroot\fR\|(2) system +call only protects against file access, but the same process can +still serve files and directories inside and outside the chroot-ed +environment, because Amd itself was not run in chroot-ed mode. +.PP +`\fBimport\fR' +This is the mount point where Amd will mount the directories +containing the boot files. The map is designed so that remote +directories will be \s-1NFS\s0 mounted (even if they are already mounted +elsewhere), and local directories are loopback mounted (since they +are not accessible outside the chroot-ed `\fB/tftpboot\fR' directory). +.PP +`\fBadminpr.cfg\fR' +`\fBtekxp\fR' +Two manually created symbolic links to directories _inside_ the +Amd-managed directory. The crossing of the component `\fBtp\fR' will +cause Amd to automount one of the remote replicas. Once crossed, +access to files inside proceeds as usual. The `\fBadminpr.cfg\fR' is a +configuration file for an \s-1HP\s0 Laser-Jet 4si printer, and the `\fBtekxp\fR' +is a directory for Tektronix X\-Terminal boot files. +.PP +`\fBtftpboot\fR' +This innocent looking symlink is important. Usually, when devices +boot via the \s-1TFTP\s0 service, they perform the `\fBget file\fR' command to +retrieve \s-1FILE. \s0 However, some devices assume that `\fBtftpd\fR' does not +run in a chroot-ed environment, but rather \*(L"unprotected\*(R", and thus +use a full pathname for files to retrieve, as in `get +/tftpboot/file'. This symlink effectively strips out the leading +`\fB/tftpboot/\fR'. +.SS "12 Internals" +.IX Subsection "12 Internals" +Note that there are more error and logging messages possible than are +listed here. Most of them are self-explanatory. Refer to the program +sources for more details on the rest. +.PP +* Menu: +.PP +See also \*(L"Log Messages\*(R" +.PP +\&\fB12.1 Log Messages\fR +.PP +In the following sections a brief explanation is given of some of the +log messages made by Amd. Where the message is in `\fBtypewriter\fR' font, +it corresponds exactly to the message produced by Amd. Words in +\&\*(L"italic\*(R" are replaced by an appropriate string. Variables, `\fB${var}\fR', +indicate that the value of the appropriate variable is output. +.PP +Log messages are either sent directly to a file, or logged via the +\&\fIsyslog\fR\|(3) mechanism. see \*(L"log_file Parameter\*(R". In either case, +entries in the file are of the form: +date-string hostname amd[pid] message +.PP +* Menu: +.PP +See also \*(L"Fatal errors\*(R" +.PP +See also \*(L"Info messages\*(R" +.PP +\&\fB12.1.1 Fatal errors\fR +.PP +Amd attempts to deal with unusual events. Whenever it is not possible +to deal with such an error, Amd will log an appropriate message and, if +it cannot possibly continue, will either exit or abort. These messages +are selected by `\fB\-x fatal\fR' on the command line. When \fIsyslog\fR\|(3) is +being used, they are logged with level `\fB\s-1LOG_FATAL\s0\fR'. Even if Amd +continues to operate it is likely to remain in a precarious state and +should be restarted at the earliest opportunity. +.PP +Attempting to inherit not-a-filesystem +The prototype mount point created during a filesystem restart did +not contain a reference to the restarted filesystem. This error +\&\*(L"should never happen\*(R". +.PP +Can't bind to domain \*(L"NIS-domain\*(R" +A specific \s-1NIS\s0 domain was requested on the command line, but no +server for that domain is available on the local net. +.PP +Can't determine \s-1IP\s0 address of this host (hostname) +When Amd starts it determines its own \s-1IP\s0 address. If this lookup +fails then Amd cannot continue. The hostname it looks up is that +obtained returned by \fIgethostname\fR\|(2) system call. +.PP +Can't find root file handle for automount point +Amd creates its own file handles for the automount points. When it +mounts itself as a server, it must pass these file handles to the +local kernel. If the filehandle is not obtainable the mount point +is ignored. This error \*(L"should never happen\*(R". +.PP +Must be root to mount filesystems (euid = euid) +To prevent embarrassment, Amd makes sure it has appropriate system +privileges. This amounts to having an euid of 0. The check is +made after argument processing complete to give non-root users a +chance to access the `\fB\-v\fR' option. +.PP +No work to do \- quitting +No automount points were given on the command line and so there is +no work to do. +.PP +Out of memory +While attempting to malloc some memory, the memory space available +to Amd was exhausted. This is an unrecoverable error. +.PP +Out of memory in realloc +While attempting to realloc some memory, the memory space +available to Amd was exhausted. This is an unrecoverable error. +.PP +cannot create rpc/udp service +Either the \s-1NFS\s0 or \s-1AMQ\s0 endpoint could not be created. +.PP +gethostname: description +The \fIgethostname\fR\|(2) system call failed during startup. +.PP +host name is not set +The \fIgethostname\fR\|(2) system call returned a zero length host name. +This can happen if Amd is started in single user mode just after +booting the system. +.PP +ifs_match called! +An internal error occurred while restarting a pre-mounted +filesystem. This error \*(L"should never happen\*(R". +.PP +mount_afs: description +An error occurred while Amd was mounting itself. +.PP +run_rpc failed +Somehow the main \s-1NFS\s0 server loop failed. This error \*(L"should never +happen\*(R". +.PP +unable to free rpc arguments in amqprog_1 +The incoming arguments to the \s-1AMQ\s0 server could not be free'ed. +.PP +unable to free rpc arguments in nfs_program_1 +The incoming arguments to the \s-1NFS\s0 server could not be free'ed. +.PP +unable to register (\s-1AMQ_PROGRAM, AMQ_VERSION,\s0 udp) +The \s-1AMQ\s0 server could not be registered with the local portmapper +or the internal \s-1RPC\s0 dispatcher. +.PP +unable to register (\s-1NFS_PROGRAM, NFS_VERSION, 0\s0) +The \s-1NFS\s0 server could not be registered with the internal \s-1RPC\s0 +dispatcher. +.PP +\&\s-1XXX:\s0 This section needs to be updated +.PP +\&\fB12.1.2 Info messages\fR +.PP +Amd generates information messages to record state changes. These +messages are selected by `\fB\-x info\fR' on the command line. When \fIsyslog\fR\|(3) +is being used, they are logged with level `\fB\s-1LOG_INFO\s0\fR'. +.PP +The messages listed below can be generated and are in a format +suitable for simple statistical analysis. \*(L"mount-info\*(R" is the string +that is displayed by \*(L"Amq\*(R" in its mount information column and placed +in the system mount table. +.PP +\&\*(L"${path}\*(R" forcibly timed out +An automount point has been timed out by the Amq command. +.PP +\&\*(L"${path}\*(R" has timed out +No access to the automount point has been made within the timeout +period. +.PP +Filehandle denied for \*(L"${rhost}:${rfs}\*(R" +The mount daemon refused to return a file handle for the requested +filesystem. +.PP +Filehandle error for \*(L"${rhost}:${rfs}\*(R": description +The mount daemon gave some other error for the requested +filesystem. +.PP +Finishing with status exit-status +Amd is about to exit with the given exit status. +.PP +Re-synchronizing cache for map ${map} +The named map has been modified and the internal cache is being +re-synchronized. +.PP +file server ${rhost} is down \- timeout of \*(L"${path}\*(R" ignored +An automount point has timed out, but the corresponding file +server is known to be down. This message is only produced once +for each mount point for which the server is down. +.PP +file server ${rhost} type nfs is down +An \s-1NFS\s0 file server that was previously up is now down. +.PP +file server ${rhost} type nfs is up +An \s-1NFS\s0 file server that was previously down is now up. +.PP +file server ${rhost} type nfs starts down +A new \s-1NFS\s0 file server has been referenced and is known to be down. +.PP +file server ${rhost} type nfs starts up +A new \s-1NFS\s0 file server has been referenced and is known to be up. +.PP +mount of \*(L"${path}\*(R" on ${fs} timed out +Attempts to mount a filesystem for the given automount point have +failed to complete within 30 seconds. +.PP +mount-info mounted fstype ${type} on ${fs} +A new file system has been mounted. +.PP +mount-info restarted fstype ${type} on ${fs} +Amd is using a pre-mounted filesystem to satisfy a mount request. +.PP +mount-info unmounted fstype ${type} from ${fs} +A file system has been unmounted. +.PP +mount-info unmounted fstype ${type} from ${fs} link ${fs}/${sublink} +A file system of which only a sub-directory was in use has been +unmounted. +.PP +restarting mount-info on ${fs} +A pre-mounted file system has been noted. +.PP +\&\s-1XXX:\s0 This section needs to be updated +.SS "Acknowledgments & Trademarks" +.IX Subsection "Acknowledgments & Trademarks" +Many thanks to the Amd Developers +mailing list through the months developing am-utils. These members +have contributed to the discussions, ideas, code and documentation, and +subjected their systems to alpha quality code. Special thanks go to +those authors (http://www.cs.columbia.edu/~ezk/am\-utils/AUTHORS.txt) who +have submitted patches. +.PP +Thanks to the Formal Methods Group at Imperial College for suffering +patiently while Amd was being developed on their machines. +.PP +Thanks to the many people who have helped with the development of +Amd, especially Piete Brooks at the Cambridge University Computing Lab +for many hours of testing, experimentation and discussion. +.PP +Thanks to the Amd Workers +mailing list members for many suggestions and bug reports to Amd. +.PP +* \s-1DEC, VAX\s0 and Ultrix are registered trademarks of Digital Equipment +Corporation. +.PP +* \s-1AIX\s0 and \s-1IBM\s0 are registered trademarks of International Business +Machines Corporation. +.PP +* Sun, \s-1NFS\s0 and SunOS are registered trademarks of Sun Microsystems, +Inc. +.PP +* \s-1UNIX\s0 is a registered trademark in the \s-1USA\s0 and other countries, +exclusively licensed through X/Open Company, Ltd. +.PP +* All other registered trademarks are owned by their respective +owners. +.SS "Index" +.IX Subsection "Index" +[index] +* Menu: +.PP +!exists, boolean mount selector: see \*(L"exists Selector Function\*(R", . +.PP +(line 6) +!false, boolean mount selector: see \*(L"false Selector Function\*(R", . +.PP +(line 6) +!in_network, boolean mount selector: see \*(L"in_network Selector Function\*(R", . +.PP +(line 6) +!netgrp, boolean mount selector: see \*(L"netgrp Selector Function\*(R", . +.PP +(line 6) +!netgrpd, boolean mount selector: see \*(L"netgrpd Selector Function\*(R", . +.PP +(line 6) +!true, boolean mount selector: see \*(L"true Selector Function\*(R", . +.PP +(line 6) +/defaults with selectors: see \*(L"defaults with selectors\*(R"\*(L" in \*(R", . +.PP +(line 6) +/etc/passwd maps: see \*(L"Password maps\*(R", . (line 6) +.PP +/etc/rc.local additions: see \*(L"Starting Amd\*(R", . (line 6) +.PP +/tftpboot in a chroot-ed environment: see \*(L"tftpboot in a chroot-ed environment\*(R"\*(L" in \*(R", . +.PP +(line 6) +/vol: see \*(L"vol\*(R"\*(L" in \*(R", . (line 6) +.PP +Additions to /etc/rc.local: see \*(L"Starting Amd\*(R", . (line 6) +.PP +addopts, mount option: see \*(L"addopts Option\*(R", . (line 6) +.PP +Aliased hostnames: see \*(L"\-n Option\*(R", . (line 6) +.PP +Alternate locations: see \*(L"Mounting a Volume\*(R", . (line 6) +.PP +am-eject: see \*(L"am-eject\*(R", . (line 6) +.PP +Amd command line options: see \*(L"Amd Command Line Options\*(R", . +.PP +(line 6) +Amd Configuration File: see \*(L"Amd Configuration File\*(R", . +.PP +(line 6) +Amd configuration file: see \*(L"\-F Option\*(R", . (line 6) +.PP +Amd configuration file; specifying name: see \*(L"\-F Option\*(R", . (line 6) +.PP +Amd's \s-1PID:\s0 see \*(L"Amq \-p option\*(R", . (line 6) +.PP +Amd's process \s-1ID:\s0 see \*(L"Amq \-p option\*(R", . (line 6) +.PP +amd.conf: see \*(L"Amd Configuration File\*(R", . +.PP +(line 6) +amd.conf common parameters: see \*(L"Common Parameters\*(R", . (line 6) +.PP +amd.conf examples: see \*(L"amd\*(R", .conf Examples. (line 6) +.PP +amd.conf file: see \*(L"\-F Option\*(R", . (line 6) +.PP +amd.conf file format: see \*(L"File Format\*(R", . (line 6) +.PP +amd.conf global parameters: see \*(L"Global Parameters\*(R", . (line 6) +.PP +amd.conf global section: see \*(L"The Global Section\*(R", . (line 6) +.PP +amd.conf regular map parameters: see \*(L"Regular Map Parameters\*(R", . +.PP +(line 6) +amd.conf regular map sections: see \*(L"Regular Map Sections\*(R", . +.PP +(line 6) +amd.conf\-sample: see \*(L"amd\*(R", .conf\-sample. (line 6) +.PP +amd2ldif: see \*(L"amd2ldif\*(R", . (line 6) +.PP +amd2sun: see \*(L"amd2sun\*(R", . (line 6) +.PP +Amq command: see \*(L"Run-time Administration\*(R", . +.PP +(line 6) +arch Parameter: see \*(L"arch Parameter\*(R", . (line 6) +.PP +arch Selector Variable: see \*(L"arch Selector Variable\*(R", . +.PP +(line 6) +arch, FSinfo host attribute: see \*(L"FSinfo host arch\*(R", . (line 6) +.PP +arch, mount selector: see \*(L"arch Selector Variable\*(R", . +.PP +(line 6) +Architecture dependent volumes: see \*(L"Architecture Sharing\*(R", . +.PP +(line 6) +Architecture sharing: see \*(L"Architecture Sharing\*(R", . +.PP +(line 6) +Architecture specific mounts: see \*(L"rwho servers\*(R", . (line 6) +.PP +Assorted Tools: see \*(L"Assorted Tools\*(R", . (line 6) +.PP +Atomic \s-1NFS\s0 mounts: see \*(L"Network Filesystem Group\*(R", . +.PP +(line 6) +auto, filesystem type: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +auto_dir Parameter: see \*(L"auto_dir Parameter\*(R", . (line 6) +.PP +autodir Selector Variable: see \*(L"autodir Selector Variable\*(R", . +.PP +(line 6) +autodir, mount selector: see \*(L"autodir Selector Variable\*(R", . +.PP +(line 6) +Autofs filesystem: see \*(L"Autofs Filesystem\*(R", . (line 6) +.PP +autofs, filesystem type: see \*(L"Autofs Filesystem\*(R", . (line 6) +.PP +Automatic generation of user maps: see \*(L"Password maps\*(R", . (line 6) +.PP +Automount directory: see \*(L"\-a Option\*(R", . (line 6) +.PP +Automount filesystem: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +automount2amd: see \*(L"automount2amd\*(R", . (line 6) +.PP +Automounter configuration maps: see \*(L"Mount Maps\*(R", . (line 6) +.PP +Automounter fundamentals: see \*(L"Fundamentals\*(R", . (line 6) +.PP +Background mounts: see \*(L"Mounting a Volume\*(R", . (line 6) +.PP +Background to Mail Delivery: see \*(L"Background to Mail Delivery\*(R", . +.PP +(line 6) +Binding names to filesystems: see \*(L"Volume Binding\*(R", . (line 6) +.PP +bootparams, FSinfo prefix: see \*(L"\-b FSinfo Option\*(R", . (line 6) +.PP +browsable_dirs Parameter: see \*(L"browsable_dirs Parameter\*(R", . +.PP +(line 6) +Bug reports: see \*(L"Distrib\*(R", . (line 30) +.PP +byte Selector Variable: see \*(L"byte Selector Variable\*(R", . +.PP +(line 6) +byte, mount selector: see \*(L"byte Selector Variable\*(R", . +.PP +(line 6) +Cache interval: see \*(L"\-c Option\*(R", . (line 6) +.PP +cache, mount map option: see \*(L"Automount Filesystem\*(R", . +.PP +(line 15) +cache_duration Parameter: see \*(L"cache_duration Parameter\*(R", . +.PP +(line 6) +cachedir, mount option: see \*(L"Caching Filesystem\*(R", . (line 13) +.PP +cachefs, filesystem type: see \*(L"Caching Filesystem\*(R", . (line 6) +.PP +Caching Filesystem: see \*(L"Caching Filesystem\*(R", . (line 6) +.PP +Catch-all mount point: see \*(L"vol\*(R"\*(L" in \*(R", . (line 6) +.PP +CD-ROM Filesystem: see \*(L"CD-ROM Filesystem\*(R", . (line 6) +.PP +cdfs, filesystem type: see \*(L"CD-ROM Filesystem\*(R", . (line 6) +.PP +Centralized Mail Spool Directory: see \*(L"Centralized Mail Spool Directory\*(R", . +.PP +(line 6) +Changing the interval before a filesystem times out: see \*(L"\-c Option\*(R", . +.PP +(line 6) +chroot: see \*(L"tftpboot example: /tftpboot in a chroot-ed environment\*(R"\*(L" in \*(R", . +.PP +(line 6) +Cluster names: see \*(L"\-C\-Option\*(R", . (line 6) +.PP +cluster Parameter: see \*(L"cluster Parameter\*(R", . (line 6) +.PP +cluster Selector Variable: see \*(L"cluster Selector Variable\*(R", . +.PP +(line 6) +cluster, FSinfo host attribute: see \*(L"FSinfo host cluster\*(R", . (line 6) +.PP +cluster, mount selector: see \*(L"cluster Selector Variable\*(R", . +.PP +(line 6) +Command line options, Amd: see \*(L"Amd Command Line Options\*(R", . +.PP +(line 6) +Command line options, FSinfo: see \*(L"FSinfo Command Line Options\*(R", . +.PP +(line 6) +config, FSinfo host attribute: see \*(L"FSinfo host config\*(R", . (line 6) +.PP +Configuration file; tags: see \*(L"\-T\-Option\*(R", . (line 6) +.PP +Configuration map types: see \*(L"Map Types\*(R", . (line 6) +.PP +Controlling Amd: see \*(L"Controlling Amd\*(R", . (line 6) +.PP +Controlling Hlfsd: see \*(L"Controlling Hlfsd\*(R", . (line 6) +.PP +Creating a pid file: see \*(L"\-p Option\*(R", . (line 6) +.PP +ctl-amd <1>: see \*(L"ctl-amd\*(R", . (line 6) +.PP +ctl-amd: see \*(L"Starting Amd\*(R", . (line 6) +.PP +ctl-hlfsd <1>: see \*(L"Controlling Hlfsd\*(R", . (line 6) +.PP +ctl-hlfsd: see \*(L"ctl-hlfsd\*(R", . (line 6) +.PP +Debug options: see \*(L"\-D\-Option\*(R", . (line 6) +.PP +debug_options Parameter: see \*(L"debug_options Parameter\*(R", . +.PP +(line 6) +Debugging a new Amd configuration: see \*(L"Amq \-P\-option\*(R", . (line 6) +.PP +debugging hesiod resolver service: see \*(L"\-D\-Option\*(R", . (line 33) +.PP +Debugging options via Amq: see \*(L"Other Amq options\*(R", . (line 6) +.PP +Defining a host, FSinfo: see \*(L"FSinfo host definitions\*(R", . +.PP +(line 6) +Defining an Amd mount map, FSinfo: see \*(L"FSinfo automount definitions\*(R", . +.PP +(line 6) +Defining host attributes, FSinfo: see \*(L"FSinfo host attributes\*(R", . +.PP +(line 6) +delay, mount option: see \*(L"delay Option\*(R", . (line 6) +.PP +Delaying mounts from specific locations: see \*(L"delay Option\*(R", . (line 6) +.PP +Determining the map type: see \*(L"Map Types\*(R", . (line 6) +.PP +dev, mount option <1>: see \*(L"Floppy Filesystem\*(R", . (line 11) +.PP +dev, mount option <2>: see \*(L"Unix Filesystem\*(R", . (line 12) +.PP +dev, mount option: see \*(L"CD-ROM Filesystem\*(R", . (line 11) +.PP +Direct automount filesystem: see \*(L"Direct Automount Filesystem\*(R", . +.PP +(line 6) +direct, filesystem type: see \*(L"Direct Automount Filesystem\*(R", . +.PP +(line 6) +Discovering version information: see \*(L"\-v Option\*(R", . (line 6) +.PP +Discovering what is going on at run-time: see \*(L"Controlling Amd\*(R", . (line 6) +.PP +Disk filesystems: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +dismount_interval Parameter: see \*(L"dismount_interval Parameter\*(R", . +.PP +(line 6) +Displaying brief help: see \*(L"\-H Option\*(R", . (line 6) +.PP +Displaying the process id: see \*(L"\-p Option\*(R", . (line 6) +.PP +Distributed Mail Spool Service: see \*(L"Distributed Mail Spool Service\*(R", . +.PP +(line 6) +Domain name: see \*(L"\-d Option\*(R", . (line 6) +.PP +domain Selector Variable: see \*(L"domain Selector Variable\*(R", . +.PP +(line 6) +Domain stripping: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +domain, mount selector: see \*(L"domain Selector Variable\*(R", . +.PP +(line 6) +Domainname operators: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +dumpset, FSinfo filesystems option: see \*(L"FSinfo filesystems dumpset\*(R", . +.PP +(line 6) +dumpset, FSinfo prefix: see \*(L"\-d FSinfo Option\*(R", . (line 6) +.PP +Duplicated volumes: see \*(L"Volume Naming\*(R", . (line 6) +.PP +\&\s-1EFS:\s0 see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +efs, filesystem type: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Environment variables: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +Error filesystem: see \*(L"Error Filesystem\*(R", . (line 6) +.PP +error, filesystem type: see \*(L"Error Filesystem\*(R", . (line 6) +.PP +Example of architecture specific mounts: see \*(L"rwho servers\*(R", . (line 6) +.PP +Example of mounting home directories: see \*(L"Home Directories\*(R", . (line 6) +.PP +exists Selector Function: see \*(L"exists Selector Function\*(R", . +.PP +(line 6) +exists, boolean mount selector: see \*(L"exists Selector Function\*(R", . +.PP +(line 6) +expn: see \*(L"expn\*(R", . (line 6) +.PP +export, FSinfo special fstype: see \*(L"FSinfo filesystems fstype\*(R", . +.PP +(line 6) +exportfs, FSinfo mount option: see \*(L"FSinfo filesystems mount\*(R", . +.PP +(line 6) +exports, FSinfo prefix: see \*(L"\-e FSinfo Option\*(R", . (line 6) +.PP +false Selector Function: see \*(L"false Selector Function\*(R", . +.PP +(line 6) +false, boolean mount selector: see \*(L"false Selector Function\*(R", . +.PP +(line 6) +File map syntactic conventions: see \*(L"File maps\*(R", . (line 6) +.PP +File maps: see \*(L"File maps\*(R", . (line 6) +.PP +Fileserver: see \*(L"Filesystems and Volumes\*(R", . +.PP +(line 6) +Filesystem: see \*(L"Filesystems and Volumes\*(R", . +.PP +(line 6) +Filesystem info package: see \*(L"FSinfo\*(R", . (line 6) +.PP +Filesystem type; auto: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +Filesystem type; autofs: see \*(L"Autofs Filesystem\*(R", . (line 6) +.PP +Filesystem type; cachefs: see \*(L"Caching Filesystem\*(R", . (line 6) +.PP +Filesystem type; cdfs: see \*(L"CD-ROM Filesystem\*(R", . (line 6) +.PP +Filesystem type; direct: see \*(L"Direct Automount Filesystem\*(R", . +.PP +(line 6) +Filesystem type; efs: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Filesystem type; error: see \*(L"Error Filesystem\*(R", . (line 6) +.PP +Filesystem type; host: see \*(L"Network Host Filesystem\*(R", . +.PP +(line 6) +Filesystem type; inherit: see \*(L"Inheritance Filesystem\*(R", . +.PP +(line 6) +Filesystem type; link: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +Filesystem type; linkx: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +Filesystem type; lofs: see \*(L"Loopback Filesystem\*(R", . (line 6) +.PP +Filesystem type; mfs: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory, . +.PP +(line 6) +Filesystem type; nfs: see \*(L"Network Filesystem\*(R", . (line 6) +.PP +Filesystem type; nfsl: see \*(L"NFS-Link Filesystem\*(R", . (line 6) +.PP +Filesystem type; nfsx: see \*(L"Network Filesystem Group\*(R", . +.PP +(line 6) +Filesystem type; nullfs: see \*(L"Null Filesystem\*(R", . (line 6) +.PP +Filesystem type; pcfs: see \*(L"Floppy Filesystem\*(R", . (line 6) +.PP +Filesystem type; program: see \*(L"Program Filesystem\*(R", . (line 6) +.PP +Filesystem type; root: see \*(L"Root Filesystem\*(R", . (line 6) +.PP +Filesystem type; tfs: see \*(L"Translucent Filesystem\*(R", . +.PP +(line 6) +Filesystem type; tmpfs: see \*(L"Shared Memory+Swap Filesystem\*(R", . +.PP +(line 6) +Filesystem type; toplvl: see \*(L"Top-level Filesystem\*(R", . +.PP +(line 6) +Filesystem type; ufs: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Filesystem type; umapfs: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R", . +.PP +(line 6) +Filesystem type; union: see \*(L"Union Filesystem\*(R", . (line 6) +.PP +Filesystem type; xfs: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Filesystem types: see \*(L"Filesystem Types\*(R", . (line 6) +.PP +fix-amd-map: see \*(L"fix-amd-map\*(R", . (line 6) +.PP +fixmount: see \*(L"fixmount\*(R", . (line 6) +.PP +fixrmtab: see \*(L"fixrmtab\*(R", . (line 6) +.PP +Flat file maps: see \*(L"File maps\*(R", . (line 6) +.PP +Floppy Filesystem: see \*(L"Floppy Filesystem\*(R", . (line 6) +.PP +Flushing the map cache: see \*(L"Amq \-f option\*(R", . (line 6) +.PP +Forcing Amq to use a \s-1TCP\s0 transport: see \*(L"Amq \-T option\*(R", . (line 6) +.PP +Forcing Amq to use a \s-1UDP\s0 transport: see \*(L"Amq \-U\-option\*(R", . (line 6) +.PP +Forcing filesystem to time out: see \*(L"Amq \-u option\*(R", . (line 6) +.PP +freq, FSinfo filesystems option: see \*(L"FSinfo filesystems freq\*(R", . +.PP +(line 6) +fs, mount option: see \*(L"fs Option\*(R", . (line 6) +.PP +FSinfo: see \*(L"FSinfo\*(R", . (line 6) +.PP +FSinfo arch host attribute: see \*(L"FSinfo host arch\*(R", . (line 6) +.PP +FSinfo automount definitions: see \*(L"FSinfo automount definitions\*(R", . +.PP +(line 6) +FSinfo cluster host attribute: see \*(L"FSinfo host cluster\*(R", . (line 6) +.PP +FSinfo command line options: see \*(L"FSinfo Command Line Options\*(R", . +.PP +(line 6) +FSinfo config host attribute: see \*(L"FSinfo host config\*(R", . (line 6) +.PP +FSinfo dumpset filesystems option: see \*(L"FSinfo filesystems dumpset\*(R", . +.PP +(line 6) +FSinfo error messages: see \*(L"FSinfo errors\*(R", . (line 6) +.PP +FSinfo filesystems: see \*(L"FSinfo filesystems\*(R", . (line 6) +.PP +FSinfo freq filesystems option: see \*(L"FSinfo filesystems freq\*(R", . +.PP +(line 6) +FSinfo fstype filesystems option: see \*(L"FSinfo filesystems fstype\*(R", . +.PP +(line 6) +FSinfo grammar: see \*(L"FSinfo Grammar\*(R", . (line 6) +.PP +FSinfo host attributes: see \*(L"FSinfo host attributes\*(R", . +.PP +(line 6) +FSinfo host definitions: see \*(L"FSinfo host definitions\*(R", . +.PP +(line 6) +FSinfo log filesystems option: see \*(L"FSinfo filesystems log\*(R", . +.PP +(line 6) +FSinfo mount filesystems option: see \*(L"FSinfo filesystems mount\*(R", . +.PP +(line 6) +FSinfo opts filesystems option: see \*(L"FSinfo filesystems opts\*(R", . +.PP +(line 6) +FSinfo os host attribute: see \*(L"FSinfo host os\*(R", . (line 6) +.PP +FSinfo overview: see \*(L"FSinfo Overview\*(R", . (line 6) +.PP +FSinfo passno filesystems option: see \*(L"FSinfo filesystems passno\*(R", . +.PP +(line 6) +FSinfo static mounts: see \*(L"FSinfo static mounts\*(R", . +.PP +(line 6) +fstab, FSinfo prefix: see \*(L"\-f FSinfo Option\*(R", . (line 6) +.PP +fstype, FSinfo filesystems option: see \*(L"FSinfo filesystems fstype\*(R", . +.PP +(line 6) +full_os Parameter: see \*(L"full_os Parameter\*(R", . (line 6) +.PP +full_os Selector Variable: see \*(L"full_os Selector Variable\*(R", . +.PP +(line 6) +full_os, mount selector: see \*(L"full_os Selector Variable\*(R", . +.PP +(line 6) +fully_qualified_hosts Parameter: see \*(L"fully_qualified_hosts Parameter\*(R", . +.PP +(line 6) +Generic volume name: see \*(L"vol\*(R"\*(L" in \*(R", . (line 6) +.PP +Global statistics: see \*(L"Amq \-s option\*(R", . (line 6) +.PP +Grammar, FSinfo: see \*(L"FSinfo Grammar\*(R", . (line 6) +.PP +Help; showing from Amd: see \*(L"\-H Option\*(R", . (line 6) +.PP +Hesiod maps: see \*(L"Hesiod maps\*(R", . (line 6) +.PP +Hesiod: see \*(L"turning on \s-1RES_DEBUG: \s0 \-D\-Option\*(R", . (line 33) +.PP +hesiod_base Parameter: see \*(L"hesiod_base Parameter\*(R", . +.PP +(line 6) +History: see \*(L"History\*(R", . (line 6) +.PP +Hlfsd: see \*(L"Hlfsd\*(R", . (line 6) +.PP +Hlfsd Files: see \*(L"Hlfsd Files\*(R", . (line 6) +.PP +Hlfsd Options: see \*(L"Hlfsd Options\*(R", . (line 6) +.PP +Hlfsd; background: see \*(L"Background to Mail Delivery\*(R", . +.PP +(line 6) +Hlfsd; controlling: see \*(L"Controlling Hlfsd\*(R", . (line 6) +.PP +Hlfsd; Files: see \*(L"Hlfsd Files\*(R", . (line 6) +.PP +Hlfsd; introduction: see \*(L"Introduction to Hlfsd\*(R", . +.PP +(line 6) +Hlfsd; Options: see \*(L"Hlfsd Options\*(R", . (line 6) +.PP +Hlfsd; using: see \*(L"Using Hlfsd\*(R", . (line 6) +.PP +Hlfsd; Why Deliver Into the Home Directory?: see \*(L"Why Deliver Into the Home Directory?\*(R", . +.PP +(line 6) +Home directories: see \*(L"Home Directories\*(R", . (line 6) +.PP +Home-Link Filesystem: see \*(L"Hlfsd\*(R", . (line 6) +.PP +host Selector Variable: see \*(L"host Selector Variable\*(R", . +.PP +(line 6) +host, filesystem type: see \*(L"Network Host Filesystem\*(R", . +.PP +(line 6) +host, mount selector: see \*(L"host Selector Variable\*(R", . +.PP +(line 6) +hostd Selector Variable: see \*(L"hostd Selector Variable\*(R", . +.PP +(line 6) +hostd, mount selector: see \*(L"hostd Selector Variable\*(R", . +.PP +(line 6) +Hostname normalization: see \*(L"\-n Option\*(R", . (line 6) +.PP +hostname, FSinfo command line option: see \*(L"\-h FSinfo Option\*(R", . (line 6) +.PP +How keys are looked up: see \*(L"Key Lookup\*(R", . (line 6) +.PP +How locations are parsed: see \*(L"Location Format\*(R", . (line 6) +.PP +How to access environment variables in maps: see \*(L"Variable Expansion\*(R", . +.PP +(line 6) +How to discover your version of Amd: see \*(L"\-v Option\*(R", . (line 6) +.PP +How to mount a local disk: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +How to mount a \s-1UFS\s0 filesystems: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +How to mount all \s-1NFS\s0 exported filesystems: see \*(L"Network Host Filesystem\*(R", . +.PP +(line 6) +How to mount an atomic group of \s-1NFS\s0 filesystems: see \*(L"Network Filesystem Group\*(R", . +.PP +(line 6) +How to mount and \s-1NFS\s0 filesystem: see \*(L"Network Filesystem\*(R", . (line 6) +.PP +How to reference an existing part of the local name space: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +How to reference part of the local name space: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +How to select log messages: see \*(L"\-x Option\*(R", . (line 6) +.PP +How to set default map parameters: see \*(L"Map Defaults\*(R", . (line 6) +.PP +How to set map cache parameters: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +How to start a direct automount point: see \*(L"Direct Automount Filesystem\*(R", . +.PP +(line 6) +How to start an indirect automount point: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +How variables are expanded: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +in_network Selector Function: see \*(L"in_network Selector Function\*(R", . +.PP +(line 6) +in_network, boolean mount selector: see \*(L"in_network Selector Function\*(R", . +.PP +(line 6) +inherit, filesystem type: see \*(L"Inheritance Filesystem\*(R", . +.PP +(line 6) +Inheritance filesystem: see \*(L"Inheritance Filesystem\*(R", . +.PP +(line 6) +Interval before a filesystem times out: see \*(L"\-c Option\*(R", . (line 6) +.PP +Introduction: see \*(L"Intro\*(R", . (line 6) +.PP +Introduction to Hlfsd: see \*(L"Introduction to Hlfsd\*(R", . +.PP +(line 6) +karch Parameter: see \*(L"karch Parameter\*(R", . (line 6) +.PP +karch Selector Variable: see \*(L"karch Selector Variable\*(R", . +.PP +(line 6) +karch, mount selector: see \*(L"karch Selector Variable\*(R", . +.PP +(line 6) +Keep-alives: see \*(L"Keep-alives\*(R", . (line 6) +.PP +Key lookup: see \*(L"Key Lookup\*(R", . (line 6) +.PP +key Selector Variable: see \*(L"key Selector Variable\*(R", . +.PP +(line 6) +key, mount selector: see \*(L"key Selector Variable\*(R", . +.PP +(line 6) +Killing and starting Amd: see \*(L"Restarting Amd\*(R", . (line 6) +.PP +\&\s-1LDAP\s0 maps: see \*(L"\s-1LDAP\s0 maps\*(R", . (line 6) +.PP +ldap_base Parameter: see \*(L"ldap_base Parameter\*(R", . (line 6) +.PP +ldap_cache_maxmem Parameter: see \*(L"ldap_cache_maxmem Parameter\*(R", . +.PP +(line 6) +ldap_cache_seconds Parameter: see \*(L"ldap_cache_seconds Parameter\*(R", . +.PP +(line 6) +ldap_hostports Parameter: see \*(L"ldap_hostports Parameter\*(R", . +.PP +(line 6) +License Information: see \*(L"License\*(R", . (line 6) +.PP +Lightweight Directory Access Protocol: see \*(L"\s-1LDAP\s0 maps\*(R", . (line 6) +.PP +link, filesystem type: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +linkx, filesystem type: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +Listing currently mounted filesystems: see \*(L"Controlling Amd\*(R", . (line 6) +.PP +local_domain Parameter: see \*(L"local_domain Parameter\*(R", . +.PP +(line 6) +Location format: see \*(L"Location Format\*(R", . (line 6) +.PP +Location lists: see \*(L"Mounting a Volume\*(R", . (line 6) +.PP +locking executable pages in memory: see \*(L"\-S Option\*(R", . (line 6) +.PP +lofs, filesystem type: see \*(L"Loopback Filesystem\*(R", . (line 6) +.PP +Log file, resetting: see \*(L"Amq \-l option\*(R", . (line 6) +.PP +Log filename: see \*(L"\-l Option\*(R", . (line 6) +.PP +Log message selection: see \*(L"\-x Option\*(R", . (line 6) +.PP +log, FSinfo filesystems option: see \*(L"FSinfo filesystems log\*(R", . +.PP +(line 6) +log_file Parameter: see \*(L"log_file Parameter\*(R", . (line 6) +.PP +log_options Parameter: see \*(L"log_options Parameter\*(R", . +.PP +(line 6) +Logging options via Amq: see \*(L"Other Amq options\*(R", . (line 6) +.PP +Looking up keys: see \*(L"Key Lookup\*(R", . (line 6) +.PP +Loopback Filesystem: see \*(L"Loopback Filesystem\*(R", . (line 6) +.PP +lostaltmail: see \*(L"lostaltmail\*(R", . (line 6) +.PP +lostaltmail.conf\-sample: see \*(L"lostaltmail\*(R", .conf\-sample. +.PP +(line 6) +lostaltmail; configuration file: see \*(L"lostaltmail\*(R", .conf\-sample. +.PP +(line 6) +Mailing list: see \*(L"Distrib\*(R", . (line 44) +.PP +Map cache options: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +Map cache synchronizing: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +Map cache types: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +Map cache, flushing: see \*(L"Amq \-f option\*(R", . (line 6) +.PP +Map defaults: see \*(L"Map Defaults\*(R", . (line 6) +.PP +Map entry format: see \*(L"Location Format\*(R", . (line 6) +.PP +Map lookup: see \*(L"Key Lookup\*(R", . (line 6) +.PP +Map options: see \*(L"Map Options\*(R", . (line 6) +.PP +map Selector Variable: see \*(L"map Selector Variable\*(R", . +.PP +(line 6) +Map types: see \*(L"Map Types\*(R", . (line 6) +.PP +map, mount selector: see \*(L"map Selector Variable\*(R", . +.PP +(line 6) +map_name Parameter: see \*(L"map_name Parameter\*(R", . (line 6) +.PP +map_options Parameter: see \*(L"map_options Parameter\*(R", . +.PP +(line 6) +map_type Parameter: see \*(L"map_type Parameter\*(R", . (line 6) +.PP +maps, FSinfo command line option: see \*(L"\-m FSinfo Option\*(R", . (line 6) +.PP +Memory/RAM Filesystem: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory, . +.PP +(line 6) +mfs, filesystem type: see \*(L"\s-1RAM\s0 Filesystem\*(R"\*(L" in \*(R"Memory, . +.PP +(line 6) +mk-amd-map: see \*(L"mk-amd-map\*(R", . (line 6) +.PP +Mount a filesystem under program control: see \*(L"Program Filesystem\*(R", . +.PP +(line 6) +Mount flags; acdirmax: see \*(L"opts Option\*(R", . (line 19) +.PP +Mount flags; acdirmin: see \*(L"opts Option\*(R", . (line 22) +.PP +Mount flags; acregmax: see \*(L"opts Option\*(R", . (line 25) +.PP +Mount flags; acregmin: see \*(L"opts Option\*(R", . (line 28) +.PP +Mount flags; actimeo: see \*(L"opts Option\*(R", . (line 31) +.PP +Mount flags; auto: see \*(L"opts Option\*(R", . (line 34) +.PP +Mount flags; cache: see \*(L"opts Option\*(R", . (line 38) +.PP +Mount flags; compress: see \*(L"opts Option\*(R", . (line 41) +.PP +Mount flags; defperm: see \*(L"opts Option\*(R", . (line 44) +.PP +Mount flags; dev: see \*(L"opts Option\*(R", . (line 48) +.PP +Mount flags; dumbtimr: see \*(L"opts Option\*(R", . (line 51) +.PP +Mount flags; extatt: see \*(L"opts Option\*(R", . (line 57) +.PP +Mount flags; fsid: see \*(L"opts Option\*(R", . (line 60) +.PP +Mount flags; gens: see \*(L"opts Option\*(R", . (line 63) +.PP +Mount flags; grpid: see \*(L"opts Option\*(R", . (line 67) +.PP +Mount flags; ignore: see \*(L"opts Option\*(R", . (line 35) +.PP +Mount flags; int: see \*(L"opts Option\*(R", . (line 70) +.PP +Mount flags; intr: see \*(L"opts Option\*(R", . (line 71) +.PP +Mount flags; maxgroups: see \*(L"opts Option\*(R", . (line 77) +.PP +Mount flags; multi: see \*(L"opts Option\*(R", . (line 74) +.PP +Mount flags; nfsv3: see \*(L"opts Option\*(R", . (line 80) +.PP +Mount flags; noac: see \*(L"opts Option\*(R", . (line 83) +.PP +Mount flags; noauto: see \*(L"opts Option\*(R", . (line 86) +.PP +Mount flags; nocache: see \*(L"opts Option\*(R", . (line 91) +.PP +Mount flags; noconn: see \*(L"opts Option\*(R", . (line 94) +.PP +Mount flags; nocto: see \*(L"opts Option\*(R", . (line 97) +.PP +Mount flags; nodefperm: see \*(L"opts Option\*(R", . (line 100) +.PP +Mount flags; nodev: see \*(L"opts Option\*(R", . (line 104) +.PP +Mount flags; nodevs: see \*(L"opts Option\*(R", . (line 105) +.PP +Mount flags; noint: see \*(L"opts Option\*(R", . (line 108) +.PP +Mount flags; norrip: see \*(L"opts Option\*(R", . (line 111) +.PP +Mount flags; nosub: see \*(L"opts Option\*(R", . (line 115) +.PP +Mount flags; nosuid: see \*(L"opts Option\*(R", . (line 118) +.PP +Mount flags; nounmount: see \*(L"opts Option\*(R", . (line 208) +.PP +Mount flags; noversion: see \*(L"opts Option\*(R", . (line 121) +.PP +Mount flags; overlay: see \*(L"opts Option\*(R", . (line 125) +.PP +Mount flags; pgthresh: see \*(L"opts Option\*(R", . (line 128) +.PP +Mount flags; ping: see \*(L"opts Option\*(R", . (line 212) +.PP +Mount flags; port: see \*(L"opts Option\*(R", . (line 131) +.PP +Mount flags; posix: see \*(L"opts Option\*(R", . (line 134) +.PP +Mount flags; proto: see \*(L"opts Option\*(R", . (line 137) +.PP +Mount flags; quota: see \*(L"opts Option\*(R", . (line 140) +.PP +Mount flags; rdonly: see \*(L"opts Option\*(R", . (line 143) +.PP +Mount flags; resvport: see \*(L"opts Option\*(R", . (line 147) +.PP +Mount flags; retrans: see \*(L"opts Option\*(R", . (line 154) +.PP +Mount flags; retry: see \*(L"opts Option\*(R", . (line 160) +.PP +Mount flags; retry=N: see \*(L"opts Option\*(R", . (line 219) +.PP +Mount flags; ro: see \*(L"opts Option\*(R", . (line 144) +.PP +Mount flags; rrip: see \*(L"opts Option\*(R", . (line 163) +.PP +Mount flags; rsize: see \*(L"opts Option\*(R", . (line 167) +.PP +Mount flags; rw: see \*(L"opts Option\*(R", . (line 171) +.PP +Mount flags; soft: see \*(L"opts Option\*(R", . (line 174) +.PP +Mount flags; spongy: see \*(L"opts Option\*(R", . (line 177) +.PP +Mount flags; suid: see \*(L"opts Option\*(R", . (line 180) +.PP +Mount flags; symttl: see \*(L"opts Option\*(R", . (line 183) +.PP +Mount flags; sync: see \*(L"opts Option\*(R", . (line 186) +.PP +Mount flags; tcp: see \*(L"opts Option\*(R", . (line 189) +.PP +Mount flags; timeo: see \*(L"opts Option\*(R", . (line 193) +.PP +Mount flags; utimeout=N: see \*(L"opts Option\*(R", . (line 222) +.PP +Mount flags; vers: see \*(L"opts Option\*(R", . (line 197) +.PP +Mount flags; wsize: see \*(L"opts Option\*(R", . (line 200) +.PP +Mount home directories: see \*(L"Home Directories\*(R", . (line 6) +.PP +Mount information: see \*(L"Mount Maps\*(R", . (line 6) +.PP +Mount map option; cache: see \*(L"Automount Filesystem\*(R", . +.PP +(line 15) +Mount map types: see \*(L"Map Types\*(R", . (line 6) +.PP +Mount maps: see \*(L"Mount Maps\*(R", . (line 6) +.PP +Mount option; addopts: see \*(L"addopts Option\*(R", . (line 6) +.PP +Mount option; cachedir: see \*(L"Caching Filesystem\*(R", . (line 13) +.PP +Mount option; delay: see \*(L"delay Option\*(R", . (line 6) +.PP +Mount option; dev <1>: see \*(L"Unix Filesystem\*(R", . (line 12) +.PP +Mount option; dev <2>: see \*(L"Floppy Filesystem\*(R", . (line 11) +.PP +Mount option; dev: see \*(L"CD-ROM Filesystem\*(R", . (line 11) +.PP +Mount option; fs: see \*(L"fs Option\*(R", . (line 6) +.PP +Mount option; mount: see \*(L"Program Filesystem\*(R", . (line 14) +.PP +Mount option; opts: see \*(L"opts Option\*(R", . (line 6) +.PP +Mount option; remopts: see \*(L"remopts Option\*(R", . (line 6) +.PP +Mount option; rfs <1>: see \*(L"Network Filesystem\*(R", . (line 16) +.PP +Mount option; rfs: see \*(L"Loopback Filesystem\*(R", . (line 16) +.PP +Mount option; rhost: see \*(L"Network Filesystem\*(R", . (line 10) +.PP +Mount option; sublink: see \*(L"sublink Option\*(R", . (line 6) +.PP +Mount option; type: see \*(L"type Option\*(R", . (line 6) +.PP +Mount option; unmount: see \*(L"Program Filesystem\*(R", . (line 17) +.PP +Mount retries: see \*(L"Mounting a Volume\*(R", . (line 6) +.PP +Mount selector; arch: see \*(L"arch Selector Variable\*(R", . +.PP +(line 6) +Mount selector; autodir: see \*(L"autodir Selector Variable\*(R", . +.PP +(line 6) +Mount selector; byte: see \*(L"byte Selector Variable\*(R", . +.PP +(line 6) +Mount selector; cluster: see \*(L"cluster Selector Variable\*(R", . +.PP +(line 6) +Mount selector; domain: see \*(L"domain Selector Variable\*(R", . +.PP +(line 6) +Mount selector; exists: see \*(L"exists Selector Function\*(R", . +.PP +(line 6) +Mount selector; false: see \*(L"false Selector Function\*(R", . +.PP +(line 6) +Mount selector; full_os: see \*(L"full_os Selector Variable\*(R", . +.PP +(line 6) +Mount selector; host: see \*(L"host Selector Variable\*(R", . +.PP +(line 6) +Mount selector; hostd: see \*(L"hostd Selector Variable\*(R", . +.PP +(line 6) +Mount selector; in_network: see \*(L"in_network Selector Function\*(R", . +.PP +(line 6) +Mount selector; karch: see \*(L"karch Selector Variable\*(R", . +.PP +(line 6) +Mount selector; key: see \*(L"key Selector Variable\*(R", . +.PP +(line 6) +Mount selector; map: see \*(L"map Selector Variable\*(R", . +.PP +(line 6) +Mount selector; netgrp: see \*(L"netgrp Selector Function\*(R", . +.PP +(line 6) +Mount selector; netgrpd: see \*(L"netgrpd Selector Function\*(R", . +.PP +(line 6) +Mount selector; netnumber: see \*(L"netnumber Selector Variable\*(R", . +.PP +(line 6) +Mount selector; network: see \*(L"network Selector Variable\*(R", . +.PP +(line 6) +Mount selector; os: see \*(L"os Selector Variable\*(R", . +.PP +(line 6) +Mount selector; osver: see \*(L"osver Selector Variable\*(R", . +.PP +(line 6) +Mount selector; path: see \*(L"path Selector Variable\*(R", . +.PP +(line 6) +Mount selector; true: see \*(L"true Selector Function\*(R", . +.PP +(line 6) +Mount selector; vendor: see \*(L"vendor Selector Variable\*(R", . +.PP +(line 6) +Mount selector; wire: see \*(L"wire Selector Variable\*(R", . +.PP +(line 6) +mount system call: see \*(L"opts Option\*(R", . (line 6) +.PP +mount system call flags: see \*(L"opts Option\*(R", . (line 6) +.PP +Mount types: see \*(L"Filesystem Types\*(R", . (line 6) +.PP +mount, FSinfo filesystems option: see \*(L"FSinfo filesystems mount\*(R", . +.PP +(line 6) +mount, mount option: see \*(L"Program Filesystem\*(R", . (line 14) +.PP +mount_type Parameter: see \*(L"mount_type Parameter\*(R", . +.PP +(line 6) +Mounting a local disk: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Mounting a remote part of the name space if target is missing: see \*(L"NFS-Link Filesystem\*(R", . +.PP +(line 6) +Mounting a \s-1UFS\s0 filesystem: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Mounting a volume: see \*(L"Mounting a Volume\*(R", . (line 6) +.PP +Mounting an atomic group of \s-1NFS\s0 filesystems: see \*(L"Network Filesystem Group\*(R", . +.PP +(line 6) +Mounting an existing part of the local name space: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +Mounting an \s-1NFS\s0 filesystem: see \*(L"Network Filesystem\*(R", . (line 6) +.PP +Mounting entire export trees: see \*(L"Network Host Filesystem\*(R", . +.PP +(line 6) +Mounting part of the local name space: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +Mounting user filesystems: see \*(L"User Filesystems\*(R", . (line 6) +.PP +Multiple Amd processes: see \*(L"Amq \-P\-option\*(R", . (line 6) +.PP +Multiple-threaded server: see \*(L"Non-blocking Operation\*(R", . +.PP +(line 6) +Namespace: see \*(L"Volume Binding\*(R", . (line 6) +.PP +ndbm maps: see \*(L"ndbm maps\*(R", . (line 6) +.PP +netgrp Selector Function: see \*(L"netgrp Selector Function\*(R", . +.PP +(line 6) +netgrp, boolean mount selector: see \*(L"netgrp Selector Function\*(R", . +.PP +(line 6) +netgrpd Selector Function: see \*(L"netgrpd Selector Function\*(R", . +.PP +(line 6) +netgrpd, boolean mount selector: see \*(L"netgrpd Selector Function\*(R", . +.PP +(line 6) +netnumber Selector Variable: see \*(L"netnumber Selector Variable\*(R", . +.PP +(line 6) +netnumber, mount selector: see \*(L"netnumber Selector Variable\*(R", . +.PP +(line 6) +Network filesystem group: see \*(L"Network Filesystem Group\*(R", . +.PP +(line 6) +Network host filesystem: see \*(L"Network Host Filesystem\*(R", . +.PP +(line 6) +network Selector Variable: see \*(L"network Selector Variable\*(R", . +.PP +(line 6) +network, mount selector: see \*(L"network Selector Variable\*(R", . +.PP +(line 6) +Network-wide naming: see \*(L"Volume Naming\*(R", . (line 6) +.PP +\&\s-1NFS:\s0 see \*(L"Network Filesystem\*(R", . (line 6) +.PP +\&\s-1NFS\s0 ping: see \*(L"Keep-alives\*(R", . (line 6) +.PP +\&\s-1NFS V.3\s0 support: see \*(L"Supported Platforms\*(R", . (line 6) +.PP +nfs, filesystem type: see \*(L"Network Filesystem\*(R", . (line 6) +.PP +NFS-Link filesystem \s-1II:\s0 see \*(L"NFS-Link Filesystem\*(R", . (line 6) +.PP +nfs_retransmit_counter Parameter: see \*(L"nfs_retransmit_counter Parameter\*(R", . +.PP +(line 6) +nfs_retry_interval Parameter: see \*(L"nfs_retry_interval Parameter\*(R", . +.PP +(line 6) +nfsl, filesystem type: see \*(L"NFS-Link Filesystem\*(R", . (line 6) +.PP +nfsx, filesystem type: see \*(L"Network Filesystem Group\*(R", . +.PP +(line 6) +\&\s-1NIS \s0(\s-1YP\s0) domain name: see \*(L"\-y Option\*(R", . (line 6) +.PP +\&\s-1NIS \s0(\s-1YP\s0) maps: see \*(L"\s-1NIS\s0 maps\*(R", . (line 6) +.PP +\&\s-1NIS+\s0 maps: see \*(L"\s-1NIS+\s0 maps\*(R", . (line 6) +.PP +nis_domain Parameter: see \*(L"nis_domain Parameter\*(R", . +.PP +(line 6) +Nodes generated on a restart: see \*(L"Inheritance Filesystem\*(R", . +.PP +(line 6) +Non-blocking operation: see \*(L"Non-blocking Operation\*(R", . +.PP +(line 6) +normalize_hostnames Parameter: see \*(L"normalize_hostnames Parameter\*(R", . +.PP +(line 6) +Normalizing hostnames: see \*(L"\-n Option\*(R", . (line 6) +.PP +Null Filesystem: see \*(L"Null Filesystem\*(R", . (line 6) +.PP +nullfs, filesystem type: see \*(L"Null Filesystem\*(R", . (line 6) +.PP +Obtaining the source code: see \*(L"Distrib\*(R", . (line 6) +.PP +Operating System name: see \*(L"\-O\-Option\*(R", . (line 6) +.PP +Operating System version: see \*(L"\-o Option\*(R", . (line 6) +.PP +Operational principles: see \*(L"Operational Principles\*(R", . +.PP +(line 6) +opts, FSinfo filesystems option: see \*(L"FSinfo filesystems opts\*(R", . +.PP +(line 6) +opts, mount option: see \*(L"opts Option\*(R", . (line 6) +.PP +os Parameter: see \*(L"os Parameter\*(R", . (line 6) +.PP +os Selector Variable: see \*(L"os Selector Variable\*(R", . +.PP +(line 6) +os, FSinfo host attribute: see \*(L"FSinfo host os\*(R", . (line 6) +.PP +os, mount selector: see \*(L"os Selector Variable\*(R", . +.PP +(line 6) +osver Parameter: see \*(L"osver Parameter\*(R", . (line 6) +.PP +osver Selector Variable: see \*(L"osver Selector Variable\*(R", . +.PP +(line 6) +osver, mount selector: see \*(L"osver Selector Variable\*(R", . +.PP +(line 6) +Overriding defaults on the command line: see \*(L"Amd Command Line Options\*(R", . +.PP +(line 6) +Overriding or adding options to a mount: see \*(L"addopts Option\*(R", . (line 6) +.PP +Overriding the default mount point: see \*(L"fs Option\*(R", . (line 6) +.PP +Overriding the local domain name: see \*(L"\-d Option\*(R", . (line 6) +.PP +Overriding the \s-1NIS \s0(\s-1YP\s0) domain name: see \*(L"\-y Option\*(R", . (line 6) +.PP +Passing parameters to the mount system call: see \*(L"opts Option\*(R", . (line 6) +.PP +passno, FSinfo filesystems option: see \*(L"FSinfo filesystems passno\*(R", . +.PP +(line 6) +Password file maps: see \*(L"Password maps\*(R", . (line 6) +.PP +path Selector Variable: see \*(L"path Selector Variable\*(R", . +.PP +(line 6) +path, mount selector: see \*(L"path Selector Variable\*(R", . +.PP +(line 6) +Pathname operators: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +pawd: see \*(L"pawd\*(R", . (line 6) +.PP +pcfs, filesystem type: see \*(L"Floppy Filesystem\*(R", . (line 6) +.PP +Picking up existing mounts: see \*(L"\-r Option\*(R", . (line 6) +.PP +pid file, creating with \-p option: see \*(L"\-p Option\*(R", . (line 6) +.PP +\&\s-1PID\s0; Amd: see \*(L"Amq \-p option\*(R", . (line 6) +.PP +pid_file Parameter: see \*(L"pid_file Parameter\*(R", . (line 6) +.PP +plock Parameter: see \*(L"plock Parameter\*(R", . (line 6) +.PP +plock; using: see \*(L"\-S Option\*(R", . (line 6) +.PP +portmap_program Parameter: see \*(L"portmap_program Parameter\*(R", . +.PP +(line 6) +Primary server: see \*(L"delay Option\*(R", . (line 6) +.PP +print_pid Parameter: see \*(L"print_pid Parameter\*(R", . (line 6) +.PP +print_version Parameter: see \*(L"print_version Parameter\*(R", . +.PP +(line 6) +Process id: see \*(L"\-p Option\*(R", . (line 6) +.PP +process id of Amd daemon: see \*(L"\-p Option\*(R", . (line 6) +.PP +Process \s-1ID\s0; Amd: see \*(L"Amq \-p option\*(R", . (line 6) +.PP +Program filesystem: see \*(L"Program Filesystem\*(R", . (line 6) +.PP +program, filesystem type: see \*(L"Program Filesystem\*(R", . (line 6) +.PP +Querying an alternate host: see \*(L"Amq \-h option\*(R", . (line 6) +.PP +quiet, FSinfo command line option: see \*(L"\-q FSinfo Option\*(R", . (line 6) +.PP +Referencing an existing part of the local name space: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +Referencing an existing part of the name space if target exists: see \*(L"NFS-Link Filesystem\*(R", . +.PP +(line 6) +Referencing part of the local name space: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +Regular expressions in maps: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +remopts, mount option: see \*(L"remopts Option\*(R", . (line 6) +.PP +Replacement volumes: see \*(L"Volume Naming\*(R", . (line 6) +.PP +Replicated volumes: see \*(L"Volume Naming\*(R", . (line 6) +.PP +Resetting the Amd log file: see \*(L"Amq \-l option\*(R", . (line 6) +.PP +Resolving aliased hostnames: see \*(L"\-n Option\*(R", . (line 6) +.PP +restart_mounts Parameter: see \*(L"restart_mounts Parameter\*(R", . +.PP +(line 6) +Restarting Amd: see \*(L"Restarting Amd\*(R", . (line 6) +.PP +Restarting existing mounts: see \*(L"\-r Option\*(R", . (line 6) +.PP +rfs, mount option <1>: see \*(L"Loopback Filesystem\*(R", . (line 16) +.PP +rfs, mount option: see \*(L"Network Filesystem\*(R", . (line 16) +.PP +rhost, mount option: see \*(L"Network Filesystem\*(R", . (line 10) +.PP +Root filesystem: see \*(L"Root Filesystem\*(R", . (line 6) +.PP +root, filesystem type: see \*(L"Root Filesystem\*(R", . (line 6) +.PP +\&\s-1RPC\s0 Program numbers; Amd: see \*(L"Amq \-P\-option\*(R", . (line 6) +.PP +\&\s-1RPC\s0 retries: see \*(L"Non-blocking Operation\*(R", . +.PP +(line 6) +Run-time administration: see \*(L"Run-time Administration\*(R", . +.PP +(line 6) +Running multiple Amd: see \*(L"Amq \-P\-option\*(R", . (line 6) +.PP +rwho servers: see \*(L"rwho servers\*(R", . (line 6) +.PP +search_path Parameter: see \*(L"search_path Parameter\*(R", . +.PP +(line 6) +Secondary server: see \*(L"delay Option\*(R", . (line 6) +.PP +sel, FSinfo mount option: see \*(L"FSinfo filesystems mount\*(R", . +.PP +(line 6) +Selecting specific log messages: see \*(L"\-x Option\*(R", . (line 6) +.PP +Selector; arch: see \*(L"arch Selector Variable\*(R", . +.PP +(line 6) +Selector; autodir: see \*(L"autodir Selector Variable\*(R", . +.PP +(line 6) +Selector; byte: see \*(L"byte Selector Variable\*(R", . +.PP +(line 6) +Selector; cluster: see \*(L"cluster Selector Variable\*(R", . +.PP +(line 6) +Selector; domain: see \*(L"domain Selector Variable\*(R", . +.PP +(line 6) +Selector; exists: see \*(L"exists Selector Function\*(R", . +.PP +(line 6) +Selector; false: see \*(L"false Selector Function\*(R", . +.PP +(line 6) +Selector; full_os: see \*(L"full_os Selector Variable\*(R", . +.PP +(line 6) +Selector; host: see \*(L"host Selector Variable\*(R", . +.PP +(line 6) +Selector; hostd: see \*(L"hostd Selector Variable\*(R", . +.PP +(line 6) +Selector; in_network: see \*(L"in_network Selector Function\*(R", . +.PP +(line 6) +Selector; karch: see \*(L"karch Selector Variable\*(R", . +.PP +(line 6) +Selector; key: see \*(L"key Selector Variable\*(R", . +.PP +(line 6) +Selector; map: see \*(L"map Selector Variable\*(R", . +.PP +(line 6) +Selector; netgrp: see \*(L"netgrp Selector Function\*(R", . +.PP +(line 6) +Selector; netgrpd: see \*(L"netgrpd Selector Function\*(R", . +.PP +(line 6) +Selector; netnumber: see \*(L"netnumber Selector Variable\*(R", . +.PP +(line 6) +Selector; network: see \*(L"network Selector Variable\*(R", . +.PP +(line 6) +Selector; os: see \*(L"os Selector Variable\*(R", . +.PP +(line 6) +Selector; osver: see \*(L"osver Selector Variable\*(R", . +.PP +(line 6) +Selector; path: see \*(L"path Selector Variable\*(R", . +.PP +(line 6) +Selector; true: see \*(L"true Selector Function\*(R", . +.PP +(line 6) +Selector; vendor: see \*(L"vendor Selector Variable\*(R", . +.PP +(line 6) +Selector; wire: see \*(L"wire Selector Variable\*(R", . +.PP +(line 6) +Selectors: see \*(L"Selectors\*(R", . (line 6) +.PP +selectors on default: see \*(L"defaults with selectors\*(R"\*(L" in \*(R", . +.PP +(line 6) +selectors_on_default Parameter: see \*(L"selectors_on_default Parameter\*(R", . +.PP +(line 6) +Server crashes: see \*(L"Keep-alives\*(R", . (line 6) +.PP +Setting a delay on a mount location: see \*(L"delay Option\*(R", . (line 6) +.PP +Setting additional options on a mount location: see \*(L"addopts Option\*(R", . +.PP +(line 6) +Setting Amd's \s-1RPC\s0 parameters: see \*(L"\-t Option\*(R", . (line 6) +.PP +Setting debug flags: see \*(L"\-D\-Option\*(R", . (line 6) +.PP +Setting default map parameters: see \*(L"Map Defaults\*(R", . (line 6) +.PP +Setting map cache parameters: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +Setting map options: see \*(L"Map Options\*(R", . (line 6) +.PP +Setting system mount options: see \*(L"opts Option\*(R", . (line 6) +.PP +Setting system mount options for non-local networks: see \*(L"remopts Option\*(R", . +.PP +(line 6) +Setting the Amd log file via Amq: see \*(L"Amq \-l option\*(R", . (line 6) +.PP +Setting the cluster name: see \*(L"\-C\-Option\*(R", . (line 6) +.PP +Setting the default mount directory: see \*(L"\-a Option\*(R", . (line 6) +.PP +Setting the filesystem type option: see \*(L"type Option\*(R", . (line 6) +.PP +Setting the interval before a filesystem times out: see \*(L"\-c Option\*(R", . +.PP +(line 6) +Setting the interval between unmount attempts: see \*(L"\-w Option\*(R", . (line 6) +.PP +Setting the Kernel architecture: see \*(L"\-k Option\*(R", . (line 6) +.PP +Setting the local domain name: see \*(L"\-d Option\*(R", . (line 6) +.PP +Setting the local mount point: see \*(L"fs Option\*(R", . (line 6) +.PP +Setting the log file: see \*(L"\-l Option\*(R", . (line 6) +.PP +Setting the \s-1NIS \s0(\s-1YP\s0) domain name: see \*(L"\-y Option\*(R", . (line 6) +.PP +Setting the Operating System name: see \*(L"\-O\-Option\*(R", . (line 6) +.PP +Setting the Operating System version: see \*(L"\-o Option\*(R", . (line 6) +.PP +Setting the sublink option: see \*(L"sublink Option\*(R", . (line 6) +.PP +shared libraries: see \*(L"Supported Platforms\*(R", . (line 6) +.PP +Shared Memory and Swap Filesystem: see \*(L"Shared Memory+Swap Filesystem\*(R", . +.PP +(line 6) +Sharing a fileserver between architectures: see \*(L"Architecture Sharing\*(R", . +.PP +(line 6) +show_statfs_entries Parameter: see \*(L"show_statfs_entries Parameter\*(R", . +.PP +(line 6) +\&\s-1SIGHUP\s0 signal: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +\&\s-1SIGINT\s0 signal: see \*(L"Stopping Amd\*(R", . (line 6) +.PP +\&\s-1SIGTERM\s0 signal: see \*(L"Stopping Amd\*(R", . (line 6) +.PP +Single-Host Mail Spool Directory: see \*(L"Single-Host Mail Spool Directory\*(R", . +.PP +(line 6) +Source code distribution: see \*(L"Distrib\*(R", . (line 6) +.PP +Starting Amd: see \*(L"Starting Amd\*(R", . (line 6) +.PP +Statically mounts filesystems, FSinfo: see \*(L"FSinfo static mounts\*(R", . +.PP +(line 6) +Statistics: see \*(L"Amq \-s option\*(R", . (line 6) +.PP +Stopping Amd: see \*(L"Stopping Amd\*(R", . (line 6) +.PP +Stripping the local domain name: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +sublink: see \*(L"Filesystems and Volumes\*(R", . +.PP +(line 6) +sublink, mount option: see \*(L"sublink Option\*(R", . (line 6) +.PP +Supported Platforms: see \*(L"Supported Platforms\*(R", . (line 6) +.PP +Symbolic link filesystem: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +Symbolic link filesystem \s-1II:\s0 see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +Symlink if target exists, \s-1NFS\s0 otherwise: see \*(L"NFS-Link Filesystem\*(R", . +.PP +(line 6) +symlink, link filesystem type: see \*(L"Symbolic Link Filesystem\*(R", . +.PP +(line 6) +symlink, linkx filesystem type: see \*(L"Symbolic Link Filesystem \s-1II\*(R"\s0, . +.PP +(line 6) +symlink, nfsl filesystem type: see \*(L"NFS-Link Filesystem\*(R", . (line 6) +.PP +Synchronizing the map cache: see \*(L"Automount Filesystem\*(R", . +.PP +(line 6) +syslog: see \*(L"\-l Option\*(R", . (line 6) +.PP +syslog facility; specifying an alternate: see \*(L"\-l Option\*(R", . (line 13) +.PP +syslog priorities: see \*(L"\-x Option\*(R", . (line 6) +.PP +tag Parameter: see \*(L"tag Parameter\*(R", . (line 6) +.PP +Tags for Amd configuration file: see \*(L"\-T\-Option\*(R", . (line 6) +.PP +\&\s-1TCP\s0; using with Amq: see \*(L"Amq \-T option\*(R", . (line 6) +.PP +tfs, filesystem type: see \*(L"Translucent Filesystem\*(R", . +.PP +(line 6) +The mount system call: see \*(L"opts Option\*(R", . (line 6) +.PP +tmpfs, filesystem type: see \*(L"Shared Memory+Swap Filesystem\*(R", . +.PP +(line 6) +Top level filesystem: see \*(L"Top-level Filesystem\*(R", . +.PP +(line 6) +toplvl, filesystem type: see \*(L"Top-level Filesystem\*(R", . +.PP +(line 6) +Translucent Filesystem: see \*(L"Translucent Filesystem\*(R", . +.PP +(line 6) +true Selector Function: see \*(L"true Selector Function\*(R", . +.PP +(line 6) +true, boolean mount selector: see \*(L"true Selector Function\*(R", . +.PP +(line 6) +type, mount option: see \*(L"type Option\*(R", . (line 6) +.PP +Types of configuration map: see \*(L"Map Types\*(R", . (line 6) +.PP +Types of filesystem: see \*(L"Filesystem Types\*(R", . (line 6) +.PP +Types of mount map: see \*(L"Map Types\*(R", . (line 6) +.PP +\&\s-1UDP\s0; using with Amq: see \*(L"Amq \-U\-option\*(R", . (line 6) +.PP +\&\s-1UFS:\s0 see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +ufs, filesystem type: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +umapfs, filesystem type: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R", . +.PP +(line 6) +Union file maps: see \*(L"Union maps\*(R", . (line 6) +.PP +Union filesystem: see \*(L"Union Filesystem\*(R", . (line 6) +.PP +union, filesystem type: see \*(L"Union Filesystem\*(R", . (line 6) +.PP +Unix filesystem: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +Unix namespace: see \*(L"Volume Binding\*(R", . (line 6) +.PP +unmount attempt backoff interval: see \*(L"\-w Option\*(R", . (line 6) +.PP +unmount, mount option: see \*(L"Program Filesystem\*(R", . (line 17) +.PP +unmount_on_exit Parameter: see \*(L"unmount_on_exit Parameter\*(R", . +.PP +(line 6) +Unmounting a filesystem: see \*(L"Amq \-u option\*(R", . (line 6) +.PP +User filesystems: see \*(L"User Filesystems\*(R", . (line 6) +.PP +User \s-1ID\s0 Mapping Filesystem: see \*(L"User \s-1ID\s0 Mapping Filesystem\*(R", . +.PP +(line 6) +User maps, automatic generation: see \*(L"Password maps\*(R", . (line 6) +.PP +Using FSinfo: see \*(L"Using FSinfo\*(R", . (line 6) +.PP +Using Hlfsd: see \*(L"Using Hlfsd\*(R", . (line 6) +.PP +Using syslog to log errors: see \*(L"\-l Option\*(R", . (line 6) +.PP +Using the password file as a map: see \*(L"Password maps\*(R", . (line 6) +.PP +Variable expansion: see \*(L"Variable Expansion\*(R", . (line 6) +.PP +vendor Parameter: see \*(L"vendor Parameter\*(R", . (line 6) +.PP +vendor Selector Variable: see \*(L"vendor Selector Variable\*(R", . +.PP +(line 6) +vendor, mount selector: see \*(L"vendor Selector Variable\*(R", . +.PP +(line 6) +verbose, FSinfo command line option: see \*(L"\-v FSinfo Option\*(R", . (line 6) +.PP +Version information: see \*(L"\-v Option\*(R", . (line 6) +.PP +Version information at run-time: see \*(L"Amq \-v option\*(R", . (line 6) +.PP +volname, FSinfo mount option: see \*(L"FSinfo filesystems mount\*(R", . +.PP +(line 6) +Volume: see \*(L"Filesystems and Volumes\*(R", . +.PP +(line 6) +Volume binding: see \*(L"Volume Binding\*(R", . (line 6) +.PP +Volume names: see \*(L"Volume Naming\*(R", . (line 6) +.PP +wait4amd: see \*(L"wait4amd\*(R", . (line 6) +.PP +wait4amd2die: see \*(L"wait4amd2die\*(R", . (line 6) +.PP +Why Deliver Into the Home Directory?: see \*(L"Why Deliver Into the Home Directory?\*(R", . +.PP +(line 6) +Wildcards in maps: see \*(L"Key Lookup\*(R", . (line 6) +.PP +wire Selector Variable: see \*(L"wire Selector Variable\*(R", . +.PP +(line 6) +wire, mount selector: see \*(L"wire Selector Variable\*(R", . +.PP +(line 6) +wire-test: see \*(L"wire-test\*(R", . (line 6) +.PP +\&\s-1XFS:\s0 see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +xfs, filesystem type: see \*(L"Unix Filesystem\*(R", . (line 6) +.PP +\&\s-1YP\s0 domain name: see \*(L"\-y Option\*(R", . (line 6) diff --git a/usr.sbin/amd/doc/Makefile b/usr.sbin/amd/doc/Makefile deleted file mode 100644 index a36fb61cf9..0000000000 --- a/usr.sbin/amd/doc/Makefile +++ /dev/null @@ -1,15 +0,0 @@ -# This file is under a "BSD" copyright (c) by David O'Brien 1998. - -# $FreeBSD: src/usr.sbin/amd/doc/Makefile,v 1.10 1999/08/28 01:15:14 peter Exp $ -# $DragonFly: src/usr.sbin/amd/doc/Makefile,v 1.2 2003/06/17 04:29:52 dillon Exp $ - -INFO= am-utils - -INFOSECTION= "AMD Documentation" -INFOENTRY= "* Am-utils: (am-utils). The Amd automounter suite of utilities" - -MAKEINFOFLAGS+= -I ${.CURDIR}/../../../contrib/amd/doc - -.PATH: ${.CURDIR}/../../../contrib/amd/doc - -.include