systemd

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

systemd
使用systemd的Fedora 17启动信息
原作者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)
穩定版本
247
(2020年11月26日2020-11-26
源代码库
编程语言C
操作系统Linux
类型系統軟件
许可协议GNU LGPL 2.1+[1]
网站freedesktop.org/.../systemd/

目前絕大多數的Linux發行版都已採用systemd代替原來的System V

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

起源

systemd这一名字源于Unix中的一个惯例:在Unix中常以“d”作为系统守护进程英語:,亦称后台进程)的后缀标识。除此以外,systemd亦是借代英文术语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. Lennart Poettering, , 2012-04-21 [2012-04-28], (原始内容存档于2015-08-27)
  2. Lennart Poettering, , systemd (0pointer), [2011-06-16], (原始内容存档于2017-01-15)
  3. Lennart Poettering, Kay Sievers, Thorsten Leemhuis, , 2012-05-08 [2012-06-10], (原始内容存档于2012-06-14)
  4. Lennart Poettering, , 2010-04-30 [2011-12-14], (原始内容存档于2017-01-15)
  5. Jake Edge, , 2011-07-27 [2011-12-14], (原始内容存档于2012-05-15)
  6. , 2011-07-05 [2011-12-14], (原始内容存档于2014-08-05)
  7. Richard Chirgwin, , 2015-04-27 [2016-05-23], (原始内容存档于2016-04-25)
  8. Dj Walker-Morgan, , The H, 2011-05-24 [2011-05-26], (原始内容存档于2012-07-12)
  9. Jake Edge, , LWN, 2010-08-25 [2011-02-03], (原始内容存档于2010-12-27)
  10. Fabian Scherschel, , The H, 2012-05-23 [2012-05-26], (原始内容存档于2013-12-08)
  11. Dj Walker-Morgan, , The H, 2011-08-29 [2011-08-29], (原始内容存档于2012-07-09)
  12. Chris von Eitzen, , The H, 2011-11-16 [2011-11-16], (原始内容存档于2012-04-20)
  13. Bächler, Thomas. . Arch Linux Official. [2012-10-16]. (原始内容存档于2012-10-15).
  14. , Archlinux Wiki, [2011-03-09], (原始内容存档于2011-05-23)
  15. , [2012-10-28], (原始内容存档于2013-03-15)
  16. Bdale Garbee. . LWN.net. [2014-02-12]. (原始内容存档于2014-02-22).
  17. seb128, , Ubuntu Wiki, 2015-04-24 [2015-04-29], (原始内容存档于2015-06-11)
  18. , systemd – bug #318365 (Gentoo's Bugzilla), [2011-07-05], (原始内容存档于2015-02-16)
  19. , Gentoo's Documentation, [2011-07-05], (原始内容存档于2011-06-26)
  20. , Gentoo wiki, [2012-08-26], (原始内容存档于2012-10-12)
  21. Lennart Poettering, , desktop-devel mailing list (GNOME), 2011-05-18 [2011-05-26], (原始内容存档于2014-10-10)

外部链接

  • 官方网站
  • , 0pointer, [2012-06-10], (原始内容存档于2017-01-15)
  • , Fedora, [2012-06-10], (原始内容存档于2012-05-21)
  • , LWN, [2012-06-10], (原始内容存档于2012-10-21)
  • , freedesktop, [2012-06-10], (原始内容存档于2012-06-20)

参见

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.