The Story Behind ‘init’ and ‘systemd’: Why ‘init’ Needed to be Replaced with ‘systemd’ in Linux

I am subscribed to several mailing lists related to various Linux Distributions and Applications just to keep myself updated with what’s going on where. What are the new bugs? What are the Patches Released? What is expected in next release? and a whole lot of other stuffs. These days the mailing list is heavily populated with “Choose your side on Linux Divide”, mainly on Debian Mailing list along with a few other.

Linux Systemd
systemd replaces init
What “Choose your side on Linux Divide” is all about?

The init daemon is going to be replaced with daemon systemd on some of the Linux Distributions, while a lot of them have already implemented it. This is/will be creating a huge gap between traditional Unix/Linux Guard and New Linux Guard – programmers and System Admins.

In this article, we will discuss and solve following all queries one-by-one.

  1. What init is?
  2. What is systemd?
  3. Why init needed to be replaced?
  4. What features systemd will own.

What is init?

In Linux, init is a abbreviation for Initialization. The init is a daemon process which starts as soon as the computer starts and continue running till, it is shutdown. In-fact init is the first process that starts when a computer boots, making it the parent of all other running processes directly or indirectly and hence typically it is assigned “pid=1“.

If somehow init daemon could not start, no process will be started and the system will reach a stage called “Kernel Panic“. init is most commonly referred to as System V init. System V is the first commercial UNIX Operating System designed and usages of init on most of the Linux Distribution of today is identical with System V OS with a few exception like Slackware using BSD-style and Gentoo using custom init.

The need to replace init with something more perfect was felt from a long time and several alternatives were developed from time-to-time, some of which became distribution’s native init replacement, some of which are:

  1. Upstart – A init replacement daemon implemented in Ubuntu GNU/Linux and designed to start process asynchronously.
  2. Epoch – A init replacement daemon built around simplicity and service management, designed to start process single-threaded.
  3. Mudar – A init replacement daemon written in Python, implemented on Pardus GNU/Linux and designed to start process asynchronously.
  4. systemd – A init replacement daemon designed to start process in parallel, implemented in a number of standard distribution – Fedora, OpenSuSE, Arch, RHEL, CentOS, etc.

What is systemd?

A systemd is a System Management Daemon named with UNIX convention to add ‘d‘ at the end of daemon. So, that they can be easily recognized. Initially it was released under GNU General Public License, but now the releases are made under GNU Lesser General Public License. Similar to init, systemd is the parent of all other processes directly or indirectly and is the first process that starts at boot hence typically assigned a “pid=1“.

A systemd, may refer to all the packages, utilities and libraries around daemon. It was designed to overcome the shortcomings of init. It itself is a background processes which is designed to start processes in parallel, thus reducing the boot time and computational overhead. It has a lot other features as compared to init.

Why there was a need to replace init?

A init process starts serially i.e., one task starts only after the last task startup was successful and it was loaded in the memory. This often resulted into delayed and long booting time. However, systemd was not designed for speed but for getting the things done neatly which in turns avoid all the UN-necessary delay.

Features of systemd
  1. Clean, stateforward and efficient design.
  2. Simpler boot process.
  3. Concurrent and parallel processing at boot.
  4. Better API.
  5. Simple Unit Syntax.
  6. Ability to remove optional components.
  7. Low memory footprints.
  8. Improved technique to express dependencies.
  9. Initialization instruction written in config file and not in shell script.
  10. Make use of Unix Domain Socket.
  11. Job Scheduling using systemd Calendar Timers.
  12. Event Logging with journald.
  13. Choice of logging System events with systemd as well as syslog.
  14. Logs are stored in binary file.
  15. systemd state can be preserved to be called later in future.
  16. Track process using kernel’s cgroup and not PID.
  17. Users login managed by systemd-logind.
  18. Better integration with Gnome for interoperability.
Bottlenecks systemd
  1. Everything at one place.
  2. Not POSIX standard.

Systemd and Distro Integration

Linux Distribution Integration
Fedora Yes, first distro to adopt systemd
Arch Yes
RedHat Yes
CentOS Yes
Debian Yes, Debian 8 codename Jessie will have systemd by default
Gentoo Yes, but needs to be downloaded, installed and configure side with custom init
OpenSUSE Yes
Slack No (Though it has not been adopted till now in slackware, Patric Volkerding has not shown any indication if it will be adopted or not)
Ubuntu Yes, needs to be installed and configured with Upstream.
Controversy

Linus Torvalds, Chief architect of Linux kernel, feels attitude of key developer of systemd towards users and bug reports do not seems ok. It was also reported that systemd philosophy is weird and a foreign way to control system processes. The same has been recorded from Patric Volkerding and other notable Linux Users and Developers as well as over online forum, time-to-time.

systemd vs init

Features init systemd
DBus Dependency – Mandatory No Yes
Device based Activation No Yes
Device dependency configuration with udev No Yes
Timer based Activation Cron/at Proprietary
Quota Management No Yes
Automatic Service Dependency Handling No Yes
Kills users Process at logout No Yes
Swap Management No Yes
SELinux integration No Yes
Support for Encrypted HDD No Yes
Static kernle module loading No Yes
GUI No Yes
List all the child processes No Yes
Sysv compatible Yes Yes
Interactive booting No Yes
Portable to non x86 Yes No
Adopted on Several Distro Several Distro
Parallel service startup No Yes
Resource limit per service No Yes
Easy extensible startup script Yes No
Separate Code and Configuration File Yes No
Automatic dependency calculation No Yes
Verbose debug Yes No
Version N/A V44+
Size 560 KB N/A
Number of Files 75 files 900 files + glib + DBus
Lines of code – LOC 15000 (Approx) 224000 (Approx) (inc Codes, comments and white space) 125000 (Approx) (acctual code)

