systemd
systemd是Linux电脑操作系统之下的一套中央化系统及设置管理程序(init),包括有、以及应用软件,由Lennart Poettering带头开发。其开发目标是提供更优秀的框架以表示系统服务间的依赖关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell的系统开销的效果,最终代替现在常用的System V与BSD风格init进程。
![]() | |
![]() 使用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日 |
当前版本 |
|
源代码库 | |
编程语言 | C |
操作系统 | Linux |
类型 | 系统软件 |
许可协议 | GNU LGPL 2.1+[2] |
网站 | freedesktop.org/.../systemd/ |
起源
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等组件。
- 引入localectl、timedatectl、hostnamectl等新命令,系统配置更方便。
从设计构思上说,由于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的发行版
- Fedora 15及后续版本[9][注 1]
- CentOS 7及后续版本。
- Mageia 2[11]
- Mandriva 2011[12]
- openSUSE 12.1 及后续版本[13]
- Red Hat Enterprise Linux 7及后续版本,包括其衍生品CentOS、Scientific Linux、Oracle Linux等
- Arch Linux在2012年10月13日将systemd-sysvcompat纳入base软件组,自此Arch Linux默认安装完即以systemd为init进程[14],同时也提供了与Arch自带启动脚本兼容用的systemd启动脚本包以方便用户,使用户能“开箱即用”[15]
- Chakra GNU/Linux,在2012.10的光盘映像档发布后缺省使用systemd。[16]
- Debian GNU/Linux,在2014年的技术委员会的init系统投票中决定在Debian 8“Jessie”中以Linux为内核的版本转换到systemd[17]。
- Ubuntu 15.04及后续版本[18]
- 可以使用systemd的发行版

systemd-manager
除此以外,systemd已由Lennart Poettering提请纳入GNOME 3.2的外部依赖关系列表[22],而这意味着所有使用GNOME的发行版都应该使用systemd,最低限度来说也必须将其作为配置选项之一。
注释
- 原先Fedora开发者打算在Fedora 14发布的时候便将systemd设为默认init进程,但最后还是推迟到Fedora 15才实行[10]。
参考文献
- . 2023年12月6日 [2023年12月6日].
- Lennart Poettering, , 2012-04-21 [2012-04-28], (原始内容存档于2015-08-27)
- Lennart Poettering, , systemd (0pointer), [2011-06-16], (原始内容存档于2017-01-15)
- Lennart Poettering, Kay Sievers, Thorsten Leemhuis, , 2012-05-08 [2012-06-10], (原始内容存档于2012-06-14)
- Lennart Poettering, , 2010-04-30 [2011-12-14], (原始内容存档于2017-01-15)
- Jake Edge, , 2011-07-27 [2011-12-14], (原始内容存档于2012-05-15)
- , 2011-07-05 [2011-12-14], (原始内容存档于2014-08-05)
- Richard Chirgwin, , 2015-04-27 [2016-05-23], (原始内容存档于2016-04-25)
- Dj Walker-Morgan, , The H, 2011-05-24 [2011-05-26], (原始内容存档于2012-07-12)
- Jake Edge, , LWN, 2010-08-25 [2011-02-03], (原始内容存档于2010-12-27)
- Fabian Scherschel, , The H, 2012-05-23 [2012-05-26], (原始内容存档于2013-12-08)
- Dj Walker-Morgan, , The H, 2011-08-29 [2011-08-29], (原始内容存档于2012-07-09)
- Chris von Eitzen, , The H, 2011-11-16 [2011-11-16], (原始内容存档于2012-04-20)
- Bächler, Thomas. . Arch Linux Official. [2012-10-16]. (原始内容存档于2012-10-15).
- , Archlinux Wiki, [2011-03-09], (原始内容存档于2011-05-23)
- , [2012-10-28], (原始内容存档于2013-03-15)
- Bdale Garbee. . LWN.net. [2014-02-12]. (原始内容存档于2014-02-22).
- seb128, , Ubuntu Wiki, 2015-04-24 [2015-04-29], (原始内容存档于2015-06-11)
- , systemd – bug #318365 (Gentoo's Bugzilla), [2011-07-05], (原始内容存档于2015-02-16)
- , Gentoo's Documentation, [2011-07-05], (原始内容存档于2011-06-26)
- , Gentoo wiki, [2012-08-26], (原始内容存档于2012-10-12)
- Lennart Poettering, , desktop-devel mailing list (GNOME), 2011-05-18 [2011-05-26], (原始内容存档于2014-10-10)
外部链接
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.