systemd

From Wikipedia, the free encyclopedia
Jump to: navigation, search
systemd
Systemd-on-fedora.png
Original author(s) Lennart Poettering, Kay Sievers, Harald Hoyer, Daniel Mack, Tom Gundersen, and David Herrmann
Developer(s) Lennart Poettering, Kay Sievers, Harald Hoyer, Daniel Mack, Tom Gundersen, David Herrmann, and others[1]
Initial release 30 March 2010 (2010-03-30)
Stable release 216 (August 19, 2014; 2 months ago (2014-08-19)) [±][2]
Written in C[3]
Operating system Linux
Type Init daemon
License first GPLv2+, currently GNU LGPL 2.1+ [4]
Website freedesktop.org/.../systemd/

systemd is a system management daemon designed for Linux and programmed exclusively for the Linux API. For systems using it, it is the first process that is executed in user space during the Linux startup process. Therefore, systemd serves as the root of the user space's process tree. The name systemd adheres to the Unix convention of making daemons easier to distinguish by having the letter d as the last letter of the filename.[5]

Components of the systemd software bundle[edit]

The entire systemd software bundle and its components

Systemd is not just the name of the init daemon but can also refer to the entire software bundle around systemd. This includes the daemons systemd, journald, logind and networkd and a couple of other low-level components such as libraries and utilities.

Systemd is published as free and open-source software under the terms of the GNU Lesser General Public License version 2.1 or later.[4]

systemd[edit]

The developers of systemd aimed to replace the Linux init system inherited from UNIX System V and Berkeley Software Distribution (BSD) operating systems. Like init, systemd is a daemon that manages other daemons. All daemons, including systemd, are background processes. Systemd is the first daemon to start (during booting) and the last daemon to terminate (during shutdown).

Lennart Poettering and Kay Sievers, software engineers that initially developed systemd,[1] sought to surpass the efficiency of the init daemon in several ways. They wanted to improve the software framework for expressing dependencies, to allow more processing to be done concurrently or in parallel during system booting, and to reduce the computational overhead of the shell.

Systemd's initialization instructions for each daemon are recorded in a declarative configuration file rather than a shell script. For inter-process communication, systemd makes Unix domain sockets and D-Bus available to the running daemons. Systemd is also capable of aggressive parallelization.

Among systemd's auxiliary features is a cron-like job scheduler called systemd Calendar Timers.[6] The state of systemd itself can be preserved in a snapshot for future recall.

Following its integrated approach, systemd also provides replacements for various daemons and utilities, including sysvinit, pm-utils, inetd, acpid, syslog, watchdog, cron and atd.

  • systemd(1) is a system and service manager for Linux operating systems.
  • systemctl(1) may be used to introspect and control the state of the systemd system and service manager.
  • systemd-analyze(1) may be used to determine system boot-up performance statistics and retrieve other state and tracing information from the system and service manager.

cgroups[edit]

Unified-hierarchy cgroups will be accessible exclusively by systemd through systemd-nspawn(1)

Because systemd tracks processes using the Linux kernel's cgroups instead of process identifiers (PIDs), daemons cannot "escape" systemd, not even by double-forking.

Systemd not only uses cgroups, but also augments them with systemd-nspawn(1) and machinectl(1), two utility programs to facilitate the creation and management of software containers.[7]

cgroups interface[edit]

Since version 205, systemd offers ControlGroupInterface, an API to the Linux kernel cgroups.[8] The Linux kernel cgroups are adapted to support kernfs,[9] and are being modified to support a unified hierarchy.[10]

logind[edit]

In version 30, systemd-logind was integrated, a tiny daemon that manages user logins and seats in various ways. systemd-logind is an integrated login manager that offers multiseat improvements and replaces ConsoleKit, which is no longer maintained.[11][12] For X11 display managers the switch to logind requires a minimal amount of porting.[13]

  • loginctl(1) may be used to introspect and control the state of the login manager systemd-logind.
  • logind.conf(5) – the journal service configuration file configures various parameters of the systemd login manager.

