Re: waiting 10s before mounting root filesystem?

From: William Park
Date: Tue Dec 28 2004 - 20:00:29 EST


On Mon, Dec 27, 2004 at 10:23:34PM +0100, Andreas Unterkircher wrote:
> >>How do I make the kernel to wait about 10s before attempting to
> >>mount root filesystem? Is there obscure kernel parameter?
> >>
> >>I can load the kernel from /dev/fd0, then mount /dev/hda2 as root
> >>filesystem. But, I can't seem to mount /dev/sda1 (USB key drive) as
> >>root filesystem. All relevant USB and SCSI modules are compiled
> >>into the kernel. I think kernel is too fast in panicking. I would
> >>like the kernel to wait about 10s until 'usb-storage' and 'sd_mod'
> >>work out all the details.
> >
> >This is really suited to the task of an initrd, then you can spin
> >until the usb storage device comes up in a bash script or something
> >similar.
>
> Or you could try a patch from Randy Dunlap & Eric Lammerts [1] which
> loops around in do_mounts.c
> until the root filesystem can be mounted.... not that beautiful - but it
> works :)
>
> [1] http://www.xenotime.net/linux/usb/usbboot-2422.patch
>
> Cheers,
> Andreas
>
> PS: In the same manner you can do it with 2.6

Thanks Andreas. I can now boot from my el-cheapo USB key drive (256MB
SanDisk Cruzer Mini). Since mine takes about 5sec to show up, I decided
to wait 5sec instead of 1sec. Here is diff for 2.6.10:

--- ./init/do_mounts.c--orig 2004-12-27 17:36:35.000000000 -0500
+++ ./init/do_mounts.c 2004-12-28 17:27:26.000000000 -0500
@@ -301,7 +301,14 @@ retry:
root_device_name, b);
printk("Please append a correct \"root=\" boot option\n");

+#if 0 /* original code */
panic("VFS: Unable to mount root fs on %s", b);
+#else
+ printk ("Waiting 5 seconds to try again...\n");
+ set_current_state(TASK_INTERRUPTIBLE);
+ schedule_timeout(5 * HZ);
+ goto retry;
+#endif
}
panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));
out:

--
William Park <opengeometry@xxxxxxxx>
Open Geometry Consulting, Toronto, Canada
Linux solution for data processing.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/