systemd

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

systemd
使用systemd的Fedora 17启动信息
使用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)
当前版本
  • 255 (2023年12月6日;稳定版本)[1]
源代码库
编程语言C
操作系统Linux
类型系统软件
许可协议GNU LGPL 2.1+[2]
网站freedesktop.org/.../systemd/

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

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

起源

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

设计

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[5]。有鉴于此,考虑到kFreeBSD分支的软件源无法纳入systemd,为与其他分支保持一致,Debian开发者尽力避免纳入systemd[6]。但Lennart Poettering本人对此并不在意,并称「Debian GNU/kFreeBSD不过是玩具系统」[7]。但Debain 8.0 Jessie开始以systemd取代sysvinit。[8]

应用

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

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

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

注释

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

参考文献

  1. . 2023年12月6日 [2023年12月6日].
  2. Lennart Poettering, , 2012-04-21 [2012-04-28], (原始内容存档于2015-08-27)
  3. Lennart Poettering, , systemd (0pointer), [2011-06-16], (原始内容存档于2017-01-15)
  4. Lennart Poettering, Kay Sievers, Thorsten Leemhuis, , 2012-05-08 [2012-06-10], (原始内容存档于2012-06-14)
  5. Lennart Poettering, , 2010-04-30 [2011-12-14], (原始内容存档于2017-01-15)
  6. Jake Edge, , 2011-07-27 [2011-12-14], (原始内容存档于2012-05-15)
  7. , 2011-07-05 [2011-12-14], (原始内容存档于2014-08-05)
  8. Richard Chirgwin, , 2015-04-27 [2016-05-23], (原始内容存档于2016-04-25)
  9. Dj Walker-Morgan, , The H, 2011-05-24 [2011-05-26], (原始内容存档于2012-07-12)
  10. Jake Edge, , LWN, 2010-08-25 [2011-02-03], (原始内容存档于2010-12-27)
  11. Fabian Scherschel, , The H, 2012-05-23 [2012-05-26], (原始内容存档于2013-12-08)
  12. Dj Walker-Morgan, , The H, 2011-08-29 [2011-08-29], (原始内容存档于2012-07-09)
  13. Chris von Eitzen, , The H, 2011-11-16 [2011-11-16], (原始内容存档于2012-04-20)
  14. Bächler, Thomas. . Arch Linux Official. [2012-10-16]. (原始内容存档于2012-10-15).
  15. , Archlinux Wiki, [2011-03-09], (原始内容存档于2011-05-23)
  16. , [2012-10-28], (原始内容存档于2013-03-15)
  17. Bdale Garbee. . LWN.net. [2014-02-12]. (原始内容存档于2014-02-22).
  18. seb128, , Ubuntu Wiki, 2015-04-24 [2015-04-29], (原始内容存档于2015-06-11)
  19. , systemd – bug #318365 (Gentoo's Bugzilla), [2011-07-05], (原始内容存档于2015-02-16)
  20. , Gentoo's Documentation, [2011-07-05], (原始内容存档于2011-06-26)
  21. , Gentoo wiki, [2012-08-26], (原始内容存档于2012-10-12)
  22. 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.