systemd is asoftware suite for system and service management onLinux[7] built to unify service configuration and behavior acrossLinux distributions.[8] Its main component is aninit system used tobootstrapuser space and manageuser processes. It also provides replacements for variousdaemons and utilities, including device management, login management, network connection management, and event logging. The namesystemd adheres to theUnix convention of namingdaemons by appending the letterd,[9] and also plays on the French phraseSystème D (a person's ability to quickly adapt and improvise in the face of problems).[10]
Since 2015, nearly all Linux distributions have adopted systemd. It has been praised by developers and users of distributions that adopted it for providing a stable, fast out-of-the-box solution for issues that had existed in the Linux space for years.[11][12][13] At the time of its adoption, it was the onlyparallel boot and init system offering centralized management ofprocesses, daemons, services, andmount points[citation needed].
Critics of systemd contend it suffers fromfeature creep and has damaged interoperability acrossUnix-like operating systems (as it does not run on non-Linux Unix derivatives likeBSD orSolaris). In addition, they contend systemd's large feature set creates a largerattack surface.[14] This has led to the development of several minor Linux distributions replacing systemd with other init systems likeSysVinit orOpenRC.[15]
Lennart Poettering andKay Sievers, thesoftware engineers then working forRed Hat who initially developed systemd,[2] started a project to replace Linux's conventional System V init in 2010.[16] An April 2010 blog post from Poettering, titled "Rethinking PID 1", introduced an experimental version of what would later become systemd.[17] They sought to surpass the efficiency of theinit daemon in several ways. They wanted to improve thesoftware framework for expressing dependencies, to allow more processes to runconcurrently or inparallel during systembooting, and to reduce thecomputational overhead of theshell.
In May 2011,Fedora Linux became the first major Linux distribution to enable systemd by default, replacingUpstart. The reasoning at the time was that systemd provided extensive parallelization during startup, better management of processes and overall a saner, dependency-based approach to control of the system.[18]
In October 2012,Arch Linux made systemd the default, switching from SysVinit.[19] Developers had debated since August 2012[13] and concluded it was faster and had more features than SysVinit and that maintaining SysVinit was not worth the effort.[20] Some thought the criticism of systemd was not based on actual shortcomings of the software but rather personal dislike of Poettering and a general opposition to change. Several complaints about systemd—including its use ofD-bus, C instead ofbash, and an optional on-disk journal format—were instead described as advantages by the Arch maintainers.[21]
Between 2013 and 2014, the Debian Technical Committee engaged in a widely publicizeddebate on the mailing list about which init system to use as the default in Debian 8 before settling on systemd.[22][23][24] Soon after, Debian developer Joey Hess,[25] Technical Committee members Russ Allbery[26] andIan Jackson,[27] and systemd package maintainer Tollef Fog Heen[28] resigned from their positions, citing the extraordinary levels of stress caused by disputes on systemd integration within the Debian andFOSS community that rendered regular maintenance virtually impossible.Mark Shuttleworth announced soon afterwards that the Debian-basedUbuntu would use systemd to replace its oldUpstart init system.[29][30]
In August 2015, systemd started providing a login shell, callable viamachinectl shell.[31]
In September 2016, asecurity bug was discovered that allowed any unprivileged user to perform a denial-of-service attack against systemd.[32] Rich Felker, developer ofmusl, stated that this bug reveals a major "system development design flaw".[33] In 2017 another security bug was discovered in systemd-resolved,CVE-2017-9445, which "allows disruption of service" by a "malicious DNS server".[34][35] Later in 2017, thePwnie Awards gave author Lennart Poettering a "lamest vendor response" award due to his handling of the vulnerabilities.[36]
The architecture of systemd as it is used byTizen. Several systemd targets, includingtelephony,bootmode,dlog, andtizen service are from Tizen and are not components of systemd.[37]Unified-hierarchycgroups will be accessible exclusively by systemd throughsystemd-nspawn.[38]
Poettering describes systemd development as "never finished, never complete, but tracking progress of technology". In May 2014, Poettering further described systemd as unifying "pointless differences between distributions", by providing the following three general functions:[39]
A system and service manager (manages both the system, by applying various configurations, and its services)
Asoftware platform (serves as a basis for developing other software)
The glue betweenapplications and thekernel (provides various interfaces that expose functionalities provided by the kernel)
systemd includes features like on-demand starting of daemons, snapshot support, process tracking[40] and Inhibitor Locks.[41] It is not just the name of the init daemon but also refers to the entire software bundle around it, which, in addition to thesystemd init daemon, includes the daemonsjournald,logind andnetworkd, and many other low-level components. In January 2013, Poettering described systemd not as one program, but rather a large software suite that includes 69 individual binaries.[42] As an integratedsoftware suite, systemd replaces thestartup sequences andrunlevels controlled by the traditional init daemon, along with theshell scripts executed under its control. systemd also integrates many other services that are common on Linux systems by handling user logins, thesystem console, device hotplugging (seeudev), scheduled execution (replacingcron), logging, hostnames and locales.
Like the init daemon,systemd is a daemon that manages other daemons, which, includingsystemd itself, arebackground processes.systemd is the first daemon to start duringbooting and the last daemon to terminate duringshutdown. Thesystemd daemon serves as the root of the user space'sprocess tree; the first process (PID 1) has a special role on Unix systems, as it replaces the parent of a process when the original parent terminates. Therefore, the first process is particularly well suited for the purpose of monitoring daemons.
systemd executes elements of its startup sequence in parallel, which is theoretically faster than the traditional startup sequence approach.[43] Forinter-process communication (IPC),systemd makesUnix domain sockets andD-Bus available to the running daemons. The state ofsystemd itself can also be preserved in asnapshot for future recall.
Following its integrated approach, systemd also provides replacements for various daemons and utilities, including the startup shell scripts, pm-utils,inetd,acpid,syslog, watchdog,cron andatd. systemd's core components include:
systemd is a system and service manager for Linux operating systems.
systemctl is a command to introspect and control the state of the systemd system and service manager. Not to be confused withsysctl.
systemd-analyze may be used to determine system boot-up performance statistics and retrieve other state and tracing information from the system and service manager.
systemd tracks processes using the Linux kernel'scgroups subsystem instead of usingprocess identifiers (PIDs); thus, daemons cannot "escape"systemd, not even by double-forking.systemd not only uses cgroups, but also augments them withsystemd-nspawn andmachinectl, two utility programs that facilitate the creation and management ofLinux containers.[44] Since version 205, systemd also offers ControlGroupInterface, which is an API to the Linux kernel cgroups.[45] The Linux kernel cgroups are adapted to supportkernfs,[46] and are being modified to support a unified hierarchy.[47]
Beside its primary purpose of providing a Linux init system, the systemd suite can provide additional functionality, including the following components:
A screenshot ofsystemd-bootA screenshot oftimedatectl
journald
systemd-journald is a daemon responsible forevent logging, with append-onlybinary files serving as itslogfiles. Thesystem administrator may choose whether to log system events withsystemd-journald,syslog-ng orrsyslog. The potential for corruption of the binary format has led to much heated debate.[48]
libudev
libudev is the standard library for utilizing udev, which allows third-party applications to query udev resources.
systemd-logind is a daemon that manages user logins and seats in various ways. It is an integrated login manager that offersmultiseat improvements[49] and replacesConsoleKit, which is no longer maintained.[50] ForX11 display managers the switch tologind requires a minimal amount of porting.[51] It was integrated in systemd version 30.
homed is a daemon that provides portable human-user accounts that are independent of current system configuration.homed moves various pieces of data such as UID/GID from various places across the filesystem into one file,~/.identity.homed manages the user's home directory in various ways such as a plain directory, abtrfs subvolume, aLinux Unified Key Setup volume, an fscrypt directory, or mounted from anSMB server.
networkd
networkd is a daemon to handle the configuration of the network interfaces; in version 209, when it was first integrated, support was limited to statically assigned addresses and basic support forbridging configuration.[52][53][54][55][56] In July 2014, systemd version 215 was released, adding new features such as aDHCP server forIPv4 hosts, andVXLAN support.[57][58]networkctl may be used to review the state of the network links as seen by systemd-networkd.[59] Configuration of new interfaces has to be added under the /lib/systemd/network/ as a new file ending with .network extension.
resolved
provides network name resolution to local applications
systemd-boot
systemd-boot is a boot manager, formerly known asgummiboot. Kay Sievers merged it into systemd with rev 220.
systemd-nspawn may be used to run a command or OS in a namespace container.
timedated
systemd-timedated is a daemon that can be used to control time-related settings, such as the system time, systemtime zone, or selection betweenUTC and local time-zone system clock. It is accessible through D-Bus.[60] It was integrated in systemd version 30.
timesyncd
timesyncd is a clientNTP daemon for synchronizing the system clock across the network.
tmpfiles
systemd-tmpfiles is a utility that takes care of creation and clean-up of temporary files and directories. It is normally run once at startup and then in specified intervals.
udevd
udev is a device manager for theLinux kernel, which handles the/dev directory and alluser space actions when adding/removing devices, includingfirmware loading. In April 2012, thesource tree for udev wasmerged into the systemd source tree.[61][62] In order to match the version number of udev, systemd maintainers bumped the version number directly from 44 to 183.[63]
On 29 May 2014, support for firmware loading through udev was dropped from systemd, as it was decided that the kernel should be responsible for loading firmware.[64]
systemd is configured exclusively viaplain-text files although GUI tools such as systemd-manager are also available.
systemd records initialization instructions for each daemon in aconfiguration file (referred to as a "unit file") that uses adeclarative language, replacing the traditionally used per-daemon startupshell scripts. The syntax of the language is inspired by.ini files.[65]
Although Arch provides installation instructions for OpenRC and other init systems are available in the AUR, Arch officially supports only systemd.[73][74]
While many distributions boot systemd by default, some allow other init systems to be used; in this case switching the init system is possible by installing the appropriate packages. Afork of Debian calledDevuan was developed to avoid systemd[100][101] and has reached version 5.0 for stable usage. In December 2019, the Debian project voted in favour of retaining systemd as the default init system for the distribution, but with support for "exploring alternatives".[102]
In the interest of enhancing the interoperability between systemd and theGNOME desktop environment, systemd coauthor Lennart Poettering askedthe GNOME Project to consider making systemd an externaldependency of GNOME 3.2.[103]
In November 2012, the GNOME Project concluded that basic GNOME functionality should not rely on systemd.[104] However, GNOME 3.8 introduced a compile-time choice between thelogind and ConsoleKit API, the former being provided at the time only by systemd. Ubuntu provided a separatelogind binary, but systemd became ade facto dependency of GNOME for mostLinux distributions, in particular since ConsoleKit is no longer actively maintained and upstream recommends the use ofsystemd-logind instead.[105] The developers ofGentoo Linux also attempted to adapt these changes inOpenRC, but the implementation contained too many bugs, causing the distribution to mark systemd as a dependency of GNOME.[106][107]
GNOME has further integratedlogind.[108] As ofMutter version 3.13.2,logind is a dependency forWayland sessions.[109]
The design of systemd has ignited controversy within thefree-software community. Critics regard systemd as overly complex and suffering from continuedfeature creep, arguing that its architecture violates theUnix philosophy. There is also concern that it forms a system of interlocked dependencies, thereby giving distribution maintainers little choice but to adopt systemd as more user-space software comes to depend on its components, which is similar to the problems created byPulseAudio, another of Lennart Poettering's projects.[110][111]
In a 2012 interview,Slackware's leadPatrick Volkerding expressed reservations about the systemd architecture, stating his belief that its design was contrary to the Unix philosophy of interconnected utilities with narrowly defined functionalities.[112] As of August 2018[update], Slackware does not support or use systemd, but Volkerding has not ruled out the possibility of switching to it.[113]
In January 2013, Lennart Poettering attempted to address concerns about systemd in a blog post calledThe Biggest Myths.[42]
In February 2014,musl's Rich Felker opined thatPID 1 is too special to be saddled with additional responsibilities, believing that PID 1 should only be responsible for starting the rest of the init system and reapingzombie processes, and that the additional functionality added by systemd can be provided elsewhere and unnecessarily increases the complexity and attack surface of PID 1.[114]
In March 2014,Eric S. Raymond commented that systemd's design goals were prone tomission creep andsoftware bloat.[115] In April 2014,Linus Torvalds expressed reservations about the attitude ofKay Sievers, a key systemd developer, toward users and bug reports in regard to modifications to the Linux kernel submitted by Sievers.[116] In late April 2014, a campaign to boycott systemd was launched, with a website listing various reasons against its adoption.[117][118]
In an August 2014 article published inInfoWorld, Paul Venezia wrote about the systemd controversy and attributed the controversy to violation of the Unix philosophy, and to "enormous egos who firmly believe they can do no wrong".[119] The article also characterizes the architecture of systemd as similar to that ofsvchost.exe, a critical system component inMicrosoft Windows with a broad functional scope.[119]
In a September 2014ZDNet interview, prominent Linux kernel developerTheodore Ts'o expressed his opinion that the dispute over systemd's centralized design philosophy, more than technical concerns, indicates a dangerous general trend toward uniformizing the Linux ecosystem, alienating and marginalizing parts of the open-source community, and leaving little room for alternative projects. He cited similarities with the attitude he found in the GNOME project toward non-standard configurations.[120] On social media, Ts'o also later compared the attitudes of Sievers and his co-developer, Lennart Poettering, to that of GNOME's developers.[121]
Forks of systemd are closely tied to critiques of it outlined in the above section. Forks generally try to improve on at least one of portability (to other libcs and Unix-like systems), modularity, or size. A few forks have collaborated under the FreeInit banner.[122]
In 2012, theGentoo Linux project created afork ofudev in order to avoid dependency on the systemd architecture. The resulting fork is calledeudev and it makes udev functionality available without systemd.[123] A stated goal of the project is to keep eudev independent of any Linux distribution or init system.[124] In 2021, Gentoo announced that support of eudev would cease at the beginning of 2022. An independent group of maintainers have since taken up eudev.[125]
Elogind is the systemd project's "logind", extracted to be a standalone daemon. It integrates with PAM to know the set of users that are logged into a system and whether they are logged in graphically, on the console, or remotely. Elogind exposes this information via the standard org.freedesktop.login1D-Bus interface, as well as through the file system using systemd's standard/run/systemd layout. Elogind also provides "libelogind", which is a subset of the facilities offered by "libsystemd". There is a "libelogind.pc"pkg-config file as well.[126]
ConsoleKit was forked in October 2014 byXfce developers wanting its features to still be maintained and available on operating systems other than Linux. While not ruling out the possibility of reviving the original repository in the long term, the main developer considers ConsoleKit2 a temporary necessity until systembsd matures.[127]
LoginKit was an attempt to implement a logind (systemd-logind)shim, which would allow packages that depend on systemd-logind to work without dependency on a specific init system.[128] The project has been defunct since February 2015.[129]
In 2014, aGoogle Summer of Code project named "systembsd" was started in order to provide alternative implementations of these APIs forOpenBSD. The original project developer began it in order to ease his transition from Linux to OpenBSD.[130] Project development finished in July 2016.[131]
The systembsd project did not provide an init replacement, but aimed to provide OpenBSD with compatible daemons forhostnamed,timedated,localed, andlogind. The project did not create new systemd-like functionality, and was only meant to act as a wrapper over the native OpenBSD system. The developer aimed for systembsd to be installable as part of theports collection, not as part of a base system, stating that "systemd and *BSD differ fundamentally in terms of philosophy and development practices."[130]
Notsystemd intends to implement all systemd's features working on any init system.[132] It was forked by theParabola GNU/Linux-libre developers to build packages with their development tools without the necessity of having systemd installed to run systemd-nspawn. Development ceased in July 2018.[133]
In 2014,uselessd was created as a lightweight fork of systemd. The project sought to remove features and programs deemed unnecessary for an init system, as well as address other perceived faults.[134] Project development halted in January 2015.[135]
uselessd supported themusl andμClibc libraries, so it may have been used onembedded systems, whereas systemd only supportsglibc. The uselessd project had planned further improvements on cross-platform compatibility, as well as architectural overhauls and refactoring for the Linux build in the future.[136]
InitWare is a modular refactor of systemd, porting the system to BSD platforms without glibc or Linux-specific system calls. It is known to work on DragonFly BSD, FreeBSD, NetBSD, and GNU/Linux. Components considered unnecessary are dropped.[137]
Lennart Poettering speaking at All Systems Go! 2024
All Systems Go! is the annual systemd conference, which is held in Berlin.[138] The main topic is systemd but other Linux areas are covered as well, likeTPM,DBus,desktop environment,containers,eBPF etc.
Video recordings of the talks are usually archived onYouTube and on theChaos Computer Club site for offline viewing[139][140]. Event picture are provided as well[141].
^systemd is supported in Gentoo as an alternative to OpenRC, the default init system[81] for those who "want to use systemd instead, or are planning to use Gnome 3.8 and later (which requires systemd)"[82]
^Missing functionality using init systems other than systemd[citation needed]
^Used the "contributors" statistic from:systemd/systemd, systemd, 3 December 2023, retrieved3 December 2023
^"v258.2". 7 November 2025. Retrieved7 November 2025.
^Poettering, Lennart (21 April 2012),systemd Status Update,archived from the original on 23 April 2012, retrieved28 April 2012
^"Rethinking PID 1". 30 April 2010.Archived from the original on 22 February 2022. Retrieved20 August 2021.systemd uses many Linux-specific features, and does not limit itself to POSIX. That unlocks a lot of functionality a system that is designed for portability to other operating systems cannot provide.
^"systemd System and Service Manager".freedesktop.org.Archived from the original on 15 October 2020. Retrieved19 March 2016.Yes, it is written systemd, not system D or System D, or even SystemD. And it isn't system d either. Why? Because it's a system daemon, and under Unix/Linux those are in lower case, and get suffixed with a lower case d.
^abGaudreault, Stéphane (14 August 2012)."Migration to systemd".arch-dev-public (Mailing list).Archived from the original on 20 October 2020. Retrieved15 November 2021.
^Simmonds, Chris (2015). "9: Starting up - the init Program".Mastering Embedded Linux Programming. Packt Publishing Ltd. p. 239.ISBN9781784399023. Retrieved20 June 2016.systemd defines itself as a system and service manager. The project was initiated in 2010 by Lennart Poettering and Kay Sievers to create an integrated set of tools for managing a Linux system including an init daemon.
^Lennart Poettering (30 April 2010)."Rethinking PID 1".Archived from the original on 15 January 2017. Retrieved28 August 2010.
^Groot, Jan de (14 August 2012)."Migration to systemd".arch-dev-public (Mailing list).Archived from the original on 17 January 2022. Retrieved11 November 2021.
^"CVE-2017-9445 Details",National Vulnerability Database, National Institute of Standards and Technology (U.S.), 6 July 2017,archived from the original on 6 July 2018, retrieved6 July 2018
^"CVE-2017-9445",The Common Vulnerabilities and Exposures database, The Mitre Corporation, 5 June 2017,archived from the original on 6 July 2018, retrieved6 July 2018
^Gundersen, Tom E. (25 September 2014)."The End of Linux".Archived from the original on 26 October 2014. Retrieved25 October 2014.It certainly is not something that comes with systemd from upstream.
^Heo, Tejun (28 January 2014)."cgroup: convert to kernfs".linux-kernel (Mailing list).Archived from the original on 12 October 2018. Retrieved24 May 2014.
^"timedated".freedesktop.org.Archived from the original on 11 October 2014. Retrieved9 November 2014.
^Sievers, Kay."The future of the udev source tree".vger.kernel.org/vger-lists.html#linux-hotplug linux-hotplug (Mailing list).Archived from the original on 16 February 2015. Retrieved22 May 2013.
^"systemd.slice (5) - Linux Man Pages".Archived from the original on 19 February 2023. Retrieved12 March 2018.... a slice ... is a concept for hierarchically managing resources of a group of processes.
^"systemd.scope".FreeDesktop.org.Archived from the original on 27 July 2021. Retrieved27 July 2021.
^"KNOPPIX 8.0 Die Antwort auf Systemd (German)". Archived fromthe original on 13 June 2018. Retrieved13 June 2018....Knoppix 'boot process continues to run via Sys-V init with few bash scripts that start the system services efficiently sequentially or in parallel. (The original German text: Knoppix' Startvorgang läuft nach wie vor per Sys-V-Init mit wenigen Bash-Skripten, welche die Systemdienste effizient sequenziell oder parallel starten.)
^Peters, Frederic (4 November 2011)."20121104 meeting minutes".GNOME release-team (Mailing list).Archived from the original on 7 September 2014. Retrieved14 January 2013.
^"ConsoleKit".Archived from the original on 18 October 2014. Retrieved15 November 2014.ConsoleKit is currently not actively maintained. The focus has shifted to the built-in seat/user/session management of Software/systemd called systemd-logind!
^Basile, Anthony G. (24 August 2021)."eudev retirement on 2022-01-01".Repository news items. Gentoo Linux.Archived from the original on 30 June 2022. Retrieved14 June 2022.