glfs/postlfs/config/netfs.xml
Igor Živković f6d89c646a applied DJ's netfs patch
git-svn-id: svn://svn.linuxfromscratch.org/BLFS/trunk/BOOK@1731 af4574ff-66df-0310-9fd7-8a98e5e911e0
2004-01-26 22:40:37 +00:00

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 &gt; /etc/rc.d/init.d/netfs &lt;&lt; "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 &gt; /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 &gt; /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 &amp;&amp;
ln -sf ../init.d/netfs /etc/rc.d/rc1.d/K47netfs &amp;&amp;
ln -sf ../init.d/netfs /etc/rc.d/rc2.d/K47netfs &amp;&amp;
ln -sf ../init.d/netfs /etc/rc.d/rc3.d/S28netfs &amp;&amp;
ln -sf ../init.d/netfs /etc/rc.d/rc4.d/S28netfs &amp;&amp;
ln -sf ../init.d/netfs /etc/rc.d/rc5.d/S28netfs &amp;&amp;
ln -sf ../init.d/netfs /etc/rc.d/rc6.d/K47netfs</command></screen>
</sect1>