4

Practically if not actually every single UNIX-like operating system today makes the distinction between multi-user and single-user modes. Single user mode is generally intended for low-level system maintenance which cannot be performed while the system is up and running normally, even with a reduced set of services (often file system maintenance that generally needs to be done offline).

However, someone obviously had to write the first code to actually distinguish single-user mode from multi-user mode.

I suspect that multi-user mode came after single-user mode, simply because multi-user mode does more things and it makes sense to start the system initially in single-user mode and only later transition to multi-user mode (and that is how at least Linux does it; the kernel works in "single user" mode as evidenced if you pass e.g. init=/bin/bash to it, and then effectively init switches into multi-user mode), but my question is: when, and which variant/version, was the distinction between the two first made?

  • Once kernel is booted it already capable to be multiuser. It's up to userspace is what to do. Even Linux with init=/bin/bash can build kernel under different user after opening another terminal with openvt, or even can have ssh logins. – user140866 May 19 '16 at 9:54
  • 2
    I don't know the answer, but V4's init(7) already mentions single-user mode, so it already existed in V4 in 1973. – Stephen Kitt May 19 '16 at 9:57
  • @siblynx Hence quotes and "effectively". – a CVn May 19 '16 at 9:58
  • That maybe a pure term play, because I still see the border too vague. – user140866 May 19 '16 at 11:33
  • 1
    Thanks for mentioning this... +1 – Fabby Apr 30 at 21:57
12

Unix was making that distinction since the very beginning, i.e. since version 1 was released in 1971.

The system was booting to multi-user mode (i.e. users connected to the available serial interfaces, tty0 to tty5 but provision was made to add four more ttys).

Unix v1 manual states for the section 4, tty page:

By appropriate console switch settings, it is possible to
cause UNIX to come up as a single—user system with I/O on
this device.

Note that with this first Unix release, spawning the login processes to each serial line was hardcoded and done by the init process itself. Selecting which mode to use was done before booting and switching to multi-user mode was done by modifying the switch settings and exiting the single user mode shell.

Later, with Unix Version 7 (1979), instead of hardware switches, the system was booting first in single user mode and when the single user shell exited, it switched to multi-user mode.

Even later, System III (1981) introduced the inittab file. With it, it was possible to better define and configure multiple run levels and select the one to use. Run level 1 was single-user and run level 2 multi-user. If the inittab file was missing, the system booted in single-user mode.

-1

Originally, init would bring up a shell on the console in single-user mode, and when that shell exited, it would bring up the login (actually getty) program on the serial ports, along with mounting the rest of the file systems and starting whatever daemons were configured to run then.

This was all controlled by the entries in /etc/inittab.

This was all present on the PDP-11 versions of Unix in the early 1970s, and I believe before that.

There are, of course, endless details, but that's the gist.

  • 1
    /etc/inittab was introduced around 1982. This is 13 years after UNIX started. – schily May 19 '16 at 11:03
  • Do you have a source for that date? Which UNIX variant? I was running several Unix systems well before 1982, including editing /etc/inittab to bring up services when we wanted them. This was when Bell Labs folks were mailing us magtapes, before UNIX because the favorite vivisection target of UCB undergrads. – stolenmoment May 19 '16 at 12:54
  • I don't know about /etc/inittab per se, but I also remember that this is how the PDP 11/70 at my school would boot, back in the early '80s. (Actually I'd bet it's not controlled by inittab; the minimal boot sequence would be to simply load the kernel, mount the root partition, and start /bin/sh.) – alexis May 20 '16 at 10:58
-1

The most probable reason for using the terms single user vs. multi user is that directly after the boot, UNIX did only have a read-only mounted root filesystem.

The next thing that was done was to check the root filesystem (aprox. 1MB) and re-mount it read/write.

Then the /usr filesystem was checked and mounted.

Since users can login only after /usr/ was mounted, this is the point when UNIX has become able to support a multi-user environment.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.