From 3939e96a8830755228bd2bbedb50db6808d36f80 Mon Sep 17 00:00:00 2001 From: rbalocca Date: Tue, 28 Oct 2008 14:49:35 -0700 Subject: initramfs-tools-0.92j from mirrrors.kernel.org --- scripts/nfs | 85 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 scripts/nfs (limited to 'scripts/nfs') diff --git a/scripts/nfs b/scripts/nfs new file mode 100644 index 0000000..435d2d0 --- /dev/null +++ b/scripts/nfs @@ -0,0 +1,85 @@ +# 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=[:][,] + 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 + # FIXME: add usplash_write info + if [ -z "${ROOTDELAY}" ]; then + delay=180 + else + delay=${ROOTDELAY} + fi + + # loop until nfsmount succeds + while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do + [ ${retry_nr} -gt 0 ] && \ + [ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount" + do_nfsmount + retry_nr=$(( ${retry_nr} + 1 )) + [ ! -e ${rootmnt}${init} ] && /bin/sleep 1 + [ ${retry_nr} -gt 0 ] && [ "$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 +} -- cgit v1.2.3