That won't do. I am using a 4.1 RedHat baseline, and the problem is
not with Kxx and Sxx scripts -- they're OK. The problem is that
you are using init.d/nfs to shut down knfs stuff, and that would
miss a few things.
Since I am running both 2.0.xx and 2.1.xx I have now set up scripts
so that booting 2.1 I'll get knfsd & friends, while booting 2.0
I'll get rpc.nfsd & friends. Here's my /etc/rc.d/init.d/knfs:
=======================================================================
#!/bin/sh
#
# knfs This shell script takes care of starting and stopping
# the *kernel* NFS services. Later we might add NIS too.
#
# Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Damien Neil
# Modified for kernel NFS by AS
#
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
if [ ! -f /etc/sysconfig/network ]; then
exit 0
fi
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -f /usr/sbin/knfsd ] || exit 0
[ -f /usr/sbin/kmountd ] || exit 0
[ -f /etc/exports ] || exit 0
# See how we were called.
case "$1" in
start)
# Start daemons.
echo -n "Starting kNFS services: "
kstatd &
kmountd &
knfsd 2 &
echo
touch /var/lock/subsys/nfs
;;
stop)
# Stop daemons.
echo -n "Shutting down kNFS services: "
killproc kmountd
killproc nfsd
killproc kstatd
killproc rpciod
echo
rm -f /var/lock/subsys/nfs
;;
*)
echo "Usage: knfs {start|stop}"
exit 1
esac
exit 0
==============================================================
Of course I added a few lines in my /etc/rc.d/rc.sysinit:
-------------------- excerpt from rc.sysinit --------------------
# Enter root into mtab.
mount -f /
# Set links in /boot to reflect current version
CURR_KERNEL=`uname -r`
echo "Setting links in /boot and /usr/src to rel. $CURR_KERNEL"
ln -snf /boot/vmlinuz-$CURR_KERNEL /boot/vmlinuz
ln -snf /boot/System.map-$CURR_KERNEL /boot/System.map
ln -snf /usr/src/linux-$CURR_KERNEL /usr/src/linux
# Fix nfsd type: kernel or user nfsd ? 2.0.xx will have only the
# 2nd choice, when we can let's run knfsd. Thanks Olaf :)
KERNEL_MINOR=`echo $CURR_KERNEL | cut -d. -f2`
if [ $KERNEL_MINOR -lt 1 ]; then
ln -snf /etc/rc.d/init.d/nfs /etc/rc.d/rc0.d/K20nfs
ln -snf /etc/rc.d/init.d/nfs /etc/rc.d/rc1.d/K20nfs
ln -snf /etc/rc.d/init.d/nfs /etc/rc.d/rc2.d/K20nfs
ln -snf /etc/rc.d/init.d/nfs /etc/rc.d/rc3.d/S60nfs
ln -snf /etc/rc.d/init.d/nfs /etc/rc.d/rc5.d/S60nfs
ln -snf /etc/rc.d/init.d/nfs /etc/rc.d/rc6.d/K20nfs
else
ln -snf /etc/rc.d/init.d/knfs /etc/rc.d/rc0.d/K20nfs
ln -snf /etc/rc.d/init.d/knfs /etc/rc.d/rc1.d/K20nfs
ln -snf /etc/rc.d/init.d/knfs /etc/rc.d/rc2.d/K20nfs
ln -snf /etc/rc.d/init.d/knfs /etc/rc.d/rc3.d/S60nfs
ln -snf /etc/rc.d/init.d/knfs /etc/rc.d/rc5.d/S60nfs
ln -snf /etc/rc.d/init.d/knfs /etc/rc.d/rc6.d/K20nfs
fi
if [ -x /sbin/depmod ]; then
# Get ready for kerneld
echo -n "Finding module dependencies"
-------------------------- end excerpt ---------------------------
--alessandro <asuardi@uninetcom.it> <asuardi@it.oracle.com>
Linux 2.0.33/2.1.78 libc-5.4.38 gcc-2.7.2.3 binutils-2.8.1.0.15
"There's a bit of magic in everything
and then some loss to even things out" -- Lou Reed