4
# This shell script takes care of starting and stopping
5
# the kernel-mode NFS server.
8
# description: NFS is a popular protocol for file sharing across TCP/IP \
9
# networks. This service provides NFS server functionality, \
10
# which is configured via the /etc/exports file.
16
DESC="NFS kernel daemon"
19
# Exit if required binaries are missing.
20
[ -x $PREFIX/sbin/rpc.nfsd ] || exit 0
21
[ -x $PREFIX/sbin/rpc.mountd ] || exit 0
22
[ -x $PREFIX/sbin/exportfs ] || exit 0
23
[ -x $PREFIX/sbin/rpc.svcgssd ] || exit 0
26
DEFAULTFILE=/etc/default/nfs-kernel-server
32
PROCNFSD_MOUNTPOINT=/proc/fs/nfsd
33
if [ -f $DEFAULTFILE ]; then
38
modprobe -q "$1" || true
42
if ! grep -E -qs "$1\$" /proc/filesystems
46
if ! mountpoint -q "$2"
48
mount -t "$1" "$1" "$2"
54
# See how we were called.
57
cd / # daemons should have root dir as cwd
58
if grep -q '^/' /etc/exports
61
do_mount nfsd $PROCNFSD_MOUNTPOINT || NEED_SVCGSSD=no
62
printf "Exporting directories for $DESC..."
63
$PREFIX/sbin/exportfs -r
66
printf "Starting $DESC:"
67
if [ "$NEED_SVCGSSD" = yes ]
70
start-stop-daemon --start --quiet \
71
--make-pidfile --pidfile /var/run/rpc.svcgssd.pid \
72
--exec $PREFIX/sbin/rpc.svcgssd -- $RPCSVCGSSDOPTS
76
start-stop-daemon --start --quiet \
77
--exec $PREFIX/sbin/rpc.nfsd -- $RPCNFSDCOUNT
81
# make sure 127.0.0.1 is a valid source for requests
83
if [ -f /proc/net/rpc/auth.unix.ip/channel ]
85
fgrep -qs 127.0.0.1 /proc/net/rpc/auth.unix.ip/content || {
86
echo "nfsd 127.0.0.1 2147483647 localhost" >/proc/net/rpc/auth.unix.ip/channel
91
$PREFIX/bin/rpcinfo -u localhost nfs 3 >/dev/null 2>&1 ||
92
RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3"
94
[ -z "$ClearAddr" ] || echo "nfsd 127.0.0.1 1" >/proc/net/rpc/auth.unix.ip/channel
96
start-stop-daemon --start --quiet \
97
--exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS
100
echo "Not starting $DESC: No exports."
105
printf "Stopping $DESC: mountd"
106
start-stop-daemon --stop --oknodo --quiet \
107
--name rpc.mountd --user 0
108
if [ "$NEED_SVCGSSD" = yes ]
111
start-stop-daemon --stop --oknodo --quiet \
112
--name rpc.svcgssd --user 0
113
rm -f /var/run/rpc.svcgssd.pid
116
start-stop-daemon --stop --oknodo --quiet \
117
--name nfsd --user 0 --signal 2
120
printf "Unexporting directories for $DESC..."
121
$PREFIX/sbin/exportfs -au
125
reload | force-reload)
126
printf "Re-exporting directories for $DESC..."
127
$PREFIX/sbin/exportfs -r
138
echo "Usage: nfs-kernel-server {start|stop|reload|force-reload|restart}"