summaryrefslogtreecommitdiff
path: root/beagle/debian-rfs/etc/network/if-up.d
diff options
context:
space:
mode:
authorManuel Traut <manut@mecka.net>2011-04-29 09:09:27 +0200
committerManuel Traut <manut@mecka.net>2011-04-29 09:09:27 +0200
commit5238ad5a0c4a9e1c8cd036f5de4055e39bd71297 (patch)
tree4407c087b9fb5432b1dc11e70b52dacfa0b99feb /beagle/debian-rfs/etc/network/if-up.d
parent60ead65c41afba7e6aa4bbcf507a1d52f7a8fe9f (diff)
added debootstrap stuff
Signed-off-by: Manuel Traut <manut@mecka.net>
Diffstat (limited to 'beagle/debian-rfs/etc/network/if-up.d')
-rwxr-xr-xbeagle/debian-rfs/etc/network/if-up.d/mountnfs173
1 files changed, 173 insertions, 0 deletions
diff --git a/beagle/debian-rfs/etc/network/if-up.d/mountnfs b/beagle/debian-rfs/etc/network/if-up.d/mountnfs
new file mode 100755
index 0000000..3564cfd
--- /dev/null
+++ b/beagle/debian-rfs/etc/network/if-up.d/mountnfs
@@ -0,0 +1,173 @@
+#! /bin/sh
+# Description: Now that TCP/IP is configured, mount the NFS file
+# systems in /etc/fstab if needed. If possible,
+# start the portmapper before mounting (this is needed for
+# Linux 2.1.x and up).
+#
+# Also mounts SMB filesystems now, so the name of
+# this script is getting increasingly inaccurate.
+
+PATH=/sbin:/bin
+. /lib/init/vars.sh
+
+. /lib/lsb/init-functions
+. /lib/init/mount-functions.sh
+
+set_env() {
+ [ -f /etc/fstab ] || return
+ #
+ # Read through fstab line by line. If it is NFS, set the flag
+ # for mounting NFS file systems. If any NFS partition is found and it
+ # not mounted with the nolock option, we start the portmapper.
+ #
+ # If any sec={krb5,krb5i,krb5p} option is given, or any of the file
+ # systems are nfs4, we'll need to start rpc.gssd and/or rpc.idmapd too;
+ # we'll leave that to nfs-common.
+ #
+
+ exec 9<&0 </etc/fstab
+
+ start_nfs=no
+ NETFS=""
+ NETDEV=""
+ while read DEV MTPT FSTYPE OPTS REST
+ do
+ case "$DEV" in
+ ""|\#*)
+ continue
+ ;;
+ esac
+ case "$OPTS" in
+ noauto|*,noauto|noauto,*|*,noauto,*)
+ continue
+ ;;
+ _netdev|*,_netdev|_netdev,*|*,_netdev,*)
+ NETDEV=yes
+ ;;
+ esac
+ case "$FSTYPE" in
+ nfs)
+ # NFS filsystems normally require statd and portmap. However,
+ # if nolock is set, portmap and statd are not required for this
+ # file system.
+ case "$OPTS" in
+ nolock|*,nolock|nolock,*|*,nolock,*)
+ # no action
+ ;;
+ *)
+ start_nfs=yes
+ ;;
+ esac
+
+ # However, Kerberos requires gssd, so start nfs-common anyway.
+ case "$OPTS" in
+ sec=krb5|*,sec=krb5|sec=krb5,*|*,sec=krb5,*|sec=krb5i|*,sec=krb5i|sec=krb5i,*|*,sec=krb5i,*|sec=krb5p|*,sec=krb5p|sec=krb5p,*|*,sec=krb5p,*)
+
+ start_nfs=yes
+ ;;
+ esac
+ ;;
+ nfs4)
+ # NFSv4 requires idmapd, so start nfs-common no matter what the options are.
+ start_nfs=yes
+ ;;
+ smbfs|cifs|coda|ncp|ncpfs|ocfs2|gfs)
+ ;;
+ *)
+ FSTYPE=
+ ;;
+ esac
+ if [ "$FSTYPE" ]
+ then
+ case "$NETFS" in
+ $FSTYPE|*,$FSTYPE|$FSTYPE,*|*,$FSTYPE,*)
+ ;;
+ *)
+ NETFS="$NETFS${NETFS:+,}$FSTYPE"
+ ;;
+ esac
+ fi
+ done
+
+ exec 0<&9 9<&-
+}
+
+do_start() {
+ #
+ # Initialize nfs-common (which starts rpc.statd, rpc.gssd
+ # and/or rpc.idmapd, and loads the right kernel modules if
+ # applicable) if we use Kerberos and/or NFSv4 mounts.
+ #
+ if [ "$start_nfs" = yes ] && [ -x /etc/init.d/portmap ] && [ -x /etc/init.d/nfs-common ]
+ then
+ /etc/init.d/portmap start
+ /etc/init.d/nfs-common start
+ fi
+
+ pre_mountall
+ if [ "$NETFS" ]
+ then
+ mount -a -t$NETFS
+ fi
+ if [ "$NETDEV" ]; then
+ mount -a -O _netdev
+ fi
+ post_mountall
+}
+
+exit_unless_last_interface() {
+ grep "^[:space:]*auto" /etc/network/interfaces | \
+ sed -e 's/[ \t]*auto[ \t]*//;s/[ \t]*$//;s/[ \t]/\n/g' | \
+ while read i; do
+ if [ `grep -c $i /etc/network/run/ifstate` -eq "0" ]; then
+ msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts"
+ log_warning_msg "$msg"
+ # Can not pass this as a variable because of the while subshell
+ mkdir /var/run/network/mountnfs_earlyexit 2> /dev/null
+ fi
+ done
+ if [ -d /var/run/network/mountnfs_earlyexit ]; then
+ rmdir /var/run/network/mountnfs_earlyexit 2>/dev/null
+ exit 0
+ fi
+}
+
+# Using 'no !=' instead of 'yes =' to make sure async nfs mounting is
+# the default even without a value in /etc/default/rcS
+set_env
+# Exit imediately and do not claim to wait for the last interface if
+# no network file systems are listed in /etc/fstab.
+if [ "$start_nfs" = "no" ] && [ ! "$NETFS" ] && [ ! "$NETDEV" ]; then
+ exit 0
+fi
+
+if [ no != "$ASYNCMOUNTNFS" ]; then
+ # Not for loopback!
+ [ "$IFACE" != "lo" ] || exit 0
+
+ # Lock around this otherwise insanity may occur
+ mkdir /var/run/network 2>/dev/null || true
+
+ # Wait until all auto interfaces are up before attemting to mount
+ # network file systems.
+ exit_unless_last_interface
+
+ if mkdir /var/run/network/mountnfs 2>/dev/null ; then
+ :
+ else
+ msg="if-up.d/mountnfs[$IFACE]: lock /var/run/network/mountnfs exist, not mounting"
+ log_failure_msg "$msg"
+ # Log if /usr/ is mounted
+ [ -x /usr/bin/logger ] && /usr/bin/logger -t "if-up.d/mountnfs[$IFACE]" "$msg"
+ exit 0
+ fi
+
+ on_exit() {
+ # Clean up lock when script exits, even if it is interrupted
+ rmdir /var/run/network/mountnfs 2>/dev/null || exit 0
+ }
+ trap on_exit EXIT # Enable emergency handler
+ do_start
+elif [ yes = "$FROMINITD" ] ; then
+ do_start
+fi