2019年3月26日

systemd介紹

前言:
這篇是之前針對systemd的研究。
systemd是Linux新的啟動管理器,專門用來取代init(SysV init),
但它和舊的init有非常大的差異性。

systemd介紹參考:

systemd的爭議:

systemd的大麻煩除了設定比較複雜外,
systemd本身包裹了非常多的系統服務,也相依了非常多的library和kernel功能,
從wiki上描述到,kFreeBSD無法納入就是個關鍵實例,
看看systemd的組件圖:
ad64a4bc-81c0-46d0-a7dd-2188ac58addb.jpg

光看組件圖就覺得非常複雜。

區分3部份來看這個組件圖:
1. Library
它相依了dbus、pam、crypt、audit、notify這些services library,
這些library實際上都還相依在更底層的library,
像dbus、pam、audit、notify這幾個都很不單純,本身都相依不少library。

2. Kernel
它直接使用了Linux Kernel中cgroup、autofs、dbus這幾個「Linux Kernel功能」,
光1和2就能知道為何GNU/kFreeBSD無法納入,
GNU/Debian考慮半天後,決定先用分支方式支援,
這擺明了就是Linux Only的設計阿.............
試問,FreeBSD如何支援cgroup?如何支援autofs?如何支援dbus?
重新實做會引用的License問題如何解決?

3. systemd內部管理器
systemd不只有原先init的功能,看看systemd Daemons,
就我目前的了解,它至少包含或取代了下列功能:
  • init
  • inetd
  • crontab
  • syslog
  • 網路管理ifupdown/NetworkManager
  • 系統時間、時區管理
  • 登入管理器/gdm

  • crontab部份參考:
如何使用 systemd 中的定時器

  • syslog部份:
它透過journald來取代rsyslog和syslog

  • 系統時間、時區管理:
如何在 systemd 下管理Linux系統的時間和日期

  • 網路管理:
參考:
嘗鮮: 新的網絡連接管理工具 systemd-networkd

  • systemd-network man page

  • ArchLinux systemd-networkd

  • Introduction to networkd, network management from systemd

  • 登入管理器
不熟,但應該就是logind搭配pam
參考:

systemd除了這些外,它將udev專案整個併入,也將dbus幾乎併入,
加上它侵入多數的Linux發行版本,systemd一統Linux指日可待。

4. Application
按前面參考的爭議提到,現在GNOME對systemd的依賴度越來越高,
Ubuntu 14.04的GNOME suspend動作,裡面很多都直接透過systemd進行處理。

當systemd往下吃掉低階系統服務(udev、dbus),再往下依賴Kernel,往上咬住桌面系統GNOME,
那未來Linux就只剩下systemd,FreeBSD也不用搞下去了。

因為systemd包山包海的特性,因此直接可以想到,它在各發行版不一定會是full support,
systemd本身是Fedora的開發專案,RedHat系列不用說,全包應該是正常的,
但Ubuntu自己也開發和主導了不少專案,中間就沒這麼單純了。
參考:

裡面給出了幾個發行版使用systemd的部份的參考連結。





沒有留言: