Re: waiting 10s before mounting root filesystem?

From: Jesper Juhl
Date: Tue Dec 28 2004 - 20:28:32 EST


On Tue, 28 Dec 2004, William Park wrote:

> 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");
>
How about adding a loglevel to this printk() while you are at it? like
this for instance:
printk(KERN_ERR "Please append a correct \"root=\" boot option\n");

or maybe that should be KERN_CRIT ...


> +#if 0 /* original code */
> panic("VFS: Unable to mount root fs on %s", b);
> +#else
> + printk ("Waiting 5 seconds to try again...\n");

^^^ And here I think a loglevel of KERN_INFO would be resonable :
printk (KERN_INFO "Waiting 5 seconds to try mounting root fs again...\n");


> + set_current_state(TASK_INTERRUPTIBLE);
> + schedule_timeout(5 * HZ);

I could be mistaken, but I would have said that msleep would have been
better here.???


> + goto retry;
> +#endif
> }
> panic("VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));

^^^ and this one :
panic(KERN_CRIT "VFS: Unable to mount root fs on %s", __bdevname(ROOT_DEV, b));


--
Jesper Juhl

-
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/