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) 

外部链接

编辑

参见

编辑