淺評:OpenBSD vs NixOS
開發(fā)者 Solène Rapenne 是一名 OpenBSD 維護(hù)者,并且也喜歡使用 Linux,尤其是 NixOS 發(fā)行版——他認(rèn)為這是一款與眾不同,有別于其他 Linux 發(fā)行版的系統(tǒng)。Solène 在自己的電腦配置了兩塊 SSD,分別用來安裝這兩款系統(tǒng),以便根據(jù)正在做的任務(wù)或者所希望使用的系統(tǒng)從其中一個(gè)切換到另一個(gè)。
Solène 主力使用的操作系統(tǒng)是 OpenBSD,他將所有數(shù)據(jù)都存放在上面。不過由于 NixOS 和 OpenBSD 之間缺乏可互操作、方便使用的文件系統(tǒng),在不使用提供共同協(xié)議的網(wǎng)絡(luò)存儲(chǔ)的情況下,很難在兩者之間共享數(shù)據(jù)。
近日他發(fā)表了關(guān)于 OpenBSD 和 NixOS 的對比文章。對比維度包括:性能、硬件支持、軟件生態(tài)、網(wǎng)絡(luò)堆棧、維護(hù)情況、文檔和項(xiàng)目貢獻(xiàn)情況等。
系統(tǒng)簡介
OpenBSD 是 NetBSD 的分支,已誕生了 25 年,它充滿了歷史,是一款穩(wěn)定的系統(tǒng)。OpenBSD 也是開發(fā) OpenSSH 或 tmux 的地方。它是一個(gè)具有自己的內(nèi)核和驅(qū)動(dòng)程序的 BSD 系統(tǒng)——與 Linux 無關(guān),但支持運(yùn)行可以在 Linux 上的大多數(shù)知名開源程序,這些程序通常以軟件包的形式提供(例如 GIMP、Libreoffice、Firefox、Chromium 等...)。
整個(gè) OpenBSD 系統(tǒng)(內(nèi)核、驅(qū)動(dòng)程序、用戶空間和軟件包)由大約 150 人的團(tuán)隊(duì)管理(不包括發(fā)送更新和沒有提交訪問權(quán)限的人)。
NixOS 將很快成為基于 nix 包管理器的具有 20 年歷史的 Linux 發(fā)行版。它提供了一種新的系統(tǒng)管理方法,基于可重現(xiàn)的構(gòu)建和聲明性配置,用戶基本上可以在配置文件中定義您的計(jì)算機(jī)應(yīng)該如何配置(包、服務(wù)、名稱、用戶等)并“構(gòu)建”要配置的系統(tǒng)本身,如果用戶在另一臺(tái)計(jì)算機(jī)上共享此配置文件,應(yīng)該能夠重現(xiàn)完全相同的系統(tǒng)。
在 NixOS 中,軟件包沒有被安裝在標(biāo)準(zhǔn)的文件層次結(jié)構(gòu)中,每個(gè)包文件都存儲(chǔ)在專用目錄,用戶配置文件由符號(hào)鏈接和許多環(huán)境變量組成,以允許程序查找?guī)旎蛞蕾図?xiàng)。
性能
OpenBSD 缺乏用于編碼/解碼視頻的硬件加速,因此在處理視頻時(shí)速度會(huì)比較慢。除了視頻處理,OpenBSD 在使用交互桌面和 I/O 方面的速度也比較慢。單看性能對比,NixOS 的優(yōu)勢和它使用 Linux 內(nèi)核密切相關(guān),畢竟 Linux 內(nèi)核有大量全職開發(fā)者、以及開源貢獻(xiàn)者來為其優(yōu)化性能。
雖然 OpenBSD 比 Linux 慢,但對于大多數(shù)需要完成的任務(wù),它足以滿足要求。
硬件支持
在硬件支持方面,OpenBSD 不及 NixOS 和 Linux 內(nèi)核所支持的設(shè)備豐富。在 NixOS 上,用戶可以使用雷電接口,可以使用外接 NVIDIA 顯卡,但 OpenBSD 不支持這種接口,也沒有 NVIDIA 顯卡驅(qū)動(dòng)程序(作者認(rèn)為這主要是 NVIDIA 不提供文檔的鍋)。
但是,OpenBSD 幾乎不需要任何配置即可使用。只要硬件支持, 它就可以運(yùn)行。
此外,OpenBSD 還可以在多種采用舊架構(gòu)的計(jì)算機(jī)上運(yùn)行,如 i386、舊的 Apple Power PC、RISC、ARM,而 NixOS 只專注于現(xiàn)代硬件,如 Amd64 和 Arm64。
軟件生態(tài)
OpenBSD 和 NixOS 都提供了大量軟件包,但相對而言,NixOS 的選擇更多。當(dāng)然這不是說 OpenBSD 的表現(xiàn)很糟糕,因?yàn)?OpenBSD 大多數(shù)軟件包都可以正常使用,而且通常會(huì)提供最新版本。作者還表示,他曾多次發(fā)現(xiàn)某個(gè)軟件包在 OpenBSD 中可以正常使用,但在 NixOS 卻不能。
他還認(rèn)為,OpenBSD 軟件包的質(zhì)量略高于 NixOS,前者的問題比較少(NixOS 軟件包有時(shí)會(huì)有問題,可能與其不尋常的文件結(jié)構(gòu)有關(guān)),而且有時(shí)會(huì)打上補(bǔ)丁,以提供更好的默認(rèn)配置(例如禁用某些 GUI 應(yīng)用程序中默認(rèn)打開的網(wǎng)絡(luò)訪問)。
OpenBSD 和 NixOS 都是每隔六個(gè)月發(fā)布新版本,但 OpenBSD 只為其最新版本提供安全修復(fù),NixOS 則為用戶提供了更多的更新包。
作者認(rèn)為,在 OpenBSD 和 NixOS 上更新軟件包都很容易,但相對來說,用戶更容易找到在 OpenBSD 上當(dāng)前使用的版本。他表示這可能是因?yàn)樽约簩?nix shell 的了解不夠,但事實(shí)是,他很難確定是否真的在使用一個(gè)已經(jīng)更新的程序。
網(wǎng)絡(luò)堆棧
作者認(rèn)為,OpenBSD 在網(wǎng)絡(luò)堆棧方面表現(xiàn)出色。它的防火墻 Packet Filter 方便易用、配置簡單且高效。OpenBSD 提供了諸如路由表/域之類的機(jī)制,用于將一個(gè)網(wǎng)絡(luò)接口分配給整個(gè)分離的網(wǎng)絡(luò),允許將程序/用戶可靠地公開到特定的接口,但他還沒有找到如何在 Linux 上實(shí)現(xiàn)這些功能。此外,OpenBSD 還附帶了所有必需的守護(hù)進(jìn)程來管理其基本系統(tǒng)中的網(wǎng)絡(luò) (dhcp, slaacd, rpki, email, http, NAT, ftp, tftp...)
與 Linux 相比,OpenBSD 處理網(wǎng)絡(luò)吞吐量時(shí)的性能可能低于標(biāo)準(zhǔn),但對普通用戶或服務(wù)器而言問題不大,這主要取決于所使用的網(wǎng)卡及其驅(qū)動(dòng)程序支持。
作者表示自己不喜歡在 Linux 上折騰網(wǎng)絡(luò),原因是它非常復(fù)雜,當(dāng)他拔下筆記本電腦上的 rj45 線纜時(shí),不知道如何聚合 wifi 和以太網(wǎng)接口,以透明地從一個(gè)接口切換到另一個(gè)接口。但這些操作在 OpenBSD 上很容易實(shí)現(xiàn)(作者不喜歡在移動(dòng)筆記本電腦時(shí)丟失所有 TCP 連接)。
系統(tǒng)維護(hù)
OpenBSD 每六個(gè)月發(fā)布一次新版本,升級(jí)系統(tǒng)十分便捷,大多數(shù)極端情況都記錄在升級(jí)指南中。作者表示,當(dāng)他需要更新 OpenBSD 系統(tǒng)時(shí),不會(huì)擔(dān)心出問題。至于 NixOS,對他來說也容易更新,以及保持系統(tǒng)干凈,他在升級(jí)時(shí)從未遇到任何問題,如果出現(xiàn)問題,也可以回滾到以前的版本。
因此,雖然兩款系統(tǒng)都有不同的方法,不過都運(yùn)作良好。
文檔
作者認(rèn)為,雖然 NixOS 的文檔非常龐大,但經(jīng)常無法提供有用的信息。NixOS 文檔有一個(gè)名為“configuration.nix”的手冊頁,提供了所有的系統(tǒng)參數(shù)選項(xiàng),但它是由 NixOS 代碼生成的,除了描述 API 之外,通常缺乏解釋。NixOS 網(wǎng)站上也有一些指南和手冊,但它們要么是多余的,要么沒有真正描述如何解決實(shí)際問題。
至于 OpenBSD,其網(wǎng)站為部分使用案例提供了簡單的"FAQ",然后所有系統(tǒng)及其內(nèi)部都在寫得很好的手冊頁中提供了詳細(xì)說明。用戶一開始可能會(huì)覺得不友好或復(fù)雜,但只要嘗到了 OpenBSD 手冊頁帶來的甜頭,在看其他文檔時(shí)就會(huì)很容易感到失望。如果用戶必須為某些依賴于基本系統(tǒng)組件( 非軟件包)的任務(wù)設(shè)置 OpenBSD 系統(tǒng),用戶可以僅使用手冊頁離線完成。
作者提到,OpenBSD 不是一個(gè)可以在各種論壇或 github gists 上找到其文檔的系統(tǒng),而在 NixOS 上他卻經(jīng)常有這種感覺 。
貢獻(xiàn)情況
NixOS 采用了現(xiàn)代的貢獻(xiàn)系統(tǒng),它依賴于 GitHub 和機(jī)器人自動(dòng)對貢獻(xiàn)進(jìn)行許多檢查,幫助貢獻(xiàn)者快速檢查他們的工作,而不需要“浪費(fèi)”時(shí)間來閱讀每一個(gè)提交的代碼。
在 OpenBSD 中,開發(fā)者有關(guān)修改代碼的討論都是在郵件列表完成,只在人類之間進(jìn)行。因此這種方式的擴(kuò)展性不夠好,但人與人之間的接觸會(huì)比機(jī)器人給出更好的解釋。當(dāng)然前提是這些工作是有趣的,且有同伴愿意為此付出時(shí)間和精力,所以也會(huì)出現(xiàn)永遠(yuǎn)得不到反饋的情況。
結(jié)論
作者的評價(jià)是,他無法指出某個(gè)系統(tǒng)比另一個(gè)更好,也不能說某個(gè)系統(tǒng)在一項(xiàng)任務(wù)上做得絕對更好。
他對 OpenBSD 的熱愛來自于它的小社區(qū)——由喜歡從事不同工作的人組成。他知道 OpenBSD 如何工作,當(dāng)出現(xiàn)問題時(shí)可以很容易調(diào)試。因?yàn)檫@個(gè)系統(tǒng)一直保持著相對的簡單,當(dāng)硬件被支持時(shí),它就能正常運(yùn)行。
對于 NixOS 他也十分喜歡,因?yàn)檫@是一個(gè)具有冒險(xiǎn)精神的系統(tǒng),它提供了一種作者認(rèn)為是計(jì)算的未來的新體驗(yàn)(事務(wù)更新、可重復(fù)性),但這也使它難以理解和調(diào)試變得非常復(fù)雜。
本文轉(zhuǎn)自O(shè)SCHINA
本文標(biāo)題:淺評:OpenBSD vs NixOS
本文地址:https://www.oschina.net/news/193048/openbsd-vs-nixos