Kernel Configuration
Enable the following options in the kernel configuration (choose client and/or server support as appropriate) and recompile the kernel if necessary:
File systems --->
[*] Network File Systems ---> [NETWORK_FILESYSTEMS]
<*/M> NFS client support [NFS_FS]
<*/M> NFS server support [NFSD]
Select the appropriate sub-options that appear when the above options are selected.
Note
In BLFS we assume that nfs v3 will be used. If the server offers nfs v4 (for linux, CONFIG_NFSD_V4) then auto-negotiation for v3 will fail and you will need to add nfsver=3
to the mount options. This also applies if that option is enabled in the client's kernel, for example in a distro trying to mount from a BLFS v3 server.
Even if neither end of the connection supports nfs v4, adding nfsver=3
is still beneficial because it prevents an error message "NFS: bad mount option value specified: minorversion=1" being logged on every mount.
Installation of NFS Utilities
Install NFS Utilities by running the following commands:
./configure --prefix=/usr \
--sysconfdir=/etc \
--sbindir=/usr/sbin \
--disable-nfsv4 \
--disable-gss \
LIBS="-lsqlite3 -levent_core" &&
make
Now, as the root
user:
make install &&
chmod u+w,go+r /usr/sbin/mount.nfs &&
chown nobody:nogroup /var/lib/nfs
The tests for this package require that the package be installed. In addition, the rpc.statd daemon must not be running and the tests need to be run as the root
user.
To test the results, issue, as root
:
make check
Command Explanations
--disable-gss
: Disables support for RPCSEC GSS (RPC Security).
LIBS="-lsqlite3 -levent_core"
: is required for the fsidd program.
chown nobody:nogroup /var/lib/nfs: The rpc.statd program uses the ownership of this directory to set it's UID and GID. This command sets those to unprivileged entries.
Configuring NFS Utilities
Server Configuration
/etc/exports
contains the exported directories on NFS servers. Refer to the exports.5
manual page for the syntax of this file. Also refer to the "NFS HowTo" available at https://nfs.sourceforge.net/nfs-howto/ for information on how to configure the servers and clients in a secure manner. For example, for sharing the /home
directory over the local network, the following line may be added:
cat >> /etc/exports << EOF
/home 192.168.0.0/24
(rw,subtree_check,anonuid=99,anongid=99)
EOF
Note
Be sure to replace the directory, network address. and prefix above to match your network. The only space in the line above should be between the directory and the network address.
Install the /etc/rc.d/init.d/nfs-server
init script included in the blfs-bootscripts-20231119 package to start the server at boot.
make install-nfs-server
Now create the /etc/sysconfig/nfs-server
configuration file:
cat > /etc/sysconfig/nfs-server << "EOF"
PORT="2049"
PROCESSES="8"
KILLDELAY="10"
EOF
Note
The above parameters may be optionally placed in /etc/sysconfig/rc.site
.
Client Configuration
/etc/fstab
contains the directories that are to be mounted on the client. Alternately the partitions can be mounted by using the mount command with the proper options. To mount the /home
and /usr
partitions, add the following to the /etc/fstab
:
<server-name>
:/home /home nfs rw,_netdev 0 0
<server-name>
:/usr /usr nfs ro,_netdev 0 0
The options which can be used are specified in man 5 nfs . If both the client and server are running recent versions of linux, most of the options will be negotiated (but see the Note above on nfsver=3). You can specify either rw
or ro
, _netdev
if the filesystem is to be automatically mounted at boot, or noauto
(and perhaps user
) for other filesystems.
If the fileserver is not running a recent version of linux, you may need to specify other options.
Note
The following boot script is not required if the nfs-server script is installed.
Install the /etc/rc.d/init.d/nfs-client
init script included in the blfs-bootscripts-20231119 package to start the client services at boot.
make install-nfs-client
To automatically mount nfs
filesystems, clients will also need to install the netfs
bootscript as described in Configuring for Network Filesystems.
Contents
Installed Programs: exportfs, fsidd, mountstats, mount.nfs, mount.nfs4 (link to mount.nfs), nfsconf, nfsdclnts, nfsiostat, nfsstat, rpc.mountd, rpc.nfsd, rpc.statd, rpcdebug, showmount, sm-notify, start-statd, umount.nfs (link to mount.nfs), and umount.nfs4 (link to mount.nfs)
Installed Libraries: None
Installed Directories: /var/lib/nfs
Short Descriptions
exportfs
|
maintains a list of NFS exported file systems
|
fsidd
|
offers a local UNIX domain socket interface for all NFS userspace to query the reexport database
|
mountstats
|
displays NFS client per-mount statistics
|
mount.nfs
|
is used to mount a network share using NFS
|
mount.nfs4
|
is used to mount a network share using NFSv4
|
nfsconf
|
can be used to test for and retrieve configuration settings from a range of nfs-utils configuration files
|
nfsdclnts
|
prints information about NFS clients
|
nfsiostat
|
reports input/output statistics for network filesystems
|
nfsstat
|
displays statistics kept about NFS client and server activity
|
rpc.mountd
|
implements the NFS mount protocol on an NFS server
|
rpc.nfsd
|
implements the user level part of the NFS service on the server
|
rpc.statd
|
is used by the NFS file locking service. Run on both sides, client as well as server, when you want file locking enabled
|
rpcdebug
|
sets or clears the kernel's NFS client and server debug flags
|
showmount
|
displays mount information for an NFS server
|
sm-notify
|
is used to send Network Status Monitor reboot messages
|
start-statd
|
is a script called by nfsmount when mounting a filesystem with locking enabled, if statd does not appear to be running. It can be customised with whatever flags are appropriate for the site
|
umount.nfs
|
is used to unmount a network share using NFS
|
umount.nfs4
|
is used to unmount a network share using NFSv4
|