Replacing SysV init
SysV init (1983) — with sequential shell scripts in /etc/init.d/ and runlevels 0-6 — was the Linux standard for decades. It showed limits, however: slow sequential boot, primitive dependency management, no parallelism, highly variable script quality.
systemd, started by Lennart Poettering and Kay Sievers at Red Hat, was presented on 30 April 2010, with version 1 released on 18 May 2010. Inspiration: Apple macOS launchd. Licence LGPLv2.1+.
Features
- Parallelism — units started in parallel respecting dependencies
- Socket activation — daemons start only when needed
- D-Bus activation — integration with Linux desktops
- Cgroup integration — per-service process isolation
- Declarative unit files (
*.service,*.socket,*.mount,*.timer,*.target) replace shell scripts - journald — binary structured logging
- systemctl — unified CLI for service management
Example unit file:
[Unit]
Description=My Web App
After=network.target postgresql.service
[Service]
Type=simple
User=webapp
ExecStart=/opt/webapp/server
Restart=on-failure
[Install]
WantedBy=multi-user.target
Adoption
Adoption as default:
- Fedora 15 (May 2011) — first major distro
- openSUSE 12.3 (2013)
- Arch Linux (2012)
- RHEL 7 (June 2014) — enterprise
- Debian 8 “Jessie” (April 2015) — after heated debate
- Ubuntu 15.04 (April 2015) — switch from Upstart
Controversies
systemd is one of the most controversial technologies in recent Linux history:
- Scope creep — criticism that it includes too many features (journald, resolved, networkd, timesyncd, etc.) beyond pure init
- Complexity — thousands of lines of C vs. simple shell scripts
- UNIX philosophy — “do one thing well” violated according to detractors
- Lock-in — deep dependency hard to uninstall
- Security concerns — wide attack surface
- Red Hat governance — some see vendor dominance
Forks and alternatives: Devuan (Debian without systemd), Artix Linux (Arch without systemd), sinit, runit, OpenRC (Gentoo). Alpine Linux does not use systemd.
In the Italian context
systemd is ubiquitously present on Italian Linux servers from 2015-2016 onward. The transition was handled by Italian sysadmins with varying degrees of enthusiasm, but today it is taken for granted.
References: systemd v1 (18 May 2010). Lennart Poettering, Kay Sievers, Red Hat. Licence LGPLv2.1+. Inspired by launchd (Apple). Declarative unit files. journald logging. Adoption as default in Fedora 15, RHEL 7, Debian 8, Ubuntu 15.04.
