
In
Unix
Unix (; trademarked as UNIX) is a family of multitasking, multiuser computer operating systems that derive from the original AT&T Unix, whose development started in 1969 at the Bell Labs research center by Ken Thompson, Dennis Ritchie, a ...
-based computer
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
s, init (short for ''initialization'') is the first
process started during
booting
In computing, booting is the process of starting a computer as initiated via Computer hardware, hardware such as a button or by a software command. After it is switched on, a computer's central processing unit (CPU) has no software in its ma ...
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
Kernel may refer to:
Computing
* Kernel (operating system), the central component of most operating systems
* Kernel (image processing), a matrix used for image convolution
* Compute kernel, in GPGPU programming
* Kernel method, in machine lea ...
during the
booting
In computing, booting is the process of starting a computer as initiated via Computer hardware, hardware such as a button or by a software command. After it is switched on, a computer's central processing unit (CPU) has no software in its ma ...
process; a
kernel panic
A kernel panic (sometimes abbreviated as KP) is a safety measure taken by an operating system's kernel upon detecting an internal fatal error in which either it is unable to safely recover or continuing to run the system would have a highe ...
will occur if the kernel is unable to start it. Init is typically assigned
process identifier 1.
In Unix systems such as
System III and
System V, the design of init has diverged from the functionality provided by the init in
Research Unix and its
BSD derivatives. Up until recently, most
Linux distributions employed a traditional init that was somewhat compatible with System V, while some distributions such as
Slackware use BSD-style startup scripts, and others such as
Gentoo have their own customized versions.
Since then, several additional init implementations have been created, attempting to address design limitations in the traditional versions. These include
launchd, the
Service Management Facility,
systemd,
Runit and
OpenRC.
Research Unix-style/BSD-style
Research Unix init runs the initialization
shell script located at
/etc/rc
, then launches
getty on terminals under the control of
/etc/ttys
. There are no runlevels; the
/etc/rc
file determines what programs are run by init. The advantage of this system is that it is simple and easy to edit manually. However, new software added to the system may require changes to existing files that risk producing an unbootable system.
BSD init was, prior to 4.3BSD, the same as Research UNIX's init; in
4.3BSD The History of the Berkeley Software Distribution begins in the 1970s.
1BSD (PDP-11)
The earliest distributions of Unix from Bell Labs in the 1970s included the source code to the operating system, allowing researchers at universities to modify an ...
, it added support for running a
windowing system such as
X on graphical terminals under the control of
/etc/ttys
. To remove the requirement to edit
/etc/rc
, BSD variants have long supported a site-specific
/etc/rc.local
file that is run in a sub-shell near the end of the boot sequence.
A fully modular system was introduced with
NetBSD
NetBSD is a free and open-source Unix operating system based on the Berkeley Software Distribution (BSD). It was the first open-source BSD descendant officially released after 386BSD was forked. It continues to be actively developed and is a ...
1.5 and ported to
FreeBSD 5.0 and successors. This system executes scripts in the
/etc/rc.d
directory. Unlike System V's script ordering, which is derived from the filename of each script, this system uses explicit dependency tags placed within each script. The order in which scripts are executed is determined by the ''rcorder'' utility based on the requirements stated in these tags.
SysV-style

