Re: [PATCH] Console: fall back to /dev/null when no console is availlable

Denis Vlasenko
2004-10-05T21:59:14Z

> More computing sins are committed in the name of efficiency (without
> necessarily achieving it) than for any other single reason - including
> blind stupidity.
> -- W. A. Wulf
>
> Some userspace applications rely on the assumption that fd's 0, 1 and
> 2 are always open and function as raw stdin, stdout and stderr,
> respectively.
>
> With no console registered, init get's called without those fd's
> already open. Arguably, init should know better, handle that case and
> fix things before forking other processed. But what about
> init=/bin/bash? Ok, bash could be fixed as well, as could...
>
> Instead, this patch opens /dev/null when /dev/console doesn't work.
> It swallows all output and doesn't give much input, but programs can
> handle that just fine.
>
> Signed-off-by: Jцrn Engel <joern@wohnheim.fh-wedel.de>
> ---
>
> main.c | 5 ++++-
> 1 files changed, 4 insertions(+), 1 deletion(-)
>
> --- linux-2.6.8cow/init/main.c~console 2004-10-05 20:46:40.000000000 +0200
> +++ linux-2.6.8cow/init/main.c 2004-10-05 20:46:08.000000000 +0200
> @@ -695,8 +695,11 @@
> system_state = SYSTEM_RUNNING;
> numa_default_policy();
>
> - if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0)
> + if (sys_open((const char __user *) "/dev/console", O_RDWR, 0) < 0) {
> printk("Warning: unable to open an initial console.\n");
> + if (open("/dev/null", O_RDWR, 0) == 0)
> + printk(" Falling back to /dev/null.\n");
> + }

What will happen if /dev is totally empty?
--
vda