From: Noel Chiappa
For some reason, the code for /etc/init .. bashes the
command line so
it just has '-' in it, so it looks just like a shell.
BTW, that may be accidental, not a deliberate choice - e.g. someone copied
another line of code which exec'd a shell, and didn't change the second arg.
I fixed my copy so it says "/etc/init", or
something like that. ... I
can upload the 'fixed' code tomorrow.
The change is pretty minor: in this piece of code:
execl(init, minus, 0);
just change the execl() line to say:
execl(init, init, 0);
> I'm not sure if unix of the v6 or v5 era was
designed to go from multi
> user to single user mode and then back again.
I seem to recall there's some issue, something
like in some cases
there's an extra shell left running attached to the console
So the bug is that in going from single-user to multi-user, by using "kill -1
1" in single-user with the switch register set for multi-user, it doesn't
kill the running single-user shell on the console. The workaround to that bug
which I use is to set the CSWR and then ^D the running shell.
In general, the code in init.c isn't quite as clean/clear as would be optimal
(which is part of why I haven't tried to fix the above bug), but _in general_
it does support going back and forth.
From: Ronald Natalie
our init checked the switch register to determine
whether to bring up
single or multiuser
I think that's standard from Bell, actually.
I believe our system shutdown if you kill -1-1 (HUP to
The 'stock' behaviour is that when that happens, it checks the switch
register, and there are three options (the code is a little hard to follow,
but I'm pretty sure this is right):
- if it's set for single-user, it shuts down all the other children, and
brings up a console shell; when done, it does the next
- if it's set for 'reboot', it just shuts down all children, and restarts
the init process (presumably so one can switch to a new version of the init
without restarting the whole machine);
- if it's not set for either, it re-reads /etc/ttys, and for any lines which
have switched state in that file, it starts/kills the process listening to
that line (this allows one to add/drop lines dynamically).
From: Clem Cole
it's probably worth digging up the v6 version of
That's on that MIT V6 tape, too. Speaking of which, time to write the code to
grok the tape...