Re: [PATCH] Please get this committed, _NOW_ (preferrably 5 years ago), thanks.

Andi Kleen
2009-11-08T19:49:36Z

Andreas Mohr <andi@lisas.de> writes:

> boy am I angry about this...

Angry about yourself?

> --- linux-2.6.32-rc6/init/main.c.orig 2009-11-08 11:09:51.000000000 +0100
> +++ linux-2.6.32-rc6/init/main.c 2009-11-08 12:40:11.000000000 +0100
> @@ -846,7 +846,47 @@ static noinline int init_post(void)
> run_init_process("/bin/init");
> run_init_process("/bin/sh");
>
> - panic("No init found. Try passing init= option to kernel.");
> + panic("No init found. Try passing init= option to kernel. "
> + "See Linux " __FILE__ " for guidance.");

That seems like the wrong approach. The kernel can actually distingush
many of these cases, so it could just tell the user about them directly.

> +/* ok, so you've got this pretty unintuitive message and are wondering
> + * what the H*** went wrong.
> + * Some high-level reasons for failure (listed roughly in order of execution)
> + * to load the init binary are:
> + * A) Unable to mount root FS

This the kernel knows so it could just say. In fact it's already
printed usually, but it could be printed again.

> + * B) init binary doesn't exist on rootfs

This is knows also.

> + * C) other requirements not met

No idea what that should be.

> + * D) binary exists but dependencies not available

I think you're refering to shared libraries here. This is actually not correct,
because if dynamic linking for init fails this will not result in this error message.

> + * E) binary cannot be loaded

This it also knows.

So please just fix the output.

-Andi