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.
Booting
- Automatic Boot Assessment
- Boot Loader Interface
- Mount Requirements
- TPM2 PCR Measurements Made by systemd
Concepts
- Credentials
- Desktop Environment Integration
- Portable Services Introduction
- Porting systemd To New Distributions
- Random Seeds
- Safely Building Images
- systemd Coredump Handling
Contributing
- Code Quality Tools
- Coding Style
- Contributing
- Hacking on systemd
- Notes for Translators
- Porting to New Architectures
- Reporting of Security Vulnerabilities
- Steps to a Successful Release
- Testing systemd Using Sanitizers
- systemd Community Conduct Guidelines
- systemd Repository Architecture
Documentation for Developers
- Backports
- Inhibitor Locks
- Journal Message Catalogs
- Minimal Builds
- New Control Group Interfaces
- Presets
- Testing systemd during Development in Virtualization
- The Case for the /usr Merge
- Writing Desktop Environments
- Writing Display Managers
- Writing Network Configuration Managers
- Writing Resolver Clients
- Writing VM and Container Managers
- Writing syslog Daemons Which Cooperate Nicely With systemd
- systemd File Hierarchy Requirements
- systemd Optimizations
- systemd-boot UEFI Boot Manager
Documentation for Developers - external links
Interfaces
- Appstream Bundle
- Container Interface
- Control Group APIs and Delegation
- Dlopen Metadata for ELF Files
- File Descriptor Store
- Initrd Interface
- Interface Portability and Stability
- Journal Export Formats
- Journal File Format
- Known Environment Variables
- Locking Block Device Access
- Memory Pressure Handling
- Native Journal Protocol
- Package Metadata for ELF Files
- Password Agents
- Storage Daemons for the Root File System
- Using /tmp/ and /var/tmp/ Safely
- VM Interface
- What Settings Are Currently Available For Transient Units?
Manual Pages
Manuals and Documentation for Users and Administrators
- API File Systems
- Booting Without /usr is Broken
- Compatibility with SysV
- Diagnosing Boot Problems
- Frequently Asked Questions
- My Service Can’t Get Realtime!
- Socket Activation with Popular Daemons
- Tips And Tricks
Networking
- Predictable Network Interface Names
- Running Services After the Network Is Up
- systemd-resolved and VPNs
Project
- Brand
- GitHub Project Page
- Issues
- Mailing List
- Mastodon
- Pull Requests
- Releases
- mkosi Project - Build Bespoke OS Images
Publications
- Article in The H
- Article in The H, Part 2
- Bê-á-bá do systemd #1 (Brazilian Portuguese)
- Bê-á-bá do systemd #2 (Brazilian Portuguese)
- Bê-á-bá do systemd #3 (Brazilian Portuguese)
- Bê-á-bá do systemd #4 (Brazilian Portuguese)
- Bê-á-bá do systemd #5 (Brazilian Portuguese)
- Bê-á-bá do systemd #6 (Brazilian Portuguese)
- RHEL7 docs
- SUSE White Paper on systemd
- Évolutions techniques de systemd (French)
- C++ bindings for sd-bus
- Erlang bindings for the Journal APIs
- Erlang journald backend for Lager
- Experimental Qt bindings
- GLib bindings
- Go Bindings for the Journal API, socket activation and DBUS
- Haskell Journal API
- Haskell socket activation
- Lua Bindinds for systemd APIs
- Node.JS bindings for the Journal APIs
- Node.JS support for systemd Socket Activation
- Node.JS wrapper for sd_notify
- Node.JS wrapper for sd_notify (repo)
- PHP Bindings for the Journal APIs
- Perl bindings for the Journal APIs
- Ruby bindings for the Journal APIs
- Ruby bindings for the systemd D-Bus APIs
- pystemd
- python-systemd
The systemd for Administrators Blog Series
- #01: Verifying Bootup
- #02: Which Service Owns Which Processes?
- #03: How Do I Convert A SysV Init Script Into A systemd Service File?
- #04: Killing Services
- #05: The Three Levels of “Off”
- #06: Changing Roots
- #07: The Blame Game
- #08: The New Configuration Files
- #09: 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
- A Russian translation
- A Vietnamese translation
- A more complete Russian translation (PDF)
The systemd for Developers Series
The various distributions
- Arch Linux bugtracker
- Arch Linux packages
- Arch Linux wiki
- Debian bugtracker
- Debian packages
- Debian wiki
- Fedora bugtracker
- Fedora packages
- Fedora sources
- Gentoo bugtracker
- Gentoo packages
- Gentoo wiki
- Mageia bugtracker
- Mageia packages
- Ubuntu packages
- Ubuntu wiki
- openSUSE bugtracker
- openSUSE instructions
- openSUSE packages
Users, Groups and Home Directories
- Converting Existing Users to systemd-homed
- Home Directories
- JSON Group Records
- JSON User Records
- Pax Controla Groupiana
- User Record Blob Directories
- User/Group Name Syntax
- User/Group Record Lookup API via Varlink
- Users, Groups, UIDs and GIDs on systemd Systems
- systemd-homed and JSON User/Group Record Support in Desktop Environments
Videos for Users and Administrators
- Interview about systemd at golem.de (German)
- Presentation about kdbus at linux.conf.au 2014
- Presentation about recent developments at Devconf 2013
- Presentation about systemd at FOSDEM 2011
- Presentation about systemd at FOSDEM 2013
- Presentation about systemd at FOSDEM 2013 (Slides)
- Presentation about systemd at FOSS.in 2012
- Presentation about systemd at OSEC Barcamp 2012
- Presentation about systemd at OSworld 2014 (systemd cheat-sheet) (Polish)
- Presentation about systemd at linux.conf.au 2011
- Presentation about systemd at linux.conf.au 2011 (Slides)
- Presentation about systemd at the Red Hat Summit 2013
- Presentation about the journal at Devconf 2013
See also
Welcome to Fedora 20 (Heisenbug)!
[ OK ] Reached target Remote File Systems.
[ OK ] Listening on Delayed Shutdown Socket.
[ OK ] Listening on /dev/initctl Compatibility Named Pipe.
[ OK ] Reached target Paths.
[ OK ] Reached target Encrypted Volumes.
[ OK ] Listening on Journal Socket.
Mounting Huge Pages File System...
Mounting POSIX Message Queue File System...
Mounting Debug File System...
Starting Journal Service...
[ OK ] Started Journal Service.
Mounting Configuration File System...
Mounting FUSE Control File System...
[ OK ] Created slice Root Slice.
[ OK ] Created slice User and Session Slice.
[ OK ] Created slice System Slice.
[ OK ] Reached target Slices.
[ OK ] Reached target Swap.
Mounting Temporary Directory...
[ OK ] Reached target Local File Systems (Pre).
Starting Load Random Seed...
Starting Load/Save Random Seed...
[ OK ] Mounted Huge Pages File System.
[ OK ] Mounted POSIX Message Queue File System.
[ OK ] Mounted Debug File System.
[ OK ] Mounted Configuration File System.
[ OK ] Mounted FUSE Control File System.
[ OK ] Mounted Temporary Directory.
[ OK ] Started Load Random Seed.
[ OK ] Started Load/Save Random Seed.
[ OK ] Reached target Local File Systems.
Starting Recreate Volatile Files and Directories...
Starting Trigger Flushing of Journal to Persistent Storage...
[ OK ] Started Recreate Volatile Files and Directories.
Starting Record System Reboot/Shutdown in UTMP...
[ OK ] Started Trigger Flushing of Journal to Persistent Storage.
[ OK ] Started Record System Reboot/Shutdown in UTMP.
[ OK ] Reached target System Initialization.
[ OK ] Reached target Timers.
[ OK ] Listening on D-Bus System Message Bus Socket.
[ OK ] Reached target Sockets.
[ OK ] Reached target Basic System.
Starting Permit User Sessions...
Starting D-Bus System Message Bus...
[ OK ] Started D-Bus System Message Bus.
Starting Login Service...
Starting Cleanup of Temporary Directories...
[ OK ] Started Permit User Sessions.
[ OK ] Started Cleanup of Temporary Directories.
Starting Console Getty...
[ OK ] Started Console Getty.
[ OK ] Reached target Login Prompts.
[ OK ] Started Login Service.
[ OK ] Reached target Multi-User System.
Fedora release 20 (Heisenbug)
Kernel 3.9.2-200.fc18.x86_64 on an x86_64 (console)
fedora login: