systemd System and Service Manager
What is this?
systemd
is a suite of basic building blocks for a Linux system. It provides a system and service manager that runs as PID 1 and starts the rest of the system. systemd
provides aggressive parallelization capabilities, uses socket and D-Bus activation for starting services, offers on-demand starting of daemons, keeps track of processes using Linux control groups, maintains mount and automount points, and implements an elaborate transactional dependency-based service control logic. systemd
supports SysV and LSB init scripts and works as a replacement for sysvinit. Other parts include a logging daemon, utilities to control basic system configuration like the hostname, date, locale, maintain a list of logged-in users and running containers and virtual machines, system accounts, runtime directories and settings, and daemons to manage simple network configuration, network time synchronization, log forwarding, and name resolution. See Lennart’s blog story for a longer introduction, and the three status updates since then. Also see the Wikipedia article. If you are wondering whether systemd is for you, please have a look at this comparison of init systems by one of the creators of systemd.
License
This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
Spelling
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. And since systemd manages the system, it’s called systemd. It’s that simple. But then again, if all that appears too simple to you, call it (but never spell it!) System Five Hundredsince D is the roman numeral for 500 (this also clarifies the relation to System V, right?). The only situation where we find it OK to use an uppercase letter in the name (but don’t like it either) is if you start a sentence with systemd. On high holidays you may also spell it sÿstëmd. But then again, Système D is not an acceptable spelling and something completely different (though kinda fitting).
Plus
Hackfests and Sprints
Mailing Lists
Bug Reports
Also check out various distributions bugtrackers:
IRC
Download
Most Importantly, Git
Package repositories of the various distributions
- Fedora: packages, wiki
- openSUSE: packages, instructions
- Arch Linux: packages, wiki
- Debian: packages, wiki
- Ubuntu: packages, wiki
- Mageia: packages
- Gentoo: packages, wiki
Continuous Integration
Publications
- Article in The H
- Article in The H, Part 2
- Bê-á-bá do systemd #1, #2, #3, #4, #5, #6 (Brazilian Portuguese)
- Évolutions techniques de systemd (French)
- RHEL7 docs
- SUSE White Paper on systemd
Manuals and Documentation for Users and Administrators
- Manual Pages
- Tips And Tricks
- Frequently Asked Questions
- Debugging systemd Problems
- Incompatibilities with SysV/LSB
- Socket Activation with Popular Daemons
- Booting Without /usr is Broken
- Predictable Network Interface Names
- API File Systems
- Running Services After the Network is up
- My Service Can’t Get Realtime!
- The 30 Biggest Myths about systemd
- systemd in Action Part 1, systemd in Action Part 2 (russian)
- Introduction to systemd in French
Videos for Users and Administrators
- Presentation about kdbus at linux.conf.au 2014
- Presentation about systemd at the Red Hat Summit 2013
- Presentation about the journal at Devconf 2013
- Presentation about recent developments at Devconf 2013
- Presentation about systemd at FOSDEM 2013 (Audio is bad 0:29 – 06:12, please seek ahead), (Slides)
- Presentation about systemd at FOSS.in 2012
- Presentation about systemd at OSEC Barcamp 2012
- Presentation about systemd at FOSDEM 2011
- Presentation about systemd at linux.conf.au 2011, (Slides)
- Interview about systemd at golem.de (German)
- Presentation about systemd at OSworld 2014 (systemd cheat-sheet) (Polish)
The systemd for Administrators Blog Series
- #1: Verifying Bootup
- #2: Which Service Owns Which Processes?
- #3: How Do I Convert A SysV Init Script Into A systemd Service File?
- #4: Killing Services
- #5: The Three Levels of “Off”
- #6: Changing Roots
- #7: The Blame Game
- #8: The New Configuration Files
- #9: On /etc/sysconfig and /etc/default
- #10: Instantiated Services
- #11: Converting inetd Services
- #12: Securing Your Services
- #13: Log and Service Status
- #14: The Self-Explanatory Boot
- #15: Watchdogs
- #16: Gettys on Serial Consoles (and Elsewhere)
- #17: Using the Journal
- #18: Managing Resources
- #19: Detecting Virtualization
- #20: Socket Activated Internet Services and OS Containers
- #21: Container Integration
Also available: a Russian translation; another, more complete Russian translation as PDF; a Vietnamese translation
Documentation for Developers
- Backports
- Presets
- systemd Optimizations
- Interface Stability Promise
- Interface Portability and Stability Chart
- Writing Password Agents
- PID1’s Bus APIs
- On hostnamed
- On timedated
- On localed
- On logind
- On machined
- On importd
- On resolved
- Multi-Seat on Linux
- Writing Display Managers
- Writing Desktop Environments
- Writing VM and Container Managers
- Writing Network Configuration Managers
- Writing Resolver Clients
- Inhibitor Locks
- New Control Group Interfaces
- Cooperating in the cgroupfs trees (obsolete)
- Control Groups vs. Control Groups
- Writing syslog Daemons Which Cooperate Nicely With systemd
- systemd and Storage Daemons for the Root File System
- The Case for the /usr Merge
- The Container Interface of systemd
- The initrd Interface of systemd
- The Boot Loader Interface of systemd
- Implementing Offline System Updates
- Generators
- Minimal Builds
- Journal Export Format
- Journal JSON Format
- Journal File Format
- On /etc/os-release
- Journal Message Catalogs
- Testing systemd during Development in Virtualization
- systemd File Hierarchy Requirements
- systemd-boot EFI Boot Manager
The systemd for Developers Series
Related Packages
- Go Bindings for the Journal API, socket activation and DBUS
- PHP Bindings for the Journal APIs
- Node.JS Bindings for the Journal APIs
- Lua Bindinds for systemd APIs
- Node.JS Support for systemd Socket Activation
- Experimental Qt bindings
- Haskell socket activation
- Haskell Journal API
- Ruby bindings for the Journal APIs
- Ruby bindings for the systemd D-Bus APIs
- Erlang bindings for the Journal APIs
- Erlang journald backend for Lager
- Perl bindings for the Journal APIs
- GLib bindings
- Python bindings:
- C++ bindings for sd-bus