diff -Naur initramfs-tools/scripts/nfs initramfs-tools-modified/scripts/nfs
--- initramfs-tools/scripts/nfs	2010-06-18 09:50:38.000000000 +0000
+++ initramfs-tools-modified/scripts/nfs	2010-07-31 04:39:28.000000000 +0000
@@ -2,14 +2,10 @@
 
 # FIXME This needs error checking
 
-retry_nr=0
 
 # parse nfs bootargs and mount nfs
-do_nfsmount()
+parse_nfs_opt()
 {
-
-	configure_networking
-
 	# get nfs root from dhcp
 	if [ "x${NFSROOT}" = "xauto" ]; then
 		# check if server ip is part of dhcp root-path
@@ -35,16 +31,14 @@
 		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
 
+do_nfsmount()
+{
 	nfsmount -o nolock ${roflag} ${NFSOPTS} ${NFSROOT} ${rootmnt}
 }
 
@@ -55,16 +49,27 @@
 	run_scripts /scripts/nfs-top
 	[ "$quiet" != "y" ] && log_end_msg
 
+	configure_networking
+
+	wait_for_udev 10
+
 	modprobe nfs
 	# For DHCP
 	modprobe af_packet
 
 	wait_for_udev 10
 
+	[ "$quiet" != "y" ] && log_begin_msg "Running /scripts/nfs-premount"
+	run_scripts /scripts/nfs-premount
+	[ "$quiet" != "y" ] && log_end_msg
+
+	parse_nfs_opt
+	
 	# Default delay is around 180s
 	delay=${ROOTDELAY:-180}
 
 	# loop until nfsmount succeeds
+	retry_nr=0
 	do_nfsmount
 	while [ ${retry_nr} -lt ${delay} ] && [ ! -e ${rootmnt}${init} ]; do
 		[ "$quiet" != "y" ] && log_begin_msg "Retrying nfs mount"
