systemd

Linux的init系統與系統服務管理程式

systemdLinux电脑作业系统之下的一套中央化系统及设定管理程式(init),包括有守护进程程式庫以及应用软体,由Lennart Poettering英语Lennart Poettering带头开发。其开发目标是提供更优秀的框架以表示系统服务英语Service (systems architecture)间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell系统开销英语Computational overhead的效果,最终代替现在常用的System VBSD风格init程序。

systemd
使用systemd的Fedora 17启动信息
使用systemd的Fedora 17启动信息
原作者Lennart Poettering英语Lennart Poettering, Kay Sievers, Harald Hoyer, Daniel Mack, Tom Gundersen and David Herrmann
开发者Lennart Poettering, Kay Sievers, Harald Hoyer, Daniel Mack, Tom Gundersen, David Herrmann等人
首次发布2010年3月30日 (2010-03-30)
当前版本252(2022年10月31日
2年前
​(2022-10-31
源代码库 编辑维基数据链接
编程语言C
操作系统Linux
类型系统软件
许可协议GNU LGPL 2.1+[1]
网站systemd.io

目前绝大多数的Linux发行版都已采用systemd代替原来的System V

systemd在LGPL 2.1及其后续版本许可证下开源发布[1][2]

起源

编辑

systemd这一名字源于Unix中的一个惯例:在Unix中常以“d”作为系统守护进程(英语:daemon,亦称后台进程)的后缀标识。除此以外,systemd亦是借代英文术语D体系英语System D,而这一术语即是用于描述一个人具有快速地适应环境并解决困难的能力[3]

设计

编辑
 
systemd组件
 
专门由systemd所使用的统一层次结构控制组

System V风格init相比,systemd采用了以下新技术:

  • 将service(服务)、target(执行模式,类似于运行级别)、mount、timer、snapshot、path、socket、swap等称为Unit。比如,一个auditd服务(就是auditd.service)就是一个Unit,一个multi-user.target执行模式也是一个Unit。
  • 采用Socket激活式与D-Bus激活式服务,以提高相互依赖的各服务的并行运行性能;
  • cgroups代替进程ID来追踪进程,因此即使是两次fork之后生成的守护进程也不会脱离systemd的控制。
  • 用target代替System V的运行级别(Runlevel),比如,SystemD的graphical.target相当于System V的init 5,multi-user.target相当于System V的init 3。
  • 内建journald 日志管理系统。
  • 内建resolved、timesyncd、networkd等元件。
  • 引入localectltimedatectlhostnamectl等新命令,系统配置更方便。

从设计构思上说,由于systemd使用了cgroup与fanotify等组件以实现其特性,所以只适用于Linux[4]。有鉴于此,考虑到kFreeBSD分支的软件源无法纳入systemd,为与其他分支保持一致,Debian开发者尽力避免纳入systemd[5]。但Lennart Poettering本人对此并不在意,并称“Debian GNU/kFreeBSD不过是玩具系统”[6]。但Debain 8.0 Jessie开始以systemd取代sysvinit。[7]

应用

编辑

systemd已纳入众多Linux发行版的软件源中,以下简表:

默认init程序为systemd的发行版
可以使用systemd的发行版
 
systemd-manager

除此以外,systemd已由Lennart Poettering提请纳入GNOME 3.2的外部依赖关系列表[21],而这意味着所有使用GNOME的发行版都应该使用systemd,最低限度来说也必须将其作为配置选项之一。

注释

编辑
  1. ^ 原先Fedora开发者打算在Fedora 14发布的时候便将systemd设为默认init程序,但最后还是推迟到Fedora 15才实行[9]

参考文献

编辑
  1. ^ 1.0 1.1 Lennart Poettering, systemd Status Update, 2012-04-21 [2012-04-28], (原始内容存档于2015-08-27) 
  2. ^ Lennart Poettering, FAQs, systemd (0pointer), [2011-06-16], (原始内容存档于2017-01-15) 
  3. ^ Lennart Poettering, Kay Sievers, Thorsten Leemhuis, Control Centre: The systemd Linux init system, 2012-05-08 [2012-06-10], (原始内容存档于2012-06-14) 
  4. ^ Lennart Poettering, systemd FAQ, 2010-04-30 [2011-12-14], (原始内容存档于2017-01-15) 
  5. ^ Jake Edge, Debian debates systemd, 2011-07-27 [2011-12-14], (原始内容存档于2012-05-15) 
  6. ^ Un entretien avec Lennart Poettering), 2011-07-05 [2011-12-14], (原始内容存档于2014-08-05) 
  7. ^ Richard Chirgwin, Debian ships new 'Jessie' release with systemd AND sysvinit, 2015-04-27 [2016-05-23], (原始内容存档于2016-04-25) 
  8. ^ Dj Walker-Morgan, Fedora 15's Lovelock released, The H, 2011-05-24 [2011-05-26], (原始内容存档于2012-07-12) 
  9. ^ Jake Edge, systemd and Fedora 14, LWN, 2010-08-25 [2011-02-03], (原始内容存档于2010-12-27) 
  10. ^ Fabian Scherschel, Mageia 2 arrives with GNOME 3 and systemd, The H, 2012-05-23 [2012-05-26], (原始内容存档于2013-12-08) 
  11. ^ Dj Walker-Morgan, Mandriva 2011 arrives with systemd, The H, 2011-08-29 [2011-08-29], (原始内容存档于2012-07-09) 
  12. ^ Chris von Eitzen, openSUSE 12.1 arrives with systemd and Btrfs, The H, 2011-11-16 [2011-11-16], (原始内容存档于2012-04-20) 
  13. ^ Bächler, Thomas. systemd is now the default on new installations. Arch Linux Official. [2012-10-16]. (原始内容存档于2012-10-15). 
  14. ^ systemd, Archlinux Wiki, [2011-03-09], (原始内容存档于2011-05-23) 
  15. ^ Full switch to Systemd with Claire-2012.10 ISO released today, [2012-10-28], (原始内容存档于2013-03-15) 
  16. ^ Bdale Garbee. The Debian technical committee vote concludes. LWN.net. [2014-02-12]. (原始内容存档于2014-02-22). 
  17. ^ seb128, VividVervet/ReleaseNotes, Ubuntu Wiki, 2015-04-24 [2015-04-29], (原始内容存档于2015-06-11) 
  18. ^ Comment #210, systemd – bug #318365 (Gentoo's Bugzilla), [2011-07-05], (原始内容存档于2015-02-16) 
  19. ^ systemd, Gentoo's Documentation, [2011-07-05], (原始内容存档于2011-06-26) 
  20. ^ systemd, Gentoo wiki, [2012-08-26], (原始内容存档于2012-10-12) 
  21. ^ Lennart Poettering, systemd as an external dependency, desktop-devel mailing list (GNOME), 2011-05-18 [2011-05-26], (原始内容存档于2014-10-10) 

外部链接

编辑

参见

编辑