]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - debian/nfs-kernel-server.init
Install osd_login (part of the autologin feature). - Add open-iscsi and watchdog...
[nfs-utils.git] / debian / nfs-kernel-server.init
index aca28028a5eb4e782f6f7d4f42b4698d35f2c9df..a5b41370ae9f5b7e51af300798cf450add29b6b1 100644 (file)
@@ -1,8 +1,10 @@
-#!/bin/sh
+#!/bin/bash
 
 ### BEGIN INIT INFO
 # Provides:          nfs-kernel-server
-# Required-Start:    $portmap $time
+# Required-Start:    $remote_fs nfs-common $portmap $time
+# Required-Stop:     $remote_fs nfs-common $portmap $time
+# Should-Start:      $named
 # Default-Start:     2 3 4 5
 # Default-Stop:      0 1 6
 # Short-Description: Kernel NFS server support
@@ -26,8 +28,7 @@ DEFAULTFILE=/etc/default/nfs-kernel-server
 RPCNFSDCOUNT=8
 RPCNFSDPRIORITY=0
 RPCMOUNTDOPTS=
-NEED_SVCGSSD=yes
-RPCGSSDOPTS=
+NEED_SVCGSSD=no
 RPCSVCGSSDOPTS=
 PROCNFSD_MOUNTPOINT=/proc/fs/nfsd
 if [ -f $DEFAULTFILE ]; then
@@ -37,7 +38,7 @@ fi
 . /lib/lsb/init-functions
 
 do_modprobe() {
-    if [ -x /sbin/modprobe ]
+    if [ -x /sbin/modprobe -a -f /proc/modules ]
     then
         modprobe -q "$1" || true
     fi
@@ -59,12 +60,12 @@ do_mount() {
 # See how we were called.
 case "$1" in
   start)
-       if [ -f /etc/exports ]
+       if [ -f /etc/exports ] && grep -q '^[[:space:]]*[^#]*/' /etc/exports
        then
                do_modprobe nfsd
 
                # See if our running kernel supports the NFS kernel server
-               if [ -f /proc/kallsyms ] && ! grep -qE 'init_nf(sd|     )' /proc/kallsyms; then
+               if ! grep -E -qs "[[:space:]]nfsd\$" /proc/filesystems; then
                        log_warning_msg "Not starting $DESC: no support in current kernel."
                        exit 0
                fi
@@ -72,20 +73,32 @@ case "$1" in
                do_mount nfsd $PROCNFSD_MOUNTPOINT || NEED_SVCGSSD=no
                log_begin_msg "Exporting directories for $DESC..."
                $PREFIX/sbin/exportfs -r
-               if [ $? != 0 ]; then
-                       log_end_msg $?
-                       exit $?
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
                fi
                log_end_msg 0
 
                log_daemon_msg "Starting $DESC"
                log_progress_msg "nfsd"
+               
+               # See if rpcbind is running
+               /usr/sbin/rpcinfo -p >/dev/null 2>&1
+               RET=$?
+               if [ $RET != 0 ]; then
+                   echo
+                   log_warning_msg "Not starting: portmapper is not running"
+                   exit 0
+               fi
+
                start-stop-daemon --start --oknodo --quiet \
                    --nicelevel $RPCNFSDPRIORITY \
                    --exec $PREFIX/sbin/rpc.nfsd -- $RPCNFSDCOUNT
-               if [ $? != 0 ]; then
-                       log_end_msg $?
-                       exit $?
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
                fi
 
                # make sure 127.0.0.1 is a valid source for requests
@@ -102,13 +115,26 @@ case "$1" in
                    RPCMOUNTDOPTS="$RPCMOUNTDOPTS --no-nfs-version 3"
 
                [ -z "$ClearAddr" ] || echo "nfsd 127.0.0.1 1" >/proc/net/rpc/auth.unix.ip/channel
+       
+               if [ "$NEED_SVCGSSD" = "yes" ]; then
+                       do_modprobe rpcsec_gss_krb5
+                       log_progress_msg "svcgssd"
+                       start-stop-daemon --start --oknodo --quiet \
+                           --exec $PREFIX/sbin/rpc.svcgssd -- $RPCSVCGSSDOPTS
+                       RET=$?
+                       if [ $RET != 0 ]; then
+                               log_end_msg $RET
+                               exit $RET
+                       fi
+               fi
 
                log_progress_msg "mountd"
                start-stop-daemon --start --oknodo --quiet \
                    --exec $PREFIX/sbin/rpc.mountd -- $RPCMOUNTDOPTS
-               if [ $? != 0 ]; then
-                       log_end_msg $?
-                       exit $?
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
                fi
 
                log_end_msg 0
@@ -119,34 +145,48 @@ case "$1" in
 
   stop)
        log_daemon_msg "Stopping $DESC"
-       
+
        log_progress_msg "mountd"
        start-stop-daemon --stop --oknodo --quiet \
            --name rpc.mountd --user 0
-       if [ $? != 0 ]; then
-               log_end_msg $?
-               exit $?
+       RET=$?
+       if [ $RET != 0 ]; then
+               log_end_msg $RET
+               exit $RET
+       fi
+
+       if [ "$NEED_SVCGSSD" = "yes" ]; then
+               log_progress_msg "svcgssd"
+               start-stop-daemon --stop --oknodo --quiet \
+                   --name rpc.svcgssd --user 0
+               RET=$?
+               if [ $RET != 0 ]; then
+                       log_end_msg $RET
+                       exit $RET
+               fi
        fi
 
        log_progress_msg "nfsd"
        start-stop-daemon --stop --oknodo --quiet \
            --name nfsd --user 0 --signal 2
-       if [ $? != 0 ]; then
-               log_end_msg $?
-               exit $?
+       RET=$?
+       if [ $RET != 0 ]; then
+               log_end_msg $RET
+               exit $RET
        fi
 
        log_end_msg 0
 
        log_begin_msg "Unexporting directories for $DESC..."
        $PREFIX/sbin/exportfs -au
-       if [ $? != 0 ]; then
-               log_end_msg $?
-               exit $?
+       RET=$?
+       if [ $RET != 0 ]; then
+               log_end_msg $RET
+               exit $RET
        fi
        log_end_msg 0
 
-       if mountpoint -q /proc/nfs/nfsd
+       if mountpoint -q $PROCNFSD_MOUNTPOINT
        then
            $PREFIX/sbin/exportfs -f
        fi
@@ -166,8 +206,9 @@ case "$1" in
   reload | force-reload)
        log_begin_msg "Re-exporting directories for $DESC..."
        $PREFIX/sbin/exportfs -r
-       log_end_msg $?
-       exit $?
+       RET=$?
+       log_end_msg $RET
+       exit $RET
        ;;
 
   restart)