淺評:OpenBSD vs NixOS

出品|開源中國

文|局長

開發者 Solène Rapenne 是一名 OpenBSD 維護者,並且也喜歡使用 Linux,尤其是 NixOS 發行版——他認為這是一款與眾不同,有別於其他 Linux 發行版的系統。Solène 在自己的電腦配置瞭兩塊 SSD,分別用來安裝這兩款系統,以便根據正在做的任務或者所希望使用的系統從其中一個切換到另一個。

Solène 主力使用的操作系統是 OpenBSD,他將所有數據都存放在上面。不過由於 NixOS 和 OpenBSD 之間缺乏可互操作、方便使用的文件系統,在不使用提供共同協議的網絡存儲的情況下,很難在兩者之間共享數據。

近日他發表瞭關於 OpenBSD 和 NixOS 的對比文章。對比維度包括:性能、硬件支持、軟件生態、網絡堆棧、維護情況、文檔和項目貢獻情況等。


系統簡介

OpenBSD 是 NetBSD 的分支,已誕生瞭 25 年,它充滿瞭歷史,是一款穩定的系統。OpenBSD 也是開發 OpenSSH 或 tmux 的地方。它是一個具有自己的內核和驅動程序的 BSD 系統——與 Linux 無關,但支持運行可以在 Linux 上的大多數知名開源程序,這些程序通常以軟件包的形式提供(例如 GIMP、Libreoffice、Firefox、Chromium 等…)。

整個 OpenBSD 系統(內核、驅動程序、用戶空間和軟件包)由大約 150 人的團隊管理(不包括發送更新和沒有提交訪問權限的人)。

  • OpenBSD 官方網站:https://www.openbsd.org/

NixOS 將很快成為基於 nix 包管理器的具有 20 年歷史的 Linux 發行版。它提供瞭一種新的系統管理方法,基於可重現的構建和聲明性配置,用戶基本上可以在配置文件中定義您的計算機應該如何配置(包、服務、名稱、用戶等)並“構建”要配置的系統本身,如果用戶在另一臺計算機上共享此配置文件,應該能夠重現完全相同的系統。

在 NixOS 中,軟件包沒有被安裝在標準的文件層次結構中,每個包文件都存儲在專用目錄,用戶配置文件由符號鏈接和許多環境變量組成,以允許程序查找庫或依賴項。

  • NixOS 官方網站:https://nixos.org/

性能

OpenBSD 缺乏用於編碼/解碼視頻的硬件加速,因此在處理視頻時速度會比較慢。除瞭視頻處理,OpenBSD 在使用交互桌面和 I/O 方面的速度也比較慢。單看性能對比,NixOS 的優勢和它使用 Linux 內核密切相關,畢竟 Linux 內核有大量全職開發者、以及開源貢獻者來為其優化性能。

雖然 OpenBSD 比 Linux 慢,但對於大多數需要完成的任務,它足以滿足要求。

硬件支持

在硬件支持方面,OpenBSD 不及 NixOS 和 Linux 內核所支持的設備豐富。在 NixOS 上,用戶可以使用雷電接口,可以使用外接 NVIDIA 顯卡,但 OpenBSD 不支持這種接口,也沒有 NVIDIA 顯卡驅動程序(作者認為這主要是 NVIDIA 不提供文檔的鍋)。

但是,OpenBSD 幾乎不需要任何配置即可使用。隻要硬件支持, 它就可以運行。

此外,OpenBSD 還可以在多種采用舊架構的計算機上運行,如 i386、舊的 Apple Power PC、RISC、ARM,而 NixOS 隻專註於現代硬件,如 Amd64 和 Arm64。

軟件生態

OpenBSD 和 NixOS 都提供瞭大量軟件包,但相對而言,NixOS 的選擇更多。當然這不是說 OpenBSD 的表現很糟糕,因為 OpenBSD 大多數軟件包都可以正常使用,而且通常會提供最新版本。作者還表示,他曾多次發現某個軟件包在 OpenBSD 中可以正常使用,但在 NixOS 卻不能。

他還認為,OpenBSD 軟件包的質量略高於 NixOS,前者的問題比較少(NixOS 軟件包有時會有問題,可能與其不尋常的文件結構有關),而且有時會打上補丁,以提供更好的默認配置(例如禁用某些 GUI 應用程序中默認打開的網絡訪問)。

OpenBSD 和 NixOS 都是每隔六個月發佈新版本,但 OpenBSD 隻為其最新版本提供安全修復,NixOS 則為用戶提供瞭更多的更新包。

