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