journald[edit]

systemd-journald is a daemon doing event logging; its logfile is a binary file. The system administrator may choose whether to log system events with systemd-journald or syslog-ng or rsyslog.

  • journalctl(1) may be used to query the contents of the systemd(1) journal as written by systemd-journald.
  • journald.conf(5) – the journal service configuration file configures various parameters of the systemd journal service

networkd[edit]

In version 209, networkd was integrated, which provides abilities for systemd to perform various network configurations; as of this version, support is limited to statically assigned addresses and basic support for bridging configuration.[14][15][16][17][18]

udevd[edit]

In April 2012, the source tree for udev (a device manager for the Linux kernel, which handles the /dev directory and all user space actions when adding/removing devices, including firmware loading) was merged into the systemd source tree.[19][20]

GNOME integration[edit]

In the interest of enhancing the interoperability between systemd and the GNOME desktop environment, systemd coauthor Lennart Poettering asked the GNOME Project to consider making systemd an external dependency of GNOME 3.2.[21]

In November 2012, the GNOME Project concluded that basic GNOME functionality should not rely on systemd.[22] However, GNOME 3.8 introduced a compile-time choice between the logind and ConsoleKit API, the former being provided at the time only by systemd. Ubuntu did provide a logind binary that is separate from the rest of systemd, but this became a de facto dependency of GNOME on systemd for most Linux distributions. The developers of Gentoo Linux also attempted to adapt these changes in OpenRC[clarification needed][citation needed], but the implementation contained too many bugs, causing the distribution to mark systemd as a dependency of GNOME.[23][24]

GNOME has further integrated logind.[25] As of Mutter version 3.13.2, logind is a dependency for Wayland sessions.[26] There are plans to replace gnome-session with systemd, but systemd would not be running as PID 1 and gnome-session would remain available on non-Linux systems.

Reception[edit]

Linus Torvalds has expressed reservations about the attitude of a key developer of systemd towards users and bug reports.[27] Theodore Ts'o has also expressed reservations about the systemd philosophy and the attitudes of two key developers.[28]

In a 2012 interview, Slackware's founder Patrick Volkerding also expressed reservations about the systemd architecture:[29]

Concerning systemd, I do like the idea of a faster boot time (obviously), but I also like controlling the startup of the system with shell scripts that are readable, and I'm guessing that's what most Slackware users prefer too. I don't spend all day rebooting my machine, and having looked at systemd config files it seems to me a very foreign way of controlling a system to me, and attempting to control services, sockets, devices, mounts, etc., all within one daemon flies in the face of the UNIX concept of doing one thing and doing it well.

In January 2013, Lennart Poettering attempted to address concerns about systemd in a blog post called The Biggest Myths.[30]

A highly extensive debate occurred on the Debian mailing list among the Technical Committee between October 2013 and February 2014[31] concerning what init system to use as the default in Debian 8 "jessie", culminating in a decision in favor of systemd. The debate was widely publicized[32][33] and had multiple tense points, and the debate is still going on after the decision on the Debian mailing list among its vast users. Shortly after Debian's decision, Mark Shuttleworth announced on his blog that Ubuntu would be following through as well,[34] despite earlier comments describing systemd as "hugely invasive and hardly justified".[35]

Eric S. Raymond declined to comment on systemd at first, but stated, "I'm aware there’s a controversy."[36] Then in a March 2014 interview on Slashdot, he expressed some concerns about the goals and architecture of systemd:[37]

I want to study it carefully because I'm a bit troubled by what I hear about the feature set and the goals. From that, I fear it may be one of those projects that is teetering right at the edge of manageable complexity – OK as long as an architect with a strong sense of design discipline is running things, but very prone to mission creep and bloat and likely to turn into a nasty hairball over the longer term.

In late April, a campaign to boycott systemd was launched;[38] their website http://boycottsystemd.org lists various reasons against its adoption.[39]

