81 lines
1.7 KiB
Bash
81 lines
1.7 KiB
Bash
# NFS filesystem mounting -*- shell-script -*-
|
|
|
|
# FIXME This needs error checking
|
|
|
|
retry_nr=0
|
|
|
|
# parse nfs bootargs and mount nfs
|
|
do_nfsmount()
|
|
{
|
|
|
|
configure_networking
|
|
|
|
# get nfs root from dhcp
|
|
if [ "x${NFSROOT}" = "xauto" ]; then
|
|
# check if server ip is part of dhcp root-path
|
|
if [ "${ROOTPATH#*:}" = "${ROOTPATH}" ]; then
|
|
NFSROOT=${ROOTSERVER}:${ROOTPATH}
|
|
else
|
|
NFSROOT=${ROOTPATH}
|
|
fi
|
|
|
|
# nfsroot=[<server-ip>:]<root-dir>[,<nfs-options>]
|
|
elif [ -n "${NFSROOT}" ]; then
|
|
# nfs options are an optional arg
|
|
if [ "${NFSROOT#*,}" != "${NFSROOT}" ]; then
|
|
NFSOPTS="-o ${NFSROOT#*,}"
|
|
fi
|
|
NFSROOT=${NFSROOT%%,*}
|
|
if [ "${NFSROOT#*:}" = "$NFSROOT" ]; then
|
|
NFSROOT=${ROOTSERVER}:${NFSROOT}
|
|
fi
|
|
fi
|
|
|
|
if [ -z "${NFSOPTS}" ]; then
|
|
NFSOPTS="-o retrans=10"
|
|
fi
|
|
|
|
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-premount"
|
|
run_scripts /scripts/nfs-premount
|
|
[ "$quiet" != "y" ] && log_end_msg
|
|
|
|
if [ ${readonly} = y ]; then
|
|
roflag="-o ro"
|
|
else
|
|
roflag="-o rw"
|
|
fi
|
|
|
|
nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
|
|
}
|
|
|
|
# NFS root mounting
|
|
mountroot()
|
|
{
|
|
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-top"
|
|
run_scripts /scripts/nfs-top
|
|
[ "$quiet" != "y" ] && log_end_msg
|
|
|
|
modprobe nfs
|
|
# For DHCP
|
|
modprobe af_packet
|
|
|
|
wait_for_udev 10
|
|
|
|
# Default delay is around 180s
|
|
delay=${ROOTDELAY:-180}
|
|
|
|
# loop until nfsmount succeeds
|
|
do_nfsmount
|
|
while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do
|
|
[ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount"
|
|
/bin/sleep 1
|
|
do_nfsmount
|
|
retry_nr=$(( ${retry_nr} + 1 ))
|
|
[ "$quiet" != "y" ] && log_end_msg
|
|
done
|
|
|
|
[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-bottom"
|
|
run_scripts /scripts/nfs-bottom
|
|
[ "$quiet" != "y" ] && log_end_msg
|
|
}
|