systemd
Linux的init系統與系統服務管理程式
systemd是Linux電腦作業系統之下的一套中央化系統及設置管理程式(init),包括有常駐程式、函式庫以及應用軟件,由Lennart Poettering帶頭開發。其開發目標是提供更優秀的框架以表示系統服務間的依賴關係,並依此實現系統初始化時服務的並列啟動,同時達到降低Shell的系統開銷的效果,最終代替現在常用的System V與BSD風格init程式。
原作者 | 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日 |
目前版本 | 252(2022年10月31日 | )
原始碼庫 | |
程式語言 | C |
作業系統 | Linux |
類型 | 系統軟件 |
許可協定 | GNU LGPL 2.1+[1] |
網站 | systemd |
起源
編輯systemd這一名字源於Unix中的一個慣例:在Unix中常以「d」作為系統常駐程式(英語:daemon,亦稱後台行程)的字尾標識。除此以外,systemd亦是借代英文術語D體系,而這一術語即是用於描述一個人具有快速地適應環境並解決困難的能力[3]。
設計
編輯與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[4]。有鑑於此,考慮到kFreeBSD分支的軟件源無法納入systemd,為與其他分支保持一致,Debian開發者盡力避免納入systemd[5]。但Lennart Poettering本人對此並不在意,並稱「Debian GNU/kFreeBSD不過是玩具系統」[6]。但Debain 8.0 Jessie開始以systemd取代sysvinit。[7]。
應用
編輯systemd已納入眾多Linux發行版的軟件源中,以下簡表:
- 預設init程式為systemd的發行版
- Fedora 15及後續版本[8][註 1]
- CentOS 7及後續版本。
- Mageia 2[10]
- Mandriva 2011[11]
- openSUSE 12.1 及後續版本[12]
- Red Hat Enterprise Linux 7及後續版本,包括其衍生品CentOS、Scientific Linux、Oracle Linux等
- Arch Linux在2012年10月13日將systemd-sysvcompat納入base軟件組,自此Arch Linux默認安裝完即以systemd為init程式[13],同時也提供了與Arch內建啟動指令碼相容用的systemd啟動指令碼包以方便用戶,使用戶能「開箱即用」[14]
- Chakra GNU/Linux,在2012.10的光碟映像檔發佈後預設使用systemd。[15]
- Debian GNU/Linux,在2014年的技術委員會的init系統投票中決定在Debian 8「Jessie」中以Linux為核心的版本轉換到systemd[16]。
- Ubuntu 15.04及後續版本[17]
- 可以使用systemd的發行版
除此以外,systemd已由Lennart Poettering提請納入GNOME 3.2的外部依賴關系列表[21],而這意味着所有使用GNOME的發行版都應該使用systemd,最低限度來說也必須將其作為組態選項之一。
註釋
編輯參考文獻
編輯- ^ 1.0 1.1 Lennart Poettering, systemd Status Update, 2012-04-21 [2012-04-28], (原始內容存檔於2015-08-27)
- ^ Lennart Poettering, FAQs, systemd (0pointer), [2011-06-16], (原始內容存檔於2017-01-15)
- ^ Lennart Poettering, Kay Sievers, Thorsten Leemhuis, Control Centre: The systemd Linux init system, 2012-05-08 [2012-06-10], (原始內容存檔於2012-06-14)
- ^ Lennart Poettering, systemd FAQ, 2010-04-30 [2011-12-14], (原始內容存檔於2017-01-15)
- ^ Jake Edge, Debian debates systemd, 2011-07-27 [2011-12-14], (原始內容存檔於2012-05-15)
- ^ Un entretien avec Lennart Poettering), 2011-07-05 [2011-12-14], (原始內容存檔於2014-08-05)
- ^ Richard Chirgwin, Debian ships new 'Jessie' release with systemd AND sysvinit, 2015-04-27 [2016-05-23], (原始內容存檔於2016-04-25)
- ^ Dj Walker-Morgan, Fedora 15's Lovelock released, The H, 2011-05-24 [2011-05-26], (原始內容存檔於2012-07-12)
- ^ Jake Edge, systemd and Fedora 14, LWN, 2010-08-25 [2011-02-03], (原始內容存檔於2010-12-27)
- ^ Fabian Scherschel, Mageia 2 arrives with GNOME 3 and systemd, The H, 2012-05-23 [2012-05-26], (原始內容存檔於2013-12-08)
- ^ Dj Walker-Morgan, Mandriva 2011 arrives with systemd, The H, 2011-08-29 [2011-08-29], (原始內容存檔於2012-07-09)
- ^ Chris von Eitzen, openSUSE 12.1 arrives with systemd and Btrfs, The H, 2011-11-16 [2011-11-16], (原始內容存檔於2012-04-20)
- ^ Bächler, Thomas. systemd is now the default on new installations. Arch Linux Official. [2012-10-16]. (原始內容存檔於2012-10-15).
- ^ systemd, Archlinux Wiki, [2011-03-09], (原始內容存檔於2011-05-23)
- ^ Full switch to Systemd with Claire-2012.10 ISO released today, [2012-10-28], (原始內容存檔於2013-03-15)
- ^ Bdale Garbee. The Debian technical committee vote concludes. LWN.net. [2014-02-12]. (原始內容存檔於2014-02-22).
- ^ seb128, VividVervet/ReleaseNotes, Ubuntu Wiki, 2015-04-24 [2015-04-29], (原始內容存檔於2015-06-11)
- ^ Comment #210, systemd – bug #318365 (Gentoo's Bugzilla), [2011-07-05], (原始內容存檔於2015-02-16)
- ^ systemd, Gentoo's Documentation, [2011-07-05], (原始內容存檔於2011-06-26)
- ^ systemd, Gentoo wiki, [2012-08-26], (原始內容存檔於2012-10-12)
- ^ Lennart Poettering, systemd as an external dependency, desktop-devel mailing list (GNOME), 2011-05-18 [2011-05-26], (原始內容存檔於2014-10-10)
外部連結
編輯- 官方網站
- systemd, 0pointer, [2012-06-10], (原始內容存檔於2017-01-15)
- systemd project, Fedora, [2012-06-10], (原始內容存檔於2012-05-21)
- The road forward for systemd, LWN, [2012-06-10], (原始內容存檔於2012-10-21)
- cgit, freedesktop, [2012-06-10], (原始內容存檔於2012-06-20)