作者認為,在 OpenBSD 和 NixOS 上更新軟件包都很容易,但相對來說,用戶更容易找到在 OpenBSD 上當前使用的版本。他表示這可能是因為自己對 nix shell 的瞭解不夠,但事實是,他很難確定是否真的在使用一個已經更新的程序。

網絡堆棧

作者認為,OpenBSD 在網絡堆棧方面表現出色。它的防火墻 Packet Filter 方便易用、配置簡單且高效。OpenBSD 提供瞭諸如路由表/域之類的機制,用於將一個網絡接口分配給整個分離的網絡,允許將程序/用戶可靠地公開到特定的接口,但他還沒有找到如何在 Linux 上實現這些功能。此外,OpenBSD 還附帶瞭所有必需的守護進程來管理其基本系統中的網絡 (dhcp, slaacd, rpki, email, http, NAT, ftp, tftp…)

與 Linux 相比,OpenBSD 處理網絡吞吐量時的性能可能低於標準,但對普通用戶或服務器而言問題不大,這主要取決於所使用的網卡及其驅動程序支持。

作者表示自己不喜歡在 Linux 上折騰網絡,原因是它非常復雜,當他拔下筆記本電腦上的 rj45 線纜時,不知道如何聚合 wifi 和以太網接口,以透明地從一個接口切換到另一個接口。但這些操作在 OpenBSD 上很容易實現(作者不喜歡在移動筆記本電腦時丟失所有 TCP 連接)。

系統維護

OpenBSD 每六個月發佈一次新版本,升級系統十分便捷,大多數極端情況都記錄在升級指南中。作者表示,當他需要更新 OpenBSD 系統時,不會擔心出問題。至於 NixOS,對他來說也容易更新,以及保持系統幹凈,他在升級時從未遇到任何問題,如果出現問題,也可以回滾到以前的版本。

因此,雖然兩款系統都有不同的方法,不過都運作良好。

文檔

作者認為,雖然 NixOS 的文檔非常龐大,但經常無法提供有用的信息。NixOS 文檔有一個名為“configuration.nix”的手冊頁,提供瞭所有的系統參數選項,但它是由 NixOS 代碼生成的,除瞭描述 API 之外,通常缺乏解釋。NixOS 網站上也有一些指南和手冊,但它們要麼是多餘的,要麼沒有真正描述如何解決實際問題。

  • NixOS 文檔:https://nixos.org/learn.html

至於 OpenBSD,其網站為部分使用案例提供瞭簡單的"FAQ",然後所有系統及其內部都在寫得很好的手冊頁中提供瞭詳細說明。用戶一開始可能會覺得不友好或復雜,但隻要嘗到瞭 OpenBSD 手冊頁帶來的甜頭,在看其他文檔時就會很容易感到失望。如果用戶必須為某些依賴於基本系統組件( 非軟件包)的任務設置 OpenBSD 系統,用戶可以僅使用手冊頁離線完成。

作者提到,OpenBSD 不是一個可以在各種論壇或 github gists 上找到其文檔的系統,而在 NixOS 上他卻經常有這種感覺 。

  • OpenBSD FAQ:https://www.openbsd.org/faq/index.html

  • OpenBSD 手冊頁:https://man.openbsd.org/

貢獻情況

NixOS 采用瞭現代的貢獻系統,它依賴於 GitHub 和機器人自動對貢獻進行許多檢查,幫助貢獻者快速檢查他們的工作,而不需要“浪費”時間來閱讀每一個提交的代碼。

在 OpenBSD 中,開發者有關修改代碼的討論都是在郵件列表完成,隻在人類之間進行。因此這種方式的擴展性不夠好,但人與人之間的接觸會比機器人給出更好的解釋。當然前提是這些工作是有趣的,且有同伴願意為此付出時間和精力,所以也會出現永遠得不到反饋的情況。

結論

作者的評價是,他無法指出某個系統比另一個更好,也不能說某個系統在一項任務上做得絕對更好。

他對 OpenBSD 的熱愛來自於它的小社區——由喜歡從事不同工作的人組成。他知道 OpenBSD 如何工作,當出現問題時可以很容易調試。因為這個系統一直保持著相對的簡單,當硬件被支持時,它就能正常運行。

對於 NixOS 他也十分喜歡,因為這是一個具有冒險精神的系統,它提供瞭一種作者認為是計算的未來的新體驗(事務更新、可重復性),但這也使它難以理解和調試變得非常復雜。

赞(0)