Conclusion

Anything running as pid=1 must not break, must not be mess and must be controlled by users effectively and efficiently. Many-a-user believes that replacing init for systemd is nothing more than reinventing the wheel everytime as a side effect of Linux. But this is the diverse nature of Linux. This is because Linux is that much powerful. Change is good and we must appreciate it if it is for a good reason.

That’s all for now. I’ll be here again with another Interesting article you people will love to read. Till then stay tuned and connected to Tecmint. Don’t forget to provide us with your valuable feedback in the comments below.

If you read this far, tweet to the author to show them you care. Tweet a thanks
Ronav Saive
A Passionate GNU/Linux Enthusiast and Software Developer with over a decade in the field of Linux and Open Source technologies.

Each tutorial at TecMint is created by a team of experienced Linux system administrators so that it meets our high-quality standards.

Join the TecMint Weekly Newsletter (More Than 156,129 Linux Enthusiasts Have Subscribed)
Was this article helpful? Please add a comment or buy me a coffee to show your appreciation.

71 thoughts on “The Story Behind ‘init’ and ‘systemd’: Why ‘init’ Needed to be Replaced with ‘systemd’ in Linux”

  1. SystemD is an init that wants to be a distro. It wants to control every process and every application with the distro. It is like a black hole that sucks in anything and everything that comes within its gravity field.

    SystemD violates big time one of the basic tenets of *nix – ‘Do one thing and do it well. Not only does systemd do hundreds of tasks (and wants more) but it does not do them that well.

    How can it be more efficient if, for every activity connected with it, we need a special program?

    If I did not know that systemD was developed by Leonard Poettering of Red Hat, I would swear that it was designed by Steve Balmer and developed by Microsoft to destroy Linux.

    Reply
    • I find it way too amusing, how you repeatedly say that Lennart Poettering developed systemd instead of MS. One year later the exact same guy (Leonard Poettering) works for MS.
      Coincidence? I think not.

      Reply
  2. Well, I’m calling it shytstemd, and here is why (I usually run Debian like distros) :
     
    * My laptop takes almost 4 minutes to boot where it took around 1′ with SysV,
     
    * It is a PITA to get rid of some of its parts (especially the network setup and its infamous resolved),
     
    * It _fails_ if you happen to have a fstab mount unavailable (SysV was just issuing a warning),
     
    * When you step backward to clearly see the whole picture, it is just like an octopus, it draws far too many things into its bed – this is the opposite of the way Unices in general and Linux, in particular, have always worked: the KISS principle,
     
    * Last but not the least: as it was adopted by almost all distros (wrongly and _very_ suspiciously because many of us, long time users, were dead set against it), that makes it a _very efficient_ trojan horse when the time will come to slaughter all non-PC opinions on the web, as we are already seeing this with GAFAM at this time, and my guts tell me that it is only a faint beginning.

    If you planned to do so, what a better option than to stuff the very process that controls everything in a machine and is so large that it makes it very hard to detect its flaws…

    Reply
  3. If systemd had been developed with a completely backwards compatible interface with the previous generation of commands such as service and chkconfig it would have been much easier to migrate to newer versions of Linux.

    If it were compatible but faster it would have eventually been accepted on its own merits. Throwing it into new versions along with a new firewall, new Satellite server, Ansible, etc just adds to the overall complexity of upgrading.

    I agree with this point: Clean, state forward, and efficient design. It may be clean and efficient but it is not a good thing to state forward; however, that imaginary word describes systemd in a most excellent way. I’m guessing that systemd was written and supplied to the public domain by Microsoft.

    Reply
    • Actually, it is the brain child (brain fart?) of Leonard Poettering of Red Hat. However, MS could not have done a better job of sabotaging Linux if they tried.

      Reply
      • Hi, at the (very dark) light of the past 3 years, I’d say with a quite high probability that it’s a big blocking/snooping hole P.O.S. – and I also remember having read some time ago that it is supposed to “revolutionize” the /home directory in a few versions from here :(((

        I think it’s time to make the move to Devuan – it stays behind Debian in terms of package novelty but it is a low price to pay not to use shytstemd anymore.

        Reply
  4. Note that the following paragraph has indeterminant meaning in English:

    “Linus Torvalds, a Chief Architect of Linux kernel, feels the attitude of the key developer of systemd towards users and bug reports do not seems ok. It was also reported that systemd philosophy is weird and a foreign way to control system processes. The same has been recorded from Patric Volkerding and other notable Linux Users and Developers as well as over online forum, time-to-time.”

    Reply
  5. Why there was a need to replace init?

    A init process starts serially i.e., one task starts only after the last task startup was successful and it was loaded in the memory. This often resulted into delayed and long booting time. However, systemd was not designed for speed..

    what the author should have said was: “However, init was not designed for speed…”

    Reply
    • No, the point was, “Systemd was designed to reduce the wastage of resources” like init.d. This helped speed, nevertheless it was not the objective.

      Reply
      • How can a systemd “reduce the wastage of resources” when it has 8 times the code lines and uses 12 times as many files?! Plus, like an octopus, it has its tentacles in most, if not all, applications.

        Reply

Got something to say? Join the discussion.

Thank you for taking the time to share your thoughts with us. We appreciate your decision to leave a comment and value your contribution to the discussion. It's important to note that we moderate all comments in accordance with our comment policy to ensure a respectful and constructive conversation.

Rest assured that your email address will remain private and will not be published or shared with anyone. We prioritize the privacy and security of our users.