--- do_mounts.c	2003-09-03 20:27:20.000000000 +1000
+++ ../../../kernel-source-2.4.22/init/do_mounts.c	2003-12-15 08:58:40.000000000 +1100
@@ -348,6 +348,7 @@ static void __init mount_block_root(char
 {
 	char *fs_names = __getname();
 	char *p;
+	int retries = 0;
 
 	get_fs_names(fs_names);
 retry:
@@ -369,8 +370,16 @@ retry:
 		printk ("VFS: Cannot open root device \"%s\" or %s\n",
 			root_device_name, kdevname (ROOT_DEV));
 		printk ("Please append a correct \"root=\" boot option\n");
-		panic("VFS: Unable to mount root fs on %s",
-			kdevname(ROOT_DEV));
+		if (++retries > 5)
+			panic("VFS: Unable to mount root fs on %s",
+				kdevname(ROOT_DEV));
+		else {
+			/* wait 1 second and try again */
+			printk ("Retrying in 1 second, try #%d\n", retries);
+			current->state = TASK_INTERRUPTIBLE;
+			schedule_timeout(HZ);
+			goto retry;
+		}
 	}
 	panic("VFS: Unable to mount root fs on %s", kdevname(ROOT_DEV));
 out:
