-This is the Linux NFS utility package version 0.1.7. It is based on
-knfsd 1.4.7.
+This is version 1.1.0 of nfs-utils, the Linux NFS utility package.
-WARNING: The NFS servers in Linux 2.2 to 2.2.13 are not compatible with
-other NFS client implemenations. If you plan to use Linux 2.2.x as an
-NFS server for non-Linux NFS clients, you should get the Linux NFS
-kernel from the Linux NFS CVS server:
-1. Set the environment variable, CVS_RSH, to ssh. It is not required
-for anonymous access.
+0. PROJECT RESOURCES
-2. Login to the Linux NFS CVS server:
+Home page: http://sourceforge.net/projects/nfs/
-# cvs -z 3 -d:pserver:anonymous@cvs.nfs.sourceforge.net:/cvsroot/nfs login
+To use the 'gss' support you must have kerberos-5 development
+libraries installed.
+Otherwise use "--disable-gss"
-without password if it is your first time.
+To use nfsv4 support you need libevent and libnfsidmap development
+libraries. They are available from
+ http://www.monkey.org/~provos/libevent/
+ http://www.citi.umich.edu/projects/nfsv4/linux/libnfsidmap/
+Otherwise use --disable-nfsv4
-3. Check out the current Linux 2.2 NFS kernel:
-a. From the NFS V2 branch:
+1. COMPILING
-# cvs -z 3 -d:pserver:anonymous@cvs.nfs.sourceforge.net:/cvsroot/nfs co -r linux-2-2-nfsv2 linux-2.2
+Unpack the sources and run these commands:
-b. From the main trunk:
+ # ./configure
+ # make
-# cvs -z 3 -d:pserver:anonymous@cvs.nfs.sourceforge.net:/cvsroot/nfs co linux-2.2
+To install binaries and documenation, run this command:
-4. If you don't want to use the current NFS kernel, you can find out
-for which kernels the NFS patch is available:
+ # make install
-# cd linux-2.2
-# cvs -z 9 -d:pserver:anonymous@cvs.nfs.sourceforge.net:/cvsroot/nfs status -v Makefile
-Then generate the kernel patch:
+2. COMPILING FROM GIT
-# cvs -z 3 -d:pserver:anonymous@cvs.nfs.sourceforge.net:/cvsroot/nfs rdiff -ko -u -r linux-2-2-xx -r linux-2-2-xx-nfsv2-xxxxx linux-2.2
+Getting nfs-utils for the first time:
-If there is no NFS patch for the kernel you are interested in, you have
-to make a patch closest to your kernel version and apply it by hand.
+ git clone git://linux-nfs.org/nfs-utils
-There is a Linux NFS kernel source tree for Linux 2.3, linux-2.3, on
-the Linux NFS CVS server. We will need all the help we can get. To
-contribute to the Linux NFS project, please go to
+Updating to the latest head after you've already got it.
-http://www.sourceforge.net
+ git pull
-You register yourself. Please send an email to
-nfs-admin@nfs.sourceforge.net with
+Building requires that autotools be installed. To invoke them
+simply
-1. Your user id on www.sourceforge.net.
-2. The area in NFS you'd like to work on.
+ sh autogen.sh
-You will be notified when it is done.
+Finally, build as usual as above.
-There is a Linux NFS mailing list at
+3. DAEMON STARTUP ORDER
-http://lists.sourceforge.net/mailman/listinfo/nfs/
-You can subscribe it and search the mailing list archive via a web
-browser.
+This nfs-utils packages does not provide any scripts for starting
+various daemons as most distributions replace them with their own, so
+any scripts we package would not get much testing.
+Instead, we explain the dependencies involved in startup so that
+scripts can be written to work correctly.
-The nfs-utils package is available from the CVS server:
+3.0 PREREQUISITES
-# cvs -z 3 -d:pserver:anonymous@cvs.nfs.sourceforge.net:/cvsroot/nfs co nfs-utils
+ Name service (host name lookup) should be working before any
+ NFS services are started.
-will get the latest version.
+ "portmap" must be running before any NFS services (server or
+ client) are started.
+
+ Normally network interfaces should be configured first as well,
+ though this isn't critical for the NFS server (providing name
+ service is handled locally).
+
+3.1. SERVER STARTUP
-The files are
-ftp://nfs.sourceforge.net/pub/nfs/nfs-utils-0.1.7.tar.gz
-ftp://nfs.sourceforge.net/pub/nfs/nfs-utils-0.1.6-0.1.7.diff.gz
+ A/ mount -t nfsd /proc/fs/nfsd
+ This filesystem needs to be mount before most daemons,
+ particularly exportfs, mountd, svcgssd, idmapd.
+ It could be mounted once, or the script that starts each daemon
+ could test if it is mounted and mount it if not.
-To compile, just do
+ B/ svcgssd ; idmapd
+ These supply services to nfsd and so should be started before
+ rpc.nfsd. Where they come between mounting the nfsd filesystem
+ and starting the nfsd server is not important.
+ idmapd is only needed for NFSv4 support.
+ svcgssd is only needed if exportfs NFS filesystem with crypto-
+ security (Kerberos or SPKM3).
-# ./configure
-# make
+ C/ exportfs -av ; rpc.mountd
+ It is important that exportfs be run before mountd so that
+ mountd is working from current information (in
+ /var/lib/nfs/etab).
+ It is also important that both of these are run before
+ rpc.nfsd.
+ If not, any NFS requests that arrive before mountd is started
+ will get replied to with a 'Stale NFS File handle' error.
-# make install
+ D/ rpc.statd --no-notify
+ It is best if statd is started before nfsd though this isn't
+ critical. Certainly it should be at most a few seconds after
+ nfsd.
+ When nfsd starts it will start lockd. If lockd then receives a
+ lock request it will communicate with statd. If statd is not
+ running lockd will retry, but it won't wait forever for a
+ reply.
+ Note that if statd is started before nfsd, the --no-notify
+ option must be used. If notify requests are sent out before
+ nfsd start, clients may try to reclaim locks and, on finding
+ that lockd isn't running, they will give up and never reclaim
+ the lock.
+ rpc.statd is only needed for NFSv2 and NFSv3 support.
-will install the nfs-utils binaries. You have to install the NFS
-service scripts. There are 2 in etc/redhat provided for RedHat 6.x.
-They are tested on RedHat 6.1.
+ E/ rpc.nfsd
+ Starting nfsd will automatically start lockd. The nfs server
+ will now be fully active and respond to any requests from
+ clients.
+
+ F/ sm-notify
+ This will notify any client which might have locks from before
+ a reboot to try to reclaim their locks. This should start
+ immediately after rpc.nfsd is started so that clients have a
+ chance to reclaim locks within the 90 second grace period.
+ sm-notify is only needed for NFSv2 and NFSv3 support.
-On RedHat 6.1, you can use
-# rpm -ta nfs-utils-0.1.7.tar.gz
+3.2. CLIENT STARTUP
-to build the source and binary RPMs.
-
-If your mount from util-linux is too old, you will need 2 patches:
-
-ftp://nfs.sourceforge.net/pub/nfs/util-linux-2.9o-mount-nfsv3.patch
-ftp://nfs.sourceforge.net/pub/nfs/util-linux-2.9w-mount-nfsv3try.patch
-
-Thanks.
-
-
-H.J.
-hjl@lucon.org
-03/13/2000
+ A/ sm-notify
+ This should be run shortly after boot and before any NFS
+ filesystems are mounted with remote-locking support -
+ filesystems can be mounted with "-o nolock" before sm-notify.
+ This is appropriate for '/', '/usr', and '/var'.
+
+ B/ gssd ; idmapd
+ idmapd should be started before mounting any NFSv4 filesystems.
+ gssd should be started before mounting any NFS filesystems
+ securely (with Kerberos of SPKM3).
+
+ C/ statd should be run before any NFSv2 or NFSv3 filesystem is
+ mounted with remote locking (i.e. without -o nolock).
+ 'mount' will try to use "/usr/sbin/start-statd" to start statd
+ if it is not already running, so there is no need to explicitly
+ start statd in boot-time scripts.
+
+3.3. SERVER/CLIENT INTERACTIONS
+
+ A/ sm-notify
+ Both the server and the client need sm-notify to be run.
+ It should be run after the NFS server is started, but before
+ and NFS filesystems are mounted with remote locking.
+
+ B/ rpc.statd
+ Both the server and the client need rpc.statd to be running.
+ Each should try to start when they need it.
+
+ C/ idmapd
+
+ Both the server and client need idmapd to be running. If idmapd
+ is started (for the client) before starting nfsd the 'nfsd'
+ filesystem is mounted, then idmapd should be sent a HUP signal
+ afterwards to signal that the server channels should be opened.
+
+
+
+
+Share And Enjoy!
+
+ -- the nfs-utils developers
+ <linux-nfs@vger.kernel.org>