Unix - Systemd vs. SysV Init (Modern UNIX Variants)

Modern UNIX-like systems use either the old SysV init system or the newer systemd system for booting, service management, and process supervision. Both aim to start the OS, but they work very differently.


1. SysV Init (System V Init) – The Traditional Approach

SysV init is the classic initialization system used in older UNIX and early Linux distributions.

How it works:

  • Uses runlevels (0–6) for different system states.

  • Each runlevel has a directory like /etc/rc3.d/ containing symbolic links to scripts.

  • Service startup/shutdown is managed by shell scripts located in /etc/init.d/.

  • Starts services sequentially, one after another.

  • Minimal tracking of service health (no automatic restart).

Advantages:

  • Simple and predictable.

  • Easy to manually edit or understand (just shell scripts).

  • Supported universally in older UNIX/Linux systems.

Limitations:

  • Slow boot times due to sequential startup.

  • No built-in service monitoring or dependency management.

  • Scalability is limited for large or complex servers.


2. systemd – The Modern Init System

systemd is a much more advanced init system used in most modern Linux distributions (RHEL, Ubuntu, Debian, Arch).

How it works:

  • Uses units (service units, mount units, socket units, target units, etc.).

  • Replaces many traditional tools (cron, syslog, networking scripts, etc.).

  • Performs parallel service startup using dependency graphs.

  • Uses systemctl as the main command-line interface.

Key features:

  • Parallelized booting for faster startup.

  • Dependency-aware service management.

  • Socket activation: services start when needed, not preloaded.

  • Automatic service restarts and health checks.

  • Logging through journald (binary log format).

  • Targets replace runlevels (e.g., multi-user.target, graphical.target).

Advantages:

  • Much faster boot times.

  • Reliable, automated service supervision.

  • More control and better troubleshooting tools.

  • Uniform interface across systems.

Limitations:

  • More complex and heavyweight.

  • Harder to debug manually than shell scripts.

  • Not universally adopted in all UNIX systems (BSD uses rc, Solaris uses SMF).


3. Key Differences at a Glance

Feature SysV init systemd
Service startup Sequential Parallel +
dependency-based    
Configuration Shell scripts Declarative unit files
Service monitoring Minimal Built-in supervision, auto-restart
Boot speed Slow Fast
Runlevels Yes Replaced by targets
Logging syslog journald
Socket activation No Yes
Popularity Older systems Modern Linux distributions

4. Which Is Better?

Depends on your needs:

 

  • For modern servers and desktops: systemd provides speed, control, automation, and reliability.

  • For minimal systems or old-school UNIX: SysV init is simpler and easier to tweak manually.

  • For BSD or non-Linux UNIX variants: SysV init concepts exist, but alternatives like SMF (Solaris) or rc.d (BSD) are used.