In an August 2014 article published in InfoWorld, Paul Venezia writes about the systemd controversy, and attributes the controversy to violation of the Unix philosophy, and to "enormous egos who firmly believe they can do no wrong."[40] The article also characterizes the architecture of systemd as more similar to that of Microsoft Windows software:[40]

While systemd has succeeded in its original goals, it's not stopping there. systemd is becoming the Svchost of Linux – which I don't think most Linux folks want. You see, systemd is growing, like wildfire, well outside the bounds of enhancing the Linux boot experience. systemd wants to control most, if not all, of the fundamental functional aspects of a Linux system – from authentication to mounting shares to network configuration to syslog to cron.

Adoption[edit]

In May 2011, Fedora became the first major Linux distribution to enable systemd by default.[41] As of August 2014, Slackware does not support or use systemd, but Slackware's lead Patrick Volkerding has not ruled out the possibility of switching to it.[42] Most distributions allow the sysadmin to continue to use other init systems; only the default init system (for new installs) was changed. Switching the init system is usually possible by installing the appropriate packages and rebooting.

Major Linux distributions that adopted systemd
Linux distribution Date added to software repository[a] Enabled by default? Date released as default
Ångström[43] Yes
Arch Linux January 2012[44] Yes October 2012[45]
CoreOS July 2013 Yes[46] October 2013 (v94.0.0)[47]
Debian GNU/Linux[48] April 2012 Default for Debian 8 "Jessie"[b] not yet released
Fedora May 2011 (v15)[51] Yes May 2011 (v15)
Frugalware Linux August 2011 (v1.5)[52] Yes August 2011 (v1.5)
Gentoo Linux [c] 2011[55][56][57] No[d]
Mageia May 2012 (v2.0)[58] Yes May 2012 (v2.0)
NixOS January 2013[59] Yes February 2013 (v1.4)
OpenELEC May 2014 (v4.0)[60] Yes May 2014 (v4.0)
openSUSE March 2011 (v11.4)[61] Yes September 2012 (v12.2)[62]
Red Hat Enterprise Linux June 2014 (v7.0)[63] Yes June 2014 (v7.0)
Sabayon Linux August 2013 (v13.08)[64] Yes August 2013 (v13.08)
Tizen 2012[65] Yes 2012
Ubuntu[e] April 2013 (v13.04)[67] Planned[50] not yet released

Graphical frontends[edit]

Apart from the official systemd frontend named systemd-ui, a frontend for KDE is also available.

systemd-ui[edit]

Screenshot of systemd-ui, a GTK+-based frontend for systemd.

Systemd-ui, also known as systemadm, is a simple GTK+-based graphical front-end for systemd.[68] It provides a simple user interface to manage services and a graphical agent to request passwords from the user. As of 2014 the systemadm program has received little development or maintenance in the last few years, because development focus has shifted to command-line tools like systemctl and systemd-analyze.

Kcmsystemd[edit]

Kcmsystemd is a graphical systemd frontend for the KDE desktop environment. It integrates into the KDE's system settings window, allowing monitoring and controlling of systemd services, as well as graphical editing of configuration files.

See also[edit]

Notes[edit]

  1. ^ Dates are for the general availability release.
  2. ^ The Debian Technical Committee voted to make systemd the default system management daemon for Linux in the "jessie" release.[49] As a result, Ubuntu founder Mark Shuttleworth announced that Ubuntu would migrate towards it from its self-developed competitor Upstart for a future release, in order to maintain consistency with the distribution that Ubuntu is based upon.[50]
  3. ^ systemd is supported in Gentoo as an alternative to OpenRC, the default init system[53] for those who "want to use systemd instead, or are planning to use Gnome 3.8 and later (which requires systemd)"[54]
  4. ^ As of 2014, Gentoo requires systemd when selecting the GNOME profile or installing GNOME 3.
  5. ^ Ubuntu's development documentation offers instructions on how to use systemd as an experimental option.[66]

