Ubuntu – What does init on Ubuntu do


I already know that init is the magical program that is needed for booting your computer and managing runlevels, but what is it's real purpose?

Why do we even need init in the first place? Why can't the bootloader tell Upstart what programs to run and not run?

This question in (late) response to my What would happen if init was deleted? question.

Best Answer

See the manual for init on Unix systems.

This is a post from the Wikipedia entry on init:

In Unix-based computer operating systems, init (short for initialization) is the first process started during booting of the computer system. Init is a daemon process that continues running until the system is shut down. It is the direct or indirect ancestor of all other processes and automatically adopts all orphaned processes. Init is started by the kernel using a hard-coded filename, and if the kernel is unable to start it, a kernel panic will result. Init is typically assigned process identifier 1.

The design of init has diverged in Unix systems such as System III and System V, from the functionality provided by the init in Research Unix and its BSD derivatives. The usage on most Linux distributions is somewhat compatible with System V, but some distributions, such as Slackware, use a BSD-style and others, such as Gentoo, have their own customized version.

Several replacement init implementations have been written with attempt to address design limitations in the standard versions. These include launchd, the Service Management Facility, systemd and Upstart, the latter being used by Ubuntu and some other Linux distributions.

Hope this helps to explain it to you; it’s a lot of reading.