Keywords: sag

Next: Logging In And Out Up: init Previous: Special configuration in /etc/inittab

# Booting in single user mode

An important run level is single user mode (run level 1), in which only the system administrator is using the machine and as few system services--including logins--as possible are running. Single user mode is necessary for a few administrative tasks, such as running `fsck` on a `/usr` partition--this requires that the partition be unmounted, and that can't happen, unless just about all system services are killed.

A running system can be taken to single user mode by using `telinit` to request run level 1. At bootup, it can be entered by giving the word `single` or `emergency` on the kernel command line: the kernel gives the command line to `init` as well, and `init` understands from that word that it shouldn't use the default run level. (The kernel command line is entered in a way that depends on how you boot the system.)

Booting into single user mode is sometimes necessary so that one can run `fsck` by hand, before anything mounts or otherwise touches a broken `/usr` partition (any activity on a broken filesystem is likely to break it more, so `fsck` should be run as soon as possible).

The bootup scripts `init` runs will automatically enter single user mode, if the automatic `fsck` at bootup fails. This is an attempt to prevent the system from using a filesystem that is so broken that `fsck` can't fix it automatically. Such breakage is relatively rare, and usually involves a broken hard disk or an experimental kernel release, but it's good to be prepared.

As a security measure, a properly configured system will ask for the `root` password before starting the shell in single user mode. Otherwise, it would be simple to just enter a suitable line to LILO to get in as `root`. (This will break if `/etc/passwd` has been broken by filesystem problems, of course, and in that case you'd better have a boot floppy handy.)

Next: Logging In And Out Up: init Previous: Special configuration in /etc/inittab