/etc/network/if-up.d/mountnfs is in initscripts 2.88dsf-59.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 | #! /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.
# Skip the mountnfs hook when being triggered by the networking SysV init
# script and instead use the systemd built-in mechanisms to mount remote
# file systems.
# This avoids a deadlock caused by the rpcbind SysV init script depending
# on $network and the $network LSB facility being provided by the networking
# SysV init script.
if [ -d /run/systemd/system ]; then
systemctl list-jobs | grep -q network.target && exit 0
fi
PATH=/sbin:/bin
. /lib/init/vars.sh
. /lib/lsb/init-functions
. /lib/init/mount-functions.sh
set_env() {
# 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.
start_nfs=no
NETFS=""
NETDEV=""
for file in "$(eval ls $(fstab_files))"; do
if [ -f "$file" ]; then
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|ceph)
;;
*)
FSTYPE=
;;
esac
if [ "$FSTYPE" ]; then
case "$NETFS" in
$FSTYPE|*,$FSTYPE|$FSTYPE,*|*,$FSTYPE,*)
;;
*)
NETFS="$NETFS${NETFS:+,}$FSTYPE"
;;
esac
fi
done < "$file"
fi
done
}
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/nfs-common ]
then
[ -x /etc/init.d/portmap ] && /etc/init.d/portmap start
[ -x /etc/init.d/rpcbind ] && /etc/init.d/rpcbind 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() {
ifaces="$(ifquery --list)"
for i in $ifaces ; do
if [ "$i" = "lo" ]; then
continue
fi
if ! ifquery --state $i >/dev/null ; then
msg="if-up.d/mountnfs[$IFACE]: waiting for interface $i before doing NFS mounts"
log_warning_msg "$msg"
exit 0
fi
done
}
# 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
[ "$ADDRFAM" = "inet" ] || [ "$ADDRFAM" = "inet6" ] || 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
|