Systemd這個有爭議的項目正在接管你身邊的Linux發行版
Systemd 是目前為止在Linux平台上最有爭議的項目之一。它到底有多大的爭議?它的爭議大到systemd的開發者之一Lennart Poettering 聲稱有人使用比特幣僱傭職業殺手要幹掉他。但是還是有比較理智的做法的,有一個抵制systemd網站在技術角度上提出了抵制systemd的原因。
如此強烈的抵制也反映了systemd的成功。它已經被或將要被Fedroa、OpenSUSE、Ubuntu、Debian、Arch Linux等眾多發行版採用。隨著時間推移,GNOME越來越依賴它,Debian回歸GNOME的原因之一就是它採用了systemd。systemd無處不在!
那麼如此激烈的爭論到底是關於什麼呢?讓我們近距離觀察這場戰爭。
Systemd是一個全新的init
Systemd的核心是取代老舊的SysV init。init用來初始化你的操作系統,當你啟動系統時,init負責載入需要的驅動,激活你的網路鏈接,啟動眾多的系統服務,最後進入圖形登陸界面。而SysV init 是一個老舊的系統,它基本上僅運行/etc/init.d目錄下的一些腳本。
Systemd是一個現代技術,用以取代老舊以及粗糙的SysV init。它可以在接收到事件響應時啟動相關服務;比如,當你接入了一個USB印表機,systemd可以在接收到設備接入響應時啟動列印服務。當它接收到某個網路埠的連接請求時,它可以啟動在此埠上監聽的服務並且傳遞這個連接。
獲取更多關於SysV init 與 systemd的信息,可以參考Jorgen Schäfer的 「Why systemd?」
但是systemd遠不止此
systemd的反對者之中也有部分人認為SysV太老了,應該被取代掉。但是批評systemd的人發現Systemd是一個巨大的項目,其中包括了很多其他的功能。它是一個軟體套件,而不僅僅是一個init。
維基共享資源 systemd 結構圖解
Systemd包括用於管理用戶登陸的守護進程logind,還包括journald,並且journald 頗有爭議的使用了二進位形式保存系統日誌而不是以文本形式。systemd也採用了udev的思想及代碼,它對/dev/目錄下的虛擬設備文件進行管理,並且處理設備接入或推出時所產生的事件。除了這些還有很多其他的,如:systemd還包括了cron風格的任務調度器與網路守護進程networkd等等。
抨擊者認為systemd不是類UNIX風格
多數的抱怨源於人們認為systemd項目太大以至於超出了它的工作範圍,並且它從Linux系統接管的部分太多了。不要感到驚奇,systemd的抵制活動是以下面的抱怨開始的:
"systemd文件是一大堆的複雜的高度耦合的二進位組成的,這違反了UNIX哲學:『做一件事情,並把它做好』。它超出了一個init程序的職責範圍,因為它還有電源管理,設備管理,掛載管理,cron(定時執行工具),磁碟加密,socket介面/inetd,syslog,網路配置,登陸/會話管理,文件預讀,GPT分區發現,容器註冊,hostname/locale/time管理,mDNS/DNS-SD等功能,它將Linux控制台以及其他的一些功能都包裝在一個程序裡面。
那麼,systemd是好是壞?
到這裡,我判斷一下,到底誰是正確的。
systemd最初的想法是非常好的。Linux需要一個新的東西來替換老的 SysV init 和沉重的 SysV init 腳本,這個新的程序應該是靈活的,現代化的系統守護進程,它可以響應更多類型,並且智能化的管理眾多的守護進程。然而,事實上systemd好像成為了一個僅依賴Linux核心的完全統一的系統層。
但是,儘管Linux是一個社區開發項目,但它不是為PC世界的專欄作家或者是一群網路評論者提供的,這些人都不能決定它的進化與發展。只有那些親手貢獻代碼以及全身心投入的人才有這個資格。巧的是,Linux發行版以及那些參與者好像大部分都傾向與systemd。
'我對於systemd本身並沒有很強烈的個人看法。我與核心開發人員爭論過它的bug與兼容性,並且我認為它的一些設計是愚蠢的(比如二進位的日誌),但這只是細節,不是大問題。
如果 Linus Torvalds 對於systemd的設計沒有什麼反對意見,那麼說明它可能還是不錯的。如果你想平靜的看下為什麼Linux發行版要使用systemd的話,我推薦這篇文章,Debian's systemd discussion document。
你是如何看systemd的,可以在評論回復!但是請文明討論。
更新這篇文章以澄清之前的錯誤的消息,ubuntu 桌面版將在下一個版本中納入systemd。之前我們錯誤的認為ubuntu已經使用了systemd。
作者:Chris Hoffman 譯者:SPccman 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive