mirror of
https://github.com/Zeckmathederg/glfs.git
synced 2025-02-06 00:48:19 +08:00
f6d89c646a
git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@1731 af4574ff-66df-0310-9fd7-8a98e5e911e0
128 lines
5.6 KiB
XML
128 lines
5.6 KiB
XML
<sect1 id="postlfs-config-netfs" xreflabel="netfs">
|
|
<?dbhtml filename="netfs.html" dir="postlfs"?>
|
|
<title>Configuring for Network Filesystems</title>
|
|
|
|
<para>While <acronym>LFS</acronym> 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
|
|
<filename>netfs</filename> script below will prepare your LFS for mounting
|
|
network filesystems at boot time, and unmounting them when the network
|
|
is stopped.</para>
|
|
|
|
<para> The following commands will create the <filename>netfs</filename>
|
|
script:</para>
|
|
|
|
<screen><command>cat > /etc/rc.d/init.d/netfs << "EOF"</command>
|
|
#!/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
|
|
<command>chmod 0755 /etc/rc.d/init.d/netfs</command></screen>
|
|
|
|
<para>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 <emphasis role="strong">_netdev</emphasis>
|
|
option passed to them in <filename>/etc/fstab</filename>.</para>
|
|
|
|
<para>Now put the necessary symlinks in place.</para>
|
|
|
|
<screen><command>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</command></screen>
|
|
|
|
</sect1>
|