Init and its Alternatives

D

DevynCJohnson

Guest
On most Unix systems, the init daemon (initialization) is the first process that starts after boot-up and continues to run on the system until the system shuts down. All processes running on Unix systems are started by init or is a descendant of a process started by init. If the kernel cannot start init, then a kernel panic will take place. Without the init daemon, the Unix system will not start. If init is killed at any point, the system will crash. With Unix systems, processes are stopped if their parent process (the process that started them) dies. Because init is the first process, all processes will exit. However, init is not the only startup process that is available to Unix systems. This article will discuss alternative startup process software.

init – init has already been discussed above. It uses the SysV-style of starting up. The /etc/inittab contains the string “:initdefault:” which declares the default runlevel (discussed below).


Runlevels – The Linux Standard Base Specification defines the different runlevels. A runlevel defines the type of running software or the events that take place.

0 – (Halt) When the system is shutting down, it is entering runlevel zero.

1 – (Single-user) This runlevel lacks a GUI and networking abilities. This is like Microsoft Window's safe mode.

2 – (Multi-user with no networking) This runlevel allows multiple users, but no networking features and no GUI.

3 – (Multi-user with networking) This is like runlevel two, but with networking.

4 – (User Defined) This runlevel is defined and created by the user. A GUI requires networking abilities (X11 uses internal network protocols), so a runlevel with a GUI and no networking features in impossible.

5 – (Start multi-user system with GUI and networking) If you are using Firefox, Iceweasel, Chromium, Midori, or some other graphical web browser on a Linux system to read this, then you are in runlevel five (unless you made a special set up in runlevel four).

6 – (Reboot) The system enters runlevel six to reboot.

In Debian systems and many derivatives, runlevels two through five have no differences. In Slackware, runlevels two and three are the same. Many other Unix operating systems do not follow the Linux Standard Base Specification for runlevels.


BootScript - GoboLinux uses the BootScript system instead of init. There is a directory structure containing the boot scripts - /System/Settings/BootScripts/. A script titled "Shutdown" manages the shutdown process and "BootUp" deals with the bootup process. GoboLinux does not have "runlevels". Instead, different scripts start different "runlevels" - Single, Multi, and Graphical. The scripts start the system in the same mode as the script title. The directory /System/Settings/BootOptions/ contains options. The boot scripts call applications stored in /System/Links/Tasks/.

systemd – In the systemd setup, daemons are started from configuration files rather than shell scripts like they are in the init system.

Runit – This initialization system is a light-weight derivative of init. Runit uses /etc/runit/*.

OpenRC – OpenRC is not a replacement for init. Rather, it acts more like an addon/extension. OpenRC allows parallel process startup.

Initng – The init-Next-Generation is a replacement for init that is still in development. Initng starts processes in parallel (once dependencies are satisfied) while init starts one process at a time. Obviously, Initng should make the computer boot-up faster. Although Initng is in the developmental phase, some distros have already actively implemented this boot-up system.

Upstart – This is an init replacement made by Canonical Inc. Upstart retains the concept of runlevels. Therefore, the “runlevel” command still works. Upstart still places scripts in /etc/init.d. Upstart controls the action(s) taken when Ctrl-alt-del is pressed while in a test-environment (terminal). The key combination will act differently in a desktop environment because the graphical interface will process the combination differently. To change/assign actions that execute when ctrl-alt-del is pressed, edit the /etc/init/control-alt-delete.conf file.

Minit – Minit is a Mini-init. The system is complete, but yet very light-weight. http://www.fefe.de/minit/

sysmaster – Another light-weight init replacement.

Jinit – This init replacement is written in C++ and does not use the SystemV concept. Jinit lacks extensive testing, so it may be unstable. http://john.fremlin.de/programs/linux/jinit/


NOTE: This may not be a complete list. The purpose of this article is to give readers a basic understanding of runlevels and the different init-like systems.
 

Attachments

  • slide.jpg
    slide.jpg
    20.5 KB · Views: 95,218


Thank you for your overview, Devyn!
I'm not newbie with Linux but I didn't know about many of these alternatives.
Thank you a lot. Yet I like a classics :)
 
I like the simplicity of systemd.
How is systemd's starting daemons with configuration files simpler than sysVinit's use of shell scripts? Unless systemd also eliminates run levels (which I believe it does), but that also removes a useful feature. At least in my opinion.
 
How is systemd's starting daemons with configuration files simpler than sysVinit's use of shell scripts? Unless systemd also eliminates run levels (which I believe it does), but that also removes a useful feature. At least in my opinion.

I do not know ryanvade's specific reason, but configuration files are generally more simple than scripts.

By the way, could some one post the contents of their systemd configuration file so we can see it. I do not have systemd installed on any of my systems.
 

Members online


Latest posts

Top