This is a sufficient startup script to get a disk-full nfs server working.
authorJohn Bowler <jbowler@nslu2-linux.org>
Sun, 10 Jul 2005 05:42:42 +0000 (05:42 +0000)
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>
Sun, 10 Jul 2005 05:42:42 +0000 (05:42 +0000)
On a flash based server or any (user) configuration where /var is in tmpfs
or ramfs (so is not populated on boot) the script will not work because
it must create the /var/lib/nfs directory and contents.  Consequently at
present the script is not in the build.

packages/nfs-utils/files/.mtn2git_empty [new file with mode: 0644]
packages/nfs-utils/files/nfsserver [new file with mode: 0644]

diff --git a/packages/nfs-utils/files/.mtn2git_empty b/packages/nfs-utils/files/.mtn2git_empty
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/packages/nfs-utils/files/nfsserver b/packages/nfs-utils/files/nfsserver
new file mode 100644 (file)
index 0000000..3536f0d
--- /dev/null
@@ -0,0 +1,106 @@
+#!/bin/sh
+#
+# Startup script for nfs-utils
+#
+# The nfsd kernel module must exist along with its dependencies
+modprobe -n nfsd || exit 0
+#
+# The environment variable NFS_SERVERS may be set in /etc/default/nfsd
+# Other control variables may be overridden here too
+test -r /etc/default/nfsd && . /etc/default/nfsd
+#
+# Location of exectuables:
+test -x "$NFS_MOUNTD" || NFS_MOUNTD=/usr/sbin/mountd
+test -x "$NFS_NFSD" || NFS_NFSD=/usr/sbin/nfsd
+#
+# The user mode program must also exist (it just starts the kernel
+# threads using the kernel module code).
+test -x "$NFS_MOUNTD" || exit 0
+test -x "$NFS_NFSD" || exit 0
+#
+# Default is 8 threads, value is settable between 1 and the truely
+# ridiculous 99
+test "$NFS_SERVERS" -gt 0 && "$NFS_SERVERS" -lt 100 || NFS_SERVERS=8
+#
+#----------------------------------------------------------------------
+# Startup and shutdown functions.
+#  Actual startup/shutdown is at the end of this file.
+#mountd
+start_mountd(){
+       echo -n 'starting mountd: '
+       start-stop-daemon --start --exec "$NFS_MOUNTD" -- "$@"
+       echo done
+}
+stop_mountd(){
+       echo -n 'stopping mountd: '
+       start-stop-daemon --stop --quiet --exec "$NFS_MOUNTD"
+       echo done
+}
+#
+#nfsd
+start_nfsd(){
+       echo -n 'starting $1 nfsd kernel threads: '
+       start-stop-daemon --start --exec "$NFS_NFSD" -- "$@"
+       echo done
+}
+delay_nfsd(){
+       for delay in 0 1 2 3 4 5 6 7 8 9 
+       do
+               if pidof nfsd >/dev/null
+               then
+                       echo -n .
+                       sleep 1
+               else
+                       return 0
+               fi
+       done
+       return 1
+}
+stop_nfsd(){
+       # WARNING: this kills any process with the executable
+       # name 'nfsd'.
+       echo -n 'stopping nfsd: '
+       start-stop-daemon --stop --quiet --signal 1 --name nfsd
+       if delay_nfsd || {
+               echo failed
+               echo ' using signal 9: '
+               start-stop-daemon --stop --quiet --signal 9 --name nfsd
+               delay_nfsd
+       }
+       then
+               echo done
+               # This will remove, recursively, dependencies
+               echo -n 'removing nfsd kernel module: '
+               if modprobe -r nfsd
+               then
+                       echo done
+               else
+                       echo failed
+               fi
+       else
+               echo failed
+       fi
+}
+#----------------------------------------------------------------------
+#
+# supported options:
+#  start
+#  stop
+#  reload: reloads the exports file
+#  restart: stops and starts mountd
+#FIXME: need to create the /var/lib/nfs/... directories
+case "$1" in
+start) start_nfsd "$NFS_SERVERS"
+       start_mountd
+       test -r /etc/exports && exportfs -a;;
+stop)  exportfs -ua
+       stop_mountd
+       stop_nfsd;;
+reload)        test -r /etc/exports && exportfs -r;;
+restart)exportfs -ua
+       stop_mountd
+       # restart does not restart the kernel threads,
+       # only the user mode processes
+       start_mountd
+       test -r /etc/exports && exportfs -a;;
+esac