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 liked this article, then do subscribe to email alerts for Linux tutorials. If you have any questions or doubts? do ask for help in the comments section.

If You Appreciate What We Do Here On TecMint, You Should Consider:

TecMint is the fastest growing and most trusted community site for any kind of Linux Articles, Guides and Books on the web. Millions of people visit TecMint! to search or browse the thousands of published articles available FREELY to all.

If you like what you are reading, please consider buying us a coffee ( or 2 ) as a token of appreciation.

Support Us

We are thankful for your never ending support.

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

  1. that is the reason why i love Centos6 and had so much problems with Centos 7 !! I am not professional IT, but centos6 was very easy to configure my company network & workstations and centos 7 was hell.

    For example, wasted days to make extra license servers to boot up, after network card is booted, sometime concurrence is not needed, and saving few second at boot time is not a win. stability, predictability and easy control that what i need.

    Reply
  2. Jack, You don’t seem to have the knack for understanding Henry’s marketing strategy! His marketing strategy was make available to them what they need at a reasonable price and you will not have to convince them to want what they do not need. Not much different than Sam Walton’s. This is exactly the issue here. In the future your use of the indefinite pronoun may need refinement, unless you are an attorney, then shame on you!

    As a former hesitant Microsoft User and a current Linux user, for the last 5 years, all the people behind making Linux available deserve and have my lifetime support for their valiant effort. They have accomplished a unification of intent which I would have made any wager against prior to 1995.

    Lawrence October 12, 2016 at 5:30 am … welcome/ Innovation does not have to generate risk, just always insure your not getting what you do not want.

    Reply
  3. I find it interesting that this is posted by Editor? I guess it is easy to push unwanted changes on people if you act anonymously? Maybe Linux folks need to start looking at history before starting to change the environment that works just so they can make a name for themselves.

    I worked on real Unix system for decades. I used to consider Linux a Unix derivative. But I am doubting that based on the past few years. Linux is starting to act like Microsoft.

    Greg

    Reply
  4. Your history is a bit inaccurate. /sbin/init dates back at least to 3.2 release 4.2, and I’m told it dates back to System 3.1 that was fire-and-forget mailed as a digital tape to Berkeley that started BSD the *BSD variants.

    In fact, on 3.2r4.2 (Open Desktop), /etc/inittab was an aggregation of /etc/init.d/*, which is where the idea came from for Apache to read conf.d as a file-tree-walk in Apache-1.3.13 on-th-fly, which is now copied by everyone.

    /sbin/init was originally intended to restart printer services; it later was reused to restart vt100 terminal restarts when they died. The expansion to /etc/rc.d/ crap was done so that configs could be “added” as files when new software packages are installed (3.2r4.2 would “recompile” the config, svr5 — Unixware, Solaris — would read them in-place). Even using it to restart TCP services in general was seen as a stretch but /sbin/init performed well beyond its design scope.

    So, /sbin/init had very modest roots, was already performing beyond designed intents, but did its job very well. I’m not a fan of the systemd “do all the things” approach, but sometimes we need to make the bold step forward, try to iterate to improve, and see whether that gets us a benefit or a rollback.

    Reply
  5. sorry, but systemd is an abomination, and so is upstart, frankly. I don’t see why we replace the one thing that SysV got right.

    -mandrake (if you’ve been in the Linux world that long, yes, that one)

    Reply
  6. Systemd was a mistake to begin with. Change is coming (sinit, s6, openrc, shepherd, runit).
    https://devuan.org/os/debian-fork/

    You can add to systemd bottlenecks:
    bugs uncovered day in, day out (you remember about the “tweeter” thing? is that the kind of thing you would expect from /sbin/init?)

    when your root device fails, any already-opened session is rendered useless (can’t access systemd logs, can’t debug, can’t reboot, that’s something you used being able to do, when these used to be separate components, one might have broken without bringing down everything)

    AFAIU: there isn’t a single developer with a full visual on the whole project ramifications/understanding of what’s going on, what could go wrong.
    binary logs => logs corruption.

    Listing “low memory footprint” as a feature doesn’t make any sense: what are we comparing? have you looked at init?

    Saying systemd isn’t POSIX compliant is a cute euphemism. From day one: systemd didn’t comply with Unix philosophy. That should have been a red light, and I blame Red Hat here.

    Reply
  7. Why no one start something to opposite it and use init instead. I’m new to Linux but I agree with the term no broken don’t fix it. In fact a lot of people will be able to have a stable and effective system if the system stop changing dramatically.

    More contributors and newcomer like myself would enjoy Linux centos more. Please don’t end up like ms window os.

    Reply
    • Henry Ford said it best:

      – “If I’d of given the people what they wanted, they would’ve got faster horses”

      Same applies here.

      Reply

Got something to say? Join the discussion.

Have a question or suggestion? Please leave a comment to start the discussion. Please keep in mind that all comments are moderated and your email address will NOT be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.