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的話,我推薦這篇文章,。
你是如何看systemd的,可以在評論回復!但是請文明討論。
更新這篇文章以澄清之前的錯誤的消息,ubuntu 桌面版將在下一個版本中納入systemd。之前我們錯誤的認為ubuntu已經使用了systemd。
作者:Chris Hoffman 譯者:SPccman 校對:wxy