I have tried the latest GRUB CVS with the linux kernel command
line parser work-around and verified that I can boot into a shell
(/bin/sh -> really it is ash.static) prompt.
Thanks OKUJI!
On Tue, 12 Sep 2000, OKUJI Yoshinori wrote:
> I found a bug in the command-line parser, parse_options in
> init/main.c. I examined only 2.2.16 and 2.2.17, but there might remain
> the same problem in 2.4.0-test?.
>
> The phenomenon is that argv_init becomes {"init", "", NULL}, when
> one inputs a command-line like:
>
> root=/dev/ram ro
> ^^
> two spaces
>
> This is harmful for some shell programs. You might think he just
> need to be careful enough not to insert multiple spaces between two
> options, but things are not so trivial. On i386 (I haven't tested any
> other architecture), "mem=XXX" is handled in arch/i386/kernel/setup.c
> but the function setup_arch doesn't remove any space after the option
> correctly, so if the user enters "mem=128M root=/dev/hda", the string
> command_line returned by the function setup_arch will be
> " root=/dev/hda" instead of "root=/dev/hda", and then argv_init will
> be {"init", "", NULL}, even though the user doesn't input multiple
> spaces.
>
> It is possible to avoid this problem in boot loaders (yes, in fact,
> I did in GRUB), but I think it would be better to fix the bug itself
> in Linux. Thus, I propose this simple patch:
>
> *** linux-2.2.17.orig/init/main.c Tue Sep 5 02:39:28 2000
> --- linux-2.2.17/init/main.c Tue Sep 12 06:02:34 2000
> ***************
> *** 1254,1259 ****
> --- 1254,1262 ----
> }
> if (next != NULL)
> *next++ = 0;
> + if (!*line)
> + continue;
> +
> /*
> * check for kernel options first..
> */
>
>
> Thanks,
> Okuji
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to [EMAIL PROTECTED]
> Please read the FAQ at http://www.tux.org/lkml/
>
--
Chan Shih-Ping (Richard) <[EMAIL PROTECTED]>
DSO National Laboratories
20 Science Park Drive
Singapore 118230