When compared to its predecessors, AT&T's
UNIX System III introduced a new style of system startup configuration, which survived (with modifications) into
UNIX System V
Unix System V (pronounced: "System Five") is one of the first commercial versions of the Unix operating system. It was originally developed by AT&T and first released in 1983. Four major versions of System V were released, numbered 1, 2, 3, an ...
and is therefore called the "SysV-style init".
At any moment, a running System V is in one of the predetermined number of states, called ''
runlevels''. At least one runlevel is the normal operating state of the system; typically, other runlevels represent single-user mode (used for repairing a faulty system), system shutdown, and various other states. Switching from one runlevel to another causes a per-runlevel set of scripts to be run, which typically mount filesystems, start or stop
daemons, start or stop the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
, shutdown the machine, etc.
Runlevels
The
runlevels in System V describe certain states of a machine, characterized by the processes and daemons running in each of them. In general, there are seven runlevels, out of which three runlevels are considered "standard" as they are essential to the operation of a system:
: 0.
Turn off
: 1.
Single user mode (also known as ''S'' or ''s'')
: 6.
Reboot
In computing, rebooting is the process by which a running computer system is restarted, either intentionally or unintentionally. Reboots can be either a cold reboot (alternatively known as a hard reboot) in which the power to the system is phys ...
Aside from these standard ones, Unix and Unix-like systems treat runlevels somewhat differently. The common denominator, the
/etc/inittab
file, defines what each configured runlevel does in a given system.
Default runlevels
On Linux distributions defaulting to runlevel 5 in the table on the right, runlevel 5 invokes a multiuser graphical environment running the
X Window System
The X Window System (X11, or simply X) is a windowing system for bitmap displays, common on Unix-like operating systems.
X provides the basic framework for a GUI environment: drawing and moving windows on the display device and interacting ...
, usually with a
display manager like
GDM or
KDM. However, the
Solaris and
illumos operating systems typically reserve runlevel 5 to shut down and automatically power off the machine.
On most systems, all users can check the current runlevel with either the
runlevel
or
who -r
command. The
root
In vascular plants, the roots are the organs of a plant that are modified to provide anchorage for the plant and take in water and nutrients into the plant body, which allows plants to grow taller and faster. They are most often below the sur ...
user typically changes the current runlevel by running the
telinit
or
init
commands. The
/etc/inittab
file sets the default runlevel with the
:initdefault:
entry.
On Unix systems, changing the runlevel is achieved by starting only the missing services (as each level defines only those that are started / stopped). For example, changing a system from runlevel 3 to 4 might only start the local X server. Going back to runlevel 3, it would be stopped again.
Other implementations
Traditionally, one of the major drawbacks of init is that it starts tasks serially, waiting for each to finish loading before moving on to the next. When startup processes end up
Input/output
In computing, input/output (I/O, or informally io or IO) is the communication between an information processing system, such as a computer, and the outside world, possibly a human or another information processing system. Inputs are the signals ...
(I/O) blocked, this can result in long delays during boot. Speeding up I/O, e.g. by using SSDs, may shorten the delays but it does not address the root cause.
Various efforts have been made to replace the traditional init daemons to address this and other design problems, including:
*
BootScripts in
GoboLinux
GoboLinux is a Linux distribution whose most prominent feature is a reorganization of the traditional Linux file system. Rather than following the Filesystem Hierarchy Standard like most Unix-like systems, each program in a GoboLinux system has i ...
*
busybox-init, suited to
embedded operating systems, employed by
OpenWrt
OpenWrt (from ''open wireless router'') is an open-source project for embedded operating systems based on Linux, primarily used on embedded devices to route network traffic. The main components are Linux, util-linux, musl, and BusyBox. A ...
before it was replaced with
procd
* Dinit, a service manager and init system.
*
Epoch, a single-threaded Linux init system focused on simplicity and service management
*
Initng, a full replacement of init designed to start processes asynchronously
*
launchd, a replacement for init in
Darwin
Darwin may refer to:
Common meanings
* Charles Darwin (1809–1882), English naturalist and writer, best known as the originator of the theory of biological evolution by natural selection
* Darwin, Northern Territory, a territorial capital city i ...
/
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
/
iOS/
tvOS starting with
Mac OS X v10.4 (it launches SystemStarter to run old-style
'rc.local' and SystemStarter processes)
*
OpenRC, a process spawner that utilizes system-provided init, while providing process isolation, parallelized startup, and service dependency; used by
Alpine Linux,
Gentoo and its derivatives, and available as an option in
Devuan and
Artix Linux
*
runit, a cross-platform full replacement for init with parallel starting of services, used by default in
Void Linux
* Sun
Service Management Facility (SMF), a complete replacement/redesign of init from the ground up in
illumos/
Solaris starting with Solaris 10, but launched as the only service by the original System V-style init
*
Shepherd
A shepherd or sheepherder is a person who tends, herds, feeds, or guards flocks of sheep. ''Shepherd'' derives from Old English ''sceaphierde (''sceap'' 'sheep' + ''hierde'' ' herder'). ''Shepherding is one of the world's oldest occupations ...
, the
GNU service and daemon manager which provides asynchronous, dependency-based initialisation; written in
Guile Scheme and meant to be interactively hackable during normal system operation
*
s6, a software suite that includes an init system.
*
systemd, a software suite, full replacement for init in Linux that includes an init daemon, with concurrent starting of services, service manager, and other features.
*
SystemStarter, a process spawner started by the BSD-style init in
Mac OS X prior to Mac OS X v10.4
*
Upstart, a full replacement of init designed to start processes asynchronously. Initiated by
Ubuntu and used by them until 2014. It was also used in Fedora 9, Red Hat Enterprise Linux 6 and
Google
Google LLC () is an American Multinational corporation, multinational technology company focusing on Search Engine, search engine technology, online advertising, cloud computing, software, computer software, quantum computing, e-commerce, ar ...
's
Chrome OS
ChromeOS, sometimes stylized as chromeOS and formerly styled as Chrome OS, is a Linux-based operating system designed by Google. It is derived from the open-source ChromiumOS and uses the Google Chrome web browser as its principal user interfac ...
.
, systemd has been
adopted by most major Linux distributions.
[See Systemd#Adoption]
See also
*
Operating system service management
*
Session Manager Subsystem — an equivalent in Windows NT
References
External links
FreeBSD init man pageA paper summarizing Unix init schemes(2007)
*
A history of modern init systems (1992–2015)
{{Service management in Unix
Unix process- and task-management-related software