systemd 是不是管的太多了?

作為一個 init daemon 程序,把系統大部分都接管了,是否給予了用戶充分的自主權?


叫做systemd的有兩樣:既是一個init daemon,又是一個包含前者的自由軟體項目。

討論systemd是不是管得太多,先要明確是討論哪個。既然提問說「作為一個init daemon」,那麼明顯是前者了。所以只討論pid 1的那個systemd進程實現的功能。而systemd這個項目里的其它代碼,例如kdbus, udev, journald, networkd等等,都不是這個問題的討論對象。

好比openjdk包含jvm和編譯器,但是你不能問「openjdk作為一個vm還帶編譯器是不是管得太多了?」。

那麼systemd的pid 1都有什麼功能呢?

  1. 讀配置文件
  2. 接受systemctl客戶端的操縱
  3. 啟動/停止服務
  4. 計算服務間依賴
  5. 監聽各種事件(服務狀態改變/時鐘/文件系統/硬體...)
  6. 電源管理

作為init daemon我覺得這剛剛好,更談不上「把系統大部分都接管了」。傳統的init進程連「知道每個進程分別屬於那個服務」都做不到,管得顯然是太少。

當然,有人覺得以上部分功能(比如4)還可以進一步拆到別的進程,使得pid 1最小化。這主要是從提高系統可靠性/安全性角度考慮。但要指出的是這並不是Linux的設計思路,kernel本身有遠比systemd多的代碼運行在特權級別上。


你對他的定位理解有問題.

systemd的定位就是 "接管一切的init程序", 這時候你就會覺得很多東西他都沒接管, 做的實在是太少了...

我理想中的systemd, 是一個efi階段就有的程序, efi bootloader直接載入systemd, 然後systemd載入kernel, 這樣kernel panic之後還能回退到systemd, 去做log收集, 內存dump, 再次載入kernel(不需要再經歷一次bios自檢).

順便你對自主權的理解也有問題. 你完全可以在cmdline裡面指定init=xxx, 你的電腦, 你自己想用啥就用啥, 這還不夠自主?


我還嫌他管太少了,一步到位多好,省的到處找東西


Init 是不是管的太少了?


systemd的開發方式屬於「不管優劣,先造出來再說」。常有吞掉其他項目的傾向。

首要作者Lennart Poettering,有意見你可以直接找他:

poettering (Lennart Poettering)

Lennart Poettering


不是。

誰跟你說 systemd 是 init daemon 了?人家是 system and service manager。


就是原來的init,它不管誰管。。


跟minix的 reincarnation server 很想


個人感覺一個也不多,甚至希望它再接管一些內容


推薦閱讀:

如何說服Linus Torvalds用Go語言完全重寫Kernel 5.0版本?
出於學習目的想安裝 Linux 系統(最好也在 C 盤),應該如何安裝?
linux在系統調用進入內核時,為什麼要將參數從用戶空間拷貝到內核空間?不能直接訪問,或是使用memcpy嗎?非要使用copy_from_user才行嗎?
Linux開發入門需要具備哪些條件?
linux系統哪個版本好?

TAG:Linux | ArchLinux | Linux發行版 | systemd |