Differences between revisions 184 and 185
Revision 184 as of 2012-11-14 23:38:39
Size: 13263
Comment:
Revision 185 as of 2012-11-30 09:51:45
Size: 11908
Editor: ?TollefFogHeen
Comment: Cleanups.
Deletions are marked like this. Additions are marked like this.
Line 14: Line 14:
With (20-1) DebianPkg:systemd finally entered testing. Since (25-1) systemd has [[http://wiki.debian.org/ReleaseGoals/RunDirectory|/run support]].
Line 22: Line 20:
You also need a kernel with the following options enabled:
The kernels in Debian wheezy 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:
Line 28: Line 27:

Since v8 the cgroupfs is mounted at /sys/fs/cgroup. This requires a Linux kernel >= 2.6.36 or a backport of this [[http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=676db4af043014e852f67ba0349dae0071bd11f3|patch]].

Linux kernel (>= 2.6.39) is now [[http://cgit.freedesktop.org/systemd/systemd/commit/README?id=a63599edcca136554f6794870214fba495324ec4|required]].
Line 82: Line 77:
=== Issue #2: Warning: "/etc/mtab is not a symlink or not pointing to /proc/self/mounts" ===

This issue is only a warning and can be ignored, we have it on TODO (see below "Make /etc/mtab a symlink to /proc/self/mounts. Requires a newer DebianPkg:util-linux package which stores user options separately."). (DebianBug:494001)

The full error-message in dmesg:
{{{
[ 5.784886] systemd[1]: /etc/mtab is not a symlink or not pointing to /proc/self/mounts. This is not supported anymore. Please make sure to replace this file by a symlink to avoid incorrect or misleading mount(8) output.
}}}

Workaround: Create required symlink:
{{{
# ln -sf /proc/self/mounts /etc/mtab
}}}
Line 232: Line 214:
== DONE ==

 * Get libcryptsetup moved to /lib.
 * Enable cryptsetup support.
 * Install a (auto)mount unit to mount /lib/init/rw early during boot. [[attachment:lib-init-rw.automount]] [[attachment:lib-init-rw.mount]] unit file.
Line 240: Line 216:
As systemd is a very young project (see [1]), we would appreciate to use the existing upstream infrastructure like mailing-list [2], IRC and read Lennart's blog [3], etc. for following the development. 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.

Translation(s): Russian


systemd - system and service manager

Introduction

systemd is a system and service manager for Linux, compatible with SysV and LSB init scripts. 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 cgroups, supports snapshotting and restoring of the system state, maintains mount and automount points and implements an elaborate transactional dependency-based service control logic. It can work as a drop-in replacement for sysvinit.

Installation

To install systemd run:

# apt-get update
# apt-get install systemd

The kernels in Debian wheezy 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. availabe in Linux kernel >= 2.6.37-rcX. Needs to be enabled for the Debian Linux kernel (605636).

Debian packages with native systemd support

dbus

(>=1.4.0-1)

testing

supports socket activation

rsyslog

(>=5.7.1-1)

testing

supports socket activation, run systemctl enable rsyslog.service

hal

(>=0.5.14-4)

testing

supports D-Bus activation

consolekit

(>=0.4.3-1)

testing

supports D-Bus activation

avahi-daemon

(>=0.6.28-1)

testing

avahi-daemon: supports socket and D-Bus activation, avahi-dnsconfd: started by multi-user.target. Run systemctl enable avahi-daemon.service resp. systemctl enable avahi-dnsconfd.service.

network-manager

(>=0.8.2-3)

testing

supports D-Bus activation, run systemctl enable NetworkManager.service

udev

(>=165-1)

testing

enabled by default, started via basic.target

rtkit

(>=0.9-3)

testing

supports D-Bus activation

dnsmasq

(>=2.58-1)

testing

thinkfan

(>=0.7.3-1)

testing

rsync

(>=3.0.9-1)

testing

sudo

(>=1.8.3p1-3)

testing

lighttpd

(>=1.4.30-1)

testing

EXAMPLE (here for rsyslog: Manually enable service after installation):

# systemctl enable rsyslog.service
Output:
ln -s '/lib/systemd/system/rsyslog.service' '/etc/systemd/system/multi-user.target.wants/rsyslog.service'

Known Issues and Workarounds

Issue #1: sysvinit vs. systemd-sysv

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=/bin/systemd". 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 #3: Dependency cycle in portmap/nfs-common/rpcbind

The nfs-common / portmap / rpcbind SysV init scripts have a dependency cycle which will cause systemd to drop them. You will get an error message during boot like the following:

Found ordering cycle path on basic.target/start
Walked on cycle path to sysinit.target/start
Walked on cycle path to portmap.service/start
Walked on cycle path to basic.target/start
Breaking ordering cycle by deleting job portmap.service

Until the portmap / nfs-common / rpcbind init scripts have been fixed, you can get rid of those error messages by uninstalling those packages or fixing their LSB init header manually.

This problem is caused by portmap / nfs-common / rpcbind installing symlinks in both rcS and rc{2345}, see 623377

Issue #3a: Dependency cycle breakage caused by nfs-common

A similar problem as above, but with a worse automatic resolution:

Found ordering cycle on basic.target/start
Walked on cycle path to sockets.target/start
Walked on cycle path to dbus.socket/start
Walked on cycle path to sysinit.target/start
Walked on cycle path to nfs-common.service/start
Walked on cycle path to basic.target/start
Breaking ordering cycle by deleting job dbus.socket/start

Corresponding bug report: 622394

Issue #4: Commands fail under sudo

See 667470. Workaround: for login services, right before @include common-session or @include common-session-interactive insert the following line:

session required pam_loginuid.so

Do not insert the above line into /etc/pam.d/common-session*, see 661745 for explanation. Some files that require this change:

/etc/pam.d/login
/etc/pam.d/gdm3
/etc/pam.d/gdm3-autologin

Native mount

With v12 or later you can use native (means systemd's) mount and fsck facility by making sure it is activated in /etc/systemd/system.conf.

# egrep 'MountAuto|SwapAuto' /etc/systemd/system.conf
Output:
MountAuto=yes
SwapAuto=yes

The Debian package enables native mount by default since version 15-1.

If you use Logical-Volume-Manager (LVM) make sure to upgrade your lvm2 package to the latest version available from unstable (>= 2.02.84-1) as it contains important fixes regarding the udev integration. See 603710 for more details. The 19-1 package already does this.

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

TODO

WorkInProgress

  • Test cryptsetup support.

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. Most people interested in systemd development (from diverse distributions) and Debian-specific packaging are around on IRC: #systemd (irc.freenode.net). Anyway, Debian-specific bugs should be sent to Debian-BTS (for example use report-bug tool).

  1. http://0pointer.de/blog/projects/systemd.html

  2. http://lists.freedesktop.org/mailman/listinfo/systemd-devel

  3. http://0pointer.de/blog/

Who is who?

Maintainer of the systemd package is Tollef Fog Heen (Mithrandir). Currently, it's discussed to get Michael Biebl (mbiebl) as co-maintainer. Michael and Sedat Dilek (dileks) contributed to the initial version of this wiki.

Resources

References