References[edit]

  1. ^ a b README, systemd (freedesktop.org), retrieved 2012-09-09 
  2. ^ "[systemd-devel] [ANNOUNCE] systemd 216". freedesktop.org. 2014-08-19. Retrieved 2014-08-20. 
  3. ^ systemd, Analysis Summary (Ohloh), retrieved 2011-06-16 
  4. ^ a b Lennart Poettering (2012-04-21), systemd Status Update, retrieved 2012-04-28 
  5. ^ Lennart Poettering, Kay Sievers, Thorsten Leemhuis (2012-05-08), Control Centre: The systemd Linux init system, The H, archived from the original on 14 October 2012, retrieved 2012-09-09 
  6. ^ "[Phoronix] Systemd Dreams Up New Feature, Makes It Like Cron". Phoronix.com. 2013-01-28. Retrieved 2014-01-22. 
  7. ^ Jake Edge (2013-11-07). "Creating containers with systemd-nspawn". LWN.net. Retrieved 2014-07-30. 
  8. ^ http://www.freedesktop.org/wiki/Software/systemd/ControlGroupInterface/
  9. ^ "cgroup: convert to kernfs". 2014-01-28. 
  10. ^ "cgroup: prepare for the default unified hierarchy". 2014-03-13. 
  11. ^ ConsoleKit official website
  12. ^ "systemd-logind.service". Freedesktop.org. Retrieved 2014-02-17. 
  13. ^ "How to hook up your favorite X11 display manager with systemd". Freedesktop.org. 
  14. ^ "Networking in +systemd - 1. Background". 2013-11-27. Retrieved 2014-02-22. 
  15. ^ "Networking in +systemd - 2. libsystemd-rtnl". 2013-11-27. Retrieved 2014-02-22. 
  16. ^ "Networking in +systemd - 3. udev". 2013-11-27. Retrieved 2014-02-22. 
  17. ^ "Networking in +systemd - 4. networkd". 2013-11-27. Retrieved 2014-02-22. 
  18. ^ "Networking in +systemd - 5. the immediate future". 2013-11-27. Retrieved 2014-02-22. 
  19. ^ Sievers, Kay, The future of the udev source tree, linux-hotplug mailing list, retrieved 2013-05-22 
  20. ^ Sievers, Kay, Commit importing udev into systemd, systemd (freedesktop.org), retrieved 25 May 2012 
  21. ^ Lennart Poettering (2011-05-18), systemd as an external dependency, desktop-devel mailing list (GNOME), retrieved 2011-05-26 
  22. ^ Frederic Peters (2011-11-04), 20121104 meeting minutes, GNOME release-team mailing list, retrieved 2013-01-14 
  23. ^ Vitters, Olav. "GNOME and logind+systemd thoughts". Retrieved 24 April 2014. 
  24. ^ "GNOME 3.10 arrives with experimental Wayland support". ZDNet. Retrieved 24 April 2014. 
  25. ^ "GNOME initiatives: systemd". Retrieved 2014-05-01. 
  26. ^ "Mutter 3.13.2: launcher: Replace mutter-launch with logind integration". 2014-05-19. Retrieved 2014-05-28. 
  27. ^ "Linux-Kernel Archive: Re: [RFC PATCH] cmdline: Hide "debug" from /proc/cmdline". 2 April 2014. Retrieved 8 July 2014. 
  28. ^ "A realization that I recently came to while discussing the whole systemd...". 31 March 2014. Retrieved 8 July 2014. 
  29. ^ "Interview with Patrick Volkerding of Slackware". Linuxquestions.org. 2012-06-07. Retrieved 2014-03-19. 
  30. ^ Poettering, Lennart (2013-01-26). "The Biggest Myths". 
  31. ^ "#727708 - tech-ctte: Decide which init system to default to in Debian.". 2013-10-25. Retrieved 2014-09-14. 
  32. ^ "Which init system for Debian?". 2013-11-05. Retrieved 2014-09-14. 
  33. ^ "Debian Still Debating Systemd Vs. Upstart Init System". Phoronix.com. 2013-12-30. Retrieved 2014-09-14. 
  34. ^ "Losing graciously". 2014-02-14. Retrieved 2014-09-14. 
  35. ^ "Quantal, raring, saucy...". 2013-10-18. Retrieved 2014-09-14. 
  36. ^ Eric S. Raymond (2014-02-15). "Namedropping "ESR"". Retrieved 2014-05-19. 
  37. ^ "Interviews: ESR Answers Your Questions". Slashdot.org. 2014-03-10. Retrieved 2014-03-19. 
  38. ^ "Boycott Systemd.org". Retrieved 2014-09-14. 
  39. ^ "Is systemd as bad as boycott systemd is trying to make it?". LinuxToday. Retrieved 2014-09-22. 
  40. ^ a b Paul Venezia (2014-08-18). "Systemd: Harbinger of the Linux apocalypse". Retrieved 2014-09-20. 
  41. ^ F15 one page release notes, fedoraproject.org, 2001-05-24 
  42. ^ "I'm back after a break from Slackware: sharing thoughts and seeing whats new!". Linuxquestions.org. Retrieved 2014-03-14. 
  43. ^ Matt Richardson. "Creating Ångström System Services". 
  44. ^ "svntogit/packages.git - Git clone of the 'packages' repository". Web interface to the Arch Linux git repositories. 2012-01-12. 
  45. ^ "systemd is now the default on new installations". Arch Linux. 
  46. ^ CoreOS's init system, CoreOS Inc, retrieved 2014-02-14 
  47. ^ "Releases: v94.0.0". "coreos/manifest". github.com. October 3, 2013. Retrieved September 22, 2014. 
  48. ^ "systemd". Debian Wiki. Retrieved 2011-07-21. 
  49. ^ Bdale Garbee (2014-02-11). "Bug#727708: call for votes on default Linux init system for jessie". 
  50. ^ a b Mark Shuttleworth (2014-02-14). "Blog Archive » Losing graciously". markshuttleworth.com. Retrieved 2014-02-14. 
  51. ^ D. J. Walker-Morgan (2011-05-24), Fedora 15's Lovelock released, The H, archived from the original on 2 August 2011, retrieved 2012-08-22 
  52. ^ Phayz (2012-01-17), Review of 2011, Frugalware Project, retrieved 2012-08-22 
  53. ^ "systemd". 
  54. ^ "Installing the Gentoo Base System § Optional: Using systemd". 
  55. ^ Comment #210, systemd – bug #318365 (Gentoo's Bugzilla), retrieved 2011-07-05 
  56. ^ systemd, Gentoo's Documentation, retrieved 2011-07-05 
  57. ^ systemd, Gentoo wiki, retrieved 2012-08-26 
  58. ^ Fabian Scherschel (2012-05-23), Mageia 2 arrives with GNOME 3 and systemd, The H, archived from the original on 8 December 2013, retrieved 2012-08-22 
  59. ^ Eelco Dolstra (2013-01-21), [Nix-dev] Systemd branch merged, retrieved 2014-08-20 
  60. ^ OpenELEC 4.0 released, 2014-06-10 
  61. ^ Directory view of the 11.4 i586 installation showing presence of the systemd v18 installables, 2011-02-23, retrieved 2013-09-24 
  62. ^ "OpenSUSE: Not Everyone Likes SystemD". Phoronix. "The recently released openSUSE 12.2 does migrate from SysVinit to systemd" 
  63. ^ Red Hat Unveils Red Hat Enterprise Linux 7, 2014-06-10 
  64. ^ lxnay (2013-08-12). "Press Release: Sabayon 13.08". Sabayon. Retrieved 2014-01-22. 
  65. ^ Mikko Ylinen (2012-05-09). "Tizen IVI Architecture". Retrieved 2014-10-20. 
  66. ^ systemd - An alternative boot manager, Ubuntu Wiki, retrieved 2013-06-24 
  67. ^ "Package Search Results - systemd". ubuntu.com. Retrieved 2014-02-17. 
  68. ^ "Details of package systemd-ui in Debian "Jessie" 8". Debian. Retrieved 2014-07-31. 

External links[edit]