Configuring for Network Filesystems
While LFS is capable of mounting NFS volumes from
the get go, the lfs-bootscripts are not quite ready for this configuration.
Network filesystems should be unmounted before the network goes down. The
netfs script below will prepare your LFS for mounting
network filesystems at boot time, and unmounting them when the network
is stopped.
The following commands will create the netfs
script:
cat > /etc/rc.d/init.d/netfs << "EOF"
#!/bin/sh
# Begin $rc_base/init.d/netfs
# Based on sysklogd script from LFS-3.1 and earlier.
# Rewritten by Gerard Beekmans - gerard@linuxfromscratch.org
# netfs script written by Nathan Coulson - conathan@conet.dyndns.org
# and by DJ Lucas - dj@lucasit.com
. /etc/sysconfig/rc
. $rc_functions
case "$1" in
start)
# The following line mounts all entries in fstab that
# have the _netdev option. This is required for network
# filesystems to be mounted at boot time.
echo "Mounting network volumes..."
mount -a -O _netdev
evaluate_retval
;;
stop)
echo -n "Unmounting network volumes..."
# The following line obtains a list from the output of
# mount for all netfs types and anything that was
# mounted with the _netdev option.
NETMOUNTS=`mount | grep '_netdev\|smbfs\|ncpfs|\coda\|nfs' \
| cut -d " " -f 3 | sed 's/$/ /g'`
# Check to see if anything was listed from above
# (see if anything is actually needs to be unmounted)
if [ x"$NETMOUNTS" != x ]
then
# There is something mounted
# terminate the echo -n above
echo " "
# Try and stop processes the nice way
# (probably won't work in most cases)
fuser -m -SIGTERM $NETMOUNTS > /dev/null
# Check and see if it found anything. If it
# did, then give 3 seconds for things to exit
# the nice way before killing them off.
# This one will work all of the time!
if [ $? == 0 ]
then
sleep 3
fuser -km $NETMOUNTS > /dev/null
fi
# We now need to unmount all network filesystems.
# We will do this with two umount commands to allow
# for broken behavior of smbmount, and also to make
# certain that netmounts without the _netdev option
# will still get unmounted.
umount -a -O _netdev
# save the retval
if [ $? != 0 ]
then
NERRVAL=1
fi
# Now catch the rest of the network filesystems
# by fstype. This list can be extended later as
# more network filesystems are supported by mount.
umount -a -t coda,ncpfs,nfs,smbfs
if [ $? == 0]
then
[ -z $NERRVAL ]
evaluate_retval
else
# make certain that we return an error
/bin/false
evaluate_retval
fi
else
# There is nothing mounted
echo "No network volumes mounted!"
# print a nice '[ OK ]' message
evaluate_retval
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
# End $rc_base/init.d/netfs
EOF
chmod 0755 /etc/rc.d/init.d/netfs
While the excessive comments in the script might make people cringe, the
important part to note is that network filesystems that should be mounted at
boot time, must have the _netdev
option passed to them in /etc/fstab.
Now put the necessary symlinks in place.
ln -sf ../init.d/netfs /etc/rc.d/rc0.d/K47netfs &&
ln -sf ../init.d/netfs /etc/rc.d/rc1.d/K47netfs &&
ln -sf ../init.d/netfs /etc/rc.d/rc2.d/K47netfs &&
ln -sf ../init.d/netfs /etc/rc.d/rc3.d/S28netfs &&
ln -sf ../init.d/netfs /etc/rc.d/rc4.d/S28netfs &&
ln -sf ../init.d/netfs /etc/rc.d/rc5.d/S28netfs &&
ln -sf ../init.d/netfs /etc/rc.d/rc6.d/K47netfs