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) 

外部連結

編輯

參見

編輯