开发者 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 人的团队管理(不包括发送更新和没有提交访问权限的人)。
NixOS 将很快成为基于 nix 包管理器的具有 20 年历史的 Linux 发行版。它提供了一种新的系统管理方法,基于可重现的构建和声明性配置,用户基本上可以在配置文件中定义您的计算机应该如何配置(包、服务、名称、用户等)并“构建”要配置的系统本身,如果用户在另一台计算机上共享此配置文件,应该能够重现完全相同的系统。
在 NixOS 中,软件包没有被安装在标准的文件层次结构中,每个包文件都存储在专用目录,用户配置文件由符号链接和许多环境变量组成,以允许程序查找库或依赖项。
性能
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 网站上也有一些指南和手册,但它们要么是多余的,要么没有真正描述如何解决实际问题。
至于 OpenBSD,其网站为部分使用案例提供了简单的"FAQ",然后所有系统及其内部都在写得很好的手册页中提供了详细说明。用户一开始可能会觉得不友好或复杂,但只要尝到了 OpenBSD 手册页带来的甜头,在看其他文档时就会很容易感到失望。如果用户必须为某些依赖于基本系统组件( 非软件包)的任务设置 OpenBSD 系统,用户可以仅使用手册页离线完成。
作者提到,OpenBSD 不是一个可以在各种论坛或 github gists 上找到其文档的系统,而在 NixOS 上他却经常有这种感觉 。
贡献情况
NixOS 采用了现代的贡献系统,它依赖于 GitHub 和机器人自动对贡献进行许多检查,帮助贡献者快速检查他们的工作,而不需要“浪费”时间来阅读每一个提交的代码。
在 OpenBSD 中,开发者有关修改代码的讨论都是在邮件列表完成,只在人类之间进行。因此这种方式的扩展性不够好,但人与人之间的接触会比机器人给出更好的解释。当然前提是这些工作是有趣的,且有同伴愿意为此付出时间和精力,所以也会出现永远得不到反馈的情况。
结论
作者的评价是,他无法指出某个系统比另一个更好,也不能说某个系统在一项任务上做得绝对更好。
他对 OpenBSD 的热爱来自于它的小社区——由喜欢从事不同工作的人组成。他知道 OpenBSD 如何工作,当出现问题时可以很容易调试。因为这个系统一直保持着相对的简单,当硬件被支持时,它就能正常运行。
对于 NixOS 他也十分喜欢,因为这是一个具有冒险精神的系统,它提供了一种作者认为是计算的未来的新体验(事务更新、可重复性),但这也使它难以理解和调试变得非常复杂。
本文转自OSCHINA
本文标题:浅评:OpenBSD vs NixOS
本文地址:https://www.oschina.net/news/193048/openbsd-vs-nixos