summaryrefslogtreecommitdiff
path: root/scripts/nfs
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/nfs')
-rw-r--r--scripts/nfs85
1 files changed, 85 insertions, 0 deletions
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=[<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
+ # 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
+}