Subject: Re: PR 7170 -- init and /dev/console
To: NetBSD Kernel Technical Discussion List <tech-kern@NetBSD.ORG>
From: Charles M. Hannum <abuse@spamalicious.com>
List: tech-kern
Date: 04/29/2001 20:52:54
On Sun, Apr 29, 2001 at 06:53:53PM -0400, Greg A. Woods wrote:
>
> Why? Only transitions from multiuser mode to single-user mode should
> require `init' to do anything at all to /dev/console. From single-user
> mode to multiuser there can be nothing to revoke unless the operator
> starts something purposefully, but even then....
I'm just going to let you ponder that. But I will state flat out that
you've missed something of critical importance.
> Actually why does
> `init' even need /dev/console during multiuser mode? It should only
> syslog any /etc/ttys-related errors (and *not* to /dev/console!).
It doesn't. And in fact you'll notice that AFTER /etc/rc runs, it even
closes /dev/console and only opens it again if it's listed in /etc/ttys
and enabled. However, /etc/rc NEEDS to have /dev/console open -- and
properly revoke(2)ed -- or you can't ^C hung processes during startup.
This is one of the things that always pisses me off about Linux.
> It
> only needs to open /dev/console when it receives a SIGTERM and enters
> state '7'.
You must be living in a fantasy world, since "state '7'" doesn't exist
in this one.
> > Plus, in anything other than a diskless environment, if your /dev is
> > toast you can't upgrade / to r/w to fix it.
>
> Huh? That's only true if *all* of your /dev is toast.
Have you EVER seen a case where /dev/console was missing but disk
devices were present? I have no doubt that you'll say `yes', but *I*
haven't, ever, under any circumstance. The only case in which it's
even really plausible is file system corruption.
> However if MAKEDEV were in /sbin, and if you have some way to mount some
> other writable filesystem over /dev and thus create a working /dev (at
> least for the root device), AND if one were permitted to make a second
> mount of a partition that's currently only mounted read-only(*), then
> you could mount the root filesystem (on which the toasted /dev lives) as
> read-write on /mnt and fix it that way. You can then simply unmount the
> root FS from /mnt and then upgrade it to multi-user mode.
In other words, if we did a bunch of half-assed hacks to deal with a
case that never happens in practice. No thanks.
If we want to solve the `/dev problem' for good, then we need a devfs.
Doing a bunch of little hacks that give you a totally obscure recovery
path is a suboptimal non-solution.
> (*) I don't see any reason to prevent a read/write mount of any
> read-only mounted filesystem as is the case today, particularly not in
> single-user mode. The buffer cache should keep the two views of the FS
> in sync.
Bzzzt. You forget the inode cache and the name cache.