Messages in this thread Patch in this message | | | From | "Bill Catlan" <> | Subject | Re: Possible to delay boot process to boot from USB subsystem? | Date | Mon, 3 May 2004 16:44:30 -0400 |
| |
Thanks Willy. I like to automatic looping of Randy's patch (I had it working nicely on a 2.4.18 kernel) because I don't have to set a time in case one machine takes longer than another.
So far, however, I haven't got Randy's patch working for a newer kernel, so I may try yours.
Would I only have to run make in the directory where I'm patching the file, then make bzImage, make modules_install, and make install from the top level to apply your patch? Compiling all of my modules takes a long time, with random lock-ups during compile gumming up the works as well. :-/ Any tips appreciated.
Thanks.
Bill
----- Original Message ----- From: "Willy Tarreau" <willy@w.ods.org> To: "Bill Catlan" <wcatlan@yahoo.com> Cc: <linux-kernel@vger.kernel.org> Sent: Monday, May 03, 2004 1:34 AM Subject: Re: Possible to delay boot process to boot from USB subsystem?
> Hi, > > I include the following patch in all my kernels. It adds a "setuptime" boot > option which allows one to specify how many milliseconds to wait before > mounting the root FS. I usually wait 2500 ms to boot on USB flash, but I > once saw a machine which required a bit more (4 sec). The advantage is that > if it isn't enough, just reboot and change the paramter. > > Regards, > Willy > > > diff -urN linux-2.4.23-rc3/init/main.c linux-2.4.23-rc3-setuptime/init/main.c > --- linux-2.4.23-rc3/init/main.c Fri Oct 10 08:47:16 2003 > +++ linux-2.4.23-rc3-setuptime/init/main.c Sun Nov 23 18:12:19 2003 > @@ -127,6 +127,7 @@ > > static char * argv_init[MAX_INIT_ARGS+2] = { "init", NULL, }; > char * envp_init[MAX_INIT_ENVS+2] = { "HOME=/", "TERM=linux", NULL, }; > +static int setuptime; /* time(ms) to let devices set up before root mount */ > > static int __init profile_setup(char *str) > { > @@ -137,6 +138,15 @@ > > __setup("profile=", profile_setup); > > +static int __init setuptime_setup(char *str) > +{ > + int par; > + if (get_option(&str,&par)) setuptime = par; > + return 1; > +} > + > +__setup("setuptime=", setuptime_setup); > + > static int __init checksetup(char *line) > { > struct kernel_param *p; > @@ -553,12 +563,26 @@ > > extern void prepare_namespace(void); > > +static int finish_setup() > +{ > + int tleft; > + if (setuptime) { > + printk("Waiting %d ms for devices to set up.\n", setuptime); > + tleft = setuptime * HZ / 1000; > + while (tleft) { > + set_current_state(TASK_INTERRUPTIBLE); > + tleft = schedule_timeout(tleft); > + } > + } > +} > + > static int init(void * unused) > { > struct files_struct *files; > lock_kernel(); > do_basic_setup(); > > + finish_setup(); > prepare_namespace(); > > /* >
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |