Translation(s): English - Russian
systemd - system and service manager
Contents
Introduction
systemd is a system and service manager for Linux. systemd is compatible with SysV and LSB init scripts. It can work as a drop-in replacement for sysvinit. Systemd
- Provides aggressive parallelization capabilities
- Uses socket and D-Bus activation for starting services
- Offers on-demand starting of daemons
- Implements transactional dependency-based service control logic
- Tracks processes using Linux cgroups
- Supports snapshotting and restoring
- Maintains mount and automount points
Installation
The kernels in Debian wheezy and jessie are fine for systemd, but if you run a self-compiled kernel, make sure you have 2.6.39 or newer and enable the following options:
* CONFIG_DEVTMPFS=y * CONFIG_CGROUPS=y * CONFIG_AUTOFS4_FS=[y|m] * CONFIG_IPV6=[y|m], optional, but highly recommended * CONFIG_FANOTIFY=y, optional, required for systemd readahead. available in Linux kernel >= 2.6.37.
For an up-to-date list, see section "REQUIREMENTS" in the upstream README file.
To install systemd run:
# apt-get update # apt-get install systemd
To replace sysvinit with systemd, you should also install systemd-sysv which provides the manual pages and links for /sbin/init, and power management tools like shutdown.
# apt-get install systemd-sysv
Note: Installing systemd-sysv definitely works in a new install of jessie. Not sure about wheezy. See details of a possible issue below.
In order to boot your system with the newly installed systemd, simply reboot.
# reboot
Known Issues and Workarounds
Issue #1: sysvinit vs. systemd-sysv
(This should be no longer an issue for Jessie as of sysvinit 2.88dsf-44, see http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=728566 for details.)
sysvinit is the current default init-system in Debian and is flagged as an "Essential" package. This means the package management tools will refuse to remove or replace the package unless forced. Also on dist-upgrades essential packages are preferred and will be re-installed. For more Details see chapters "3.8 Essential packages" and "5.6.9 Essential"
The systemd-sysv package ships /sbin/init (as a symlink to /bin/systemd) and therefore conflicts with the sysvinit package.
Workaround #1: Do not install systemd-sysv, enhance grub-line (Kernel command line) by "init=/lib/systemd/systemd". However, while doing this you should be aware that systemd-sysv provides reboot, shutdown, halt and poweroff commands. For a grub2 persistent solution (requires an update-grub to refresh /boot/grub/grub.cfg):
# $EDITOR /etc/default/grub GRUB_CMDLINE_LINUX_DEFAULT="quiet init=/lib/systemd/systemd" <--- Change this line # update-grub
Workaround #2: Install systemd-sysv and put package "on hold".
The problem with "Essential flag" needs some discussion with the sysvinit maintainer.
Issue #2: encrypted swap blocks boot
See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=712439#70 for a patch.
According to the bug, the patch is no longer required as long as you upgrade to dmsetup 2:1.02.83-1.
Issue #3: Booting with lvm (especially with separate /usr) fails
Upgrade to lvm2 ≥ 2.02.104-1
Debugging systemd
Sometimes it is necessary to investigate why systemd hangs on startup or on reboot/shutdown.
Solution #0: Remove "quiet" from Kernel command line (so called "cmdline" or "grub line")
Solution #1: Increase verbosity via cmdline: Add "systemd.log_target=kmsg systemd.log_level=debug"
Of course you can have a "temporary" persistent solution:
[ /etc/default/grub ] GRUB_CMDLINE_LINUX="systemd.log_target=kmsg systemd.log_level=debug" <--- Add here (by uncommenting you can easily switch to debug) # update-grub
In addition enhance cmdline with "systemd.sysv_console=1" (0: disabled, 1: enabled).
Solution #2: Increase verbosity via /etc/systemd/system.conf
LogLevel=debug <--- Uncomment this line and use "debug" (default: commented and "info") LogTarget=syslog-or-kmsg <--- Uncomment this line (default: commented) SysVConsole=yes <--- Uncomment this line (default: commented)
HINT: "man system" and "man systemd.conf" (Note: File is system.conf vs. man-page system*d*.conf)
HINT: How to check Kernel command line parameters/options?
# cat /proc/cmdline
NOTE on LogLevel (see systemd(1) and systemd.conf(5)):
"Set log level. As argument this accepts a numerical log level or the well-known syslog(3) symbolic names (lowercase): emerg, alert, crit, err, warning, notice, info, debug."
HINT: Keep a copy of /sbin/init from sysvinit package in case of rescue (so you can use init=/sbin/init.sysvinit in cmdline)!
# cp -av /sbin/init /sbin/init.sysvinit <--- Before installing systemd-sysv package
See also http://fedoraproject.org/wiki/How_to_debug_Systemd_problems
Bugs and Bug-Tracking-Systems
- For known bugs please see topic "Known Issues and Workarounds"
TODO
Update more packages to ship systemd service files. See http://people.debian.org/~stapelberg/2013/07/14/systemd-how-to-help.html
- Draft a packaging policy involving systemd (upgrade / install / removal).
- Provide integration for package maintainer tools
- invoke-rc.d/update-rc.d/service integration.
- Get Essential flag removed from sysvinit.
- Sort out what to do about pam_loginuid, and integration into the Debian PAM stack
- Decide what to do about group:lock (/var/lock).
- Make systemd-vconsole work. Investigate which of the console-* and kbd* packages are actually required and how to migrate the configuration.
Where to get help?
As systemd is a very young project (see [1]), we would appreciate to use the existing upstream infrastructure like mailing-list [2], IRC (#debian-systemd) and read Lennart's blog [3], etc. for following the development. Follow upstream systemd development on #systemd (irc.freenode.net) and join #debian-systemd (irc.oftc.net) for Debian-specific discussion. Anyway, Debian-specific bugs should be sent to Debian-BTS (for example use report-bug tool).
Resources
Talk about current state of systemd in Debian and plans for Jessie at FOSDEM 2013 by Tollef Fog Heen and Michael Biebl <biebl@debian.org>
Slides from the FOSDEM 2013 talk
Talk about systemd in Debian at Linux Plumbers Conference 2010 by Michael Biebl <biebl@debian.org>
References