12k
All articles

5 款你可能没听说过的 Linux 发行版

比较五款较少人知的开发者 Linux 发行版:CachyOS、Bazzite、Nobara、Vanilla OS 和 Chimera Linux,了解驱动、更新与工具链差异。

OpenReplay Team
OpenReplay Team
5 款你可能没听说过的 Linux 发行版

对开发者来说,最好的 Linux 发行版,是能以最少折腾把工具链、容器和 GPU 驱动都搞定的那一款。CachyOS、Bazzite、Nobara、Vanilla OS 和 Chimera Linux 在这三方面各有不同的取舍。

大多数“最佳发行版”榜单其实都是游戏性能测评。它们告诉你帧率是多少,却不会告诉你某个周二早上,npm install、Docker 或者你的 IDE 能不能正常工作。

你的笔记本已经不需要和生产环境保持一致了,因为这件事现在由容器负责。于是,宿主机操作系统的选择就只取决于三件事:驱动、更新行为,以及工具的安装方式。本文就从这三个角度,考察五款知名度较低的发行版。Omarchy 和 Garuda Linux 已有专文介绍,这里不再赘述。

核心要点

  • CachyOS 是带有调优内核和 CPU 优化软件仓库的 Arch,因此 Arch 官方仓库、AUR 和 Arch Wiki 依然适用。
  • 在 Bazzite、Vanilla OS 这类不可变发行版上,宿主机软件包以分层方式叠加到只读镜像之上,而语言工具链则运行在与你共享主目录的容器中。
  • Nobara 是可写的 Fedora,预装了多媒体编解码器和 NVIDIA 驱动,因此 Fedora 文档和 dnf 使用习惯都可以沿用。
  • Chimera Linux 采用 musl、LLVM/Clang、FreeBSD 核心工具和 dinit,这意味着仅提供 glibc 版本的预编译二进制文件,在没有 glibc 容器的情况下可能无法运行。
  • 这些发行版都不会改变你的代码在生产环境中的运行平台。你的选择决定的是工具如何装到机器上,以及更新如何落地。

CachyOS:性能调优版 Arch

CachyOS 是一款基于 Arch 的滚动发行版。它与原版 Arch 有两点不同:一是 CachyOS 调优内核,默认使用经过调优的 EEVDF 调度器(BORE 等调度器可选);二是针对 x86-64-v3、x86-64-v4 以及 AMD Zen 4/5 编译的软件仓库。它适合本身就喜欢 Arch、又希望有人替自己把调优做好的开发者。

  • 软件包: Arch 官方仓库加上 AUR。冷门的 CLI 工具、语言服务器和小众 SDK,通常装一个包就能搞定。
  • 开工前的准备: 从仓库安装你的运行时,以及 Docker 或 Podman,没有任何障碍。
  • NVIDIA: Arch 的 NVIDIA 驱动打包方式和 Arch Wiki 的 NVIDIA 页面可以直接套用。
  • 作为工作机: 内核、Mesa 和工具链会持续更新,进行大版本升级之前,你需要先阅读官方新闻公告。

代价: 滚动发行版的日常维护。如果在交付截止日赶上一次有问题的更新,只能你自己修。

Bazzite:提供独立 NVIDIA 镜像的 Fedora Atomic

Bazzite 是一款不可变发行版,其基础系统是一个只读的 Fedora Atomic 镜像。它以整体为单位进行更新,回滚时只需引导进入上一个镜像即可。这意味着你不能像用 dnf 那样在全局安装开发工具。它适合希望机器状态始终保持一致、并且愿意在容器里工作的开发者。

  • 软件包: GUI 应用用 Flatpak,宿主机软件用 rpm-ostree 分层安装,工具链放在容器里。Bazzite 自带 Distrobox。如果你希望开箱即用 Docker,需要选择 Bazzite DX 变体,标准镜像并不包含。
  • 开工前的准备: 构建一个开发容器。
  • NVIDIA: Bazzite 提供 NVIDIA 专用镜像,在下载页面选择适合你的即可。
  • 作为工作机: 更新是原子化的,可以回滚,但你的主目录、容器和分层安装的软件包仍需你自己负责。

在不可变的 Fedora 系统上,你需要用 rpm-ostree 把宿主机级别的软件包叠加到镜像上,重启后才会生效。语言工具链则放进与主目录共享的 Distrobox 或 Toolbx 容器中:

rpm-ostree install zsh          # host layer, applied on next boot
systemctl reboot

distrobox create --name dev --image registry.fedoraproject.org/fedora:latest
distrobox enter dev
sudo dnf install nodejs gcc make   # inside the container only

rpm-ostree rollback             # revert to the previous deployment

在 dev 容器里安装的任何东西都不会进入宿主机镜像,删除容器即可将其彻底清除。

Bazzite 的只读基础系统会打破你的一些习惯。也许你平时习惯用 sudo 加文本编辑器解决问题,对文件权限与所有权也了如指掌。但在 Fedora Atomic 上,/usr 是只读的。/etc 仍然可写,不过每次更新到新镜像时,OSTree 都会把你的修改与新镜像进行合并。此外还有一个坑:以 Flatpak 打包的 IDE 运行在沙箱中,除非专门配置,否则它可能看不到容器里或宿主机上的编译器。

代价: 每安装一个工具,你都得先决定它应该放在宿主机上、容器里,还是用 Flatpak 安装。

Nobara:磨平了棱角的 Fedora

Nobara 就是普通的、可写的 Fedora,只是额外加入了多媒体编解码器、NVIDIA 驱动以及面向游戏的内核补丁。绝大多数 Fedora 文档和 dnf 使用习惯都能原样沿用。它由 GloriousEggroll 维护,适合那些厌倦了每次装完系统都要重新配置编解码器和驱动的 Fedora 用户。

  • 软件包: dnf、Flatpak 和 Fedora 生态,外加 Nobara 自己的软件仓库。
  • 开工前的准备: 几乎不需要。像在 Fedora 上一样安装运行时和容器引擎即可。
  • NVIDIA: 已预装,消除了 Fedora 首次启动时最常见的麻烦来源。
  • 作为工作机: 这是一个可变系统。你可以修改任何东西,也可能把任何东西搞坏。

代价: 项目规模比 Fedora 小。一旦出了问题,你不仅要排查上游,还要排查 Nobara 自己的补丁。

Vanilla OS:不可变且容器优先

Vanilla OS 保持基础系统不可变,并把软件安装移到了容器中。安装一个编译器时,你首先要决定的是把它放在哪个容器里,而不是从哪个仓库获取。它适合经常需要在同一台机器上使用来自多个发行版软件包的开发者。

  • 软件包: 宿主机由 ABRoot 管理,每次更新都会写入另一个根分区,并在下次重启时切换过去。Apx 负责管理基于其他发行版构建的容器,并将这些容器的包管理器暴露给宿主机使用。GUI 应用则交给 Flatpak。
  • 开工前的准备: 为每一类工具链创建一个 Apx 容器。
  • NVIDIA: 请查阅项目文档,确认对你的硬件的支持情况。
  • 作为工作机: 与 Bazzite 面临相同的不可变系统取舍,只不过用的是 Vanilla 自己的工具,而不是 rpm-ostree。

代价: Vanilla 专属的工具体系。Fedora Atomic 和 Arch 的文档无法一一对应地套用过来。

Chimera Linux:真正的异类

Chimera Linux 是一款独立的滚动发行版,尽可能地避开 GNU 组件。它使用 musl 而非 glibc,使用 FreeBSD 核心工具而非 GNU coreutils,以 LLVM/Clang 作为系统工具链,以 dinit 作为 init 系统。软件包通过 apk-tools 安装。它适合系统程序员,以及任何想要测试代码可移植性的人。

  • 软件包: apk 仓库。凡是依赖 Arch 或 Fedora 打包格式的东西,都需要借助容器。
  • 开工前的准备: 确认你的运行时能在 musl 上运行。
  • NVIDIA: 请查阅项目文档,确认 NVIDIA 支持情况。
  • 作为工作机: 为 GNU coreutils 编写的 Shell 脚本可能会出现异常,因为 BSD 工具的参数选项有所不同。

在 Chimera Linux 这样基于 musl 的发行版上,构建和运行你自己的代码不会有问题。但链接 glibc 的预编译二进制文件就不一样了:只发布 glibc 版本的厂商 CLI 工具和软件包,如果没有兼容层或 glibc 容器,可能根本无法运行。

代价: 生态层面的默认假设。整个软件世界发布的二进制文件,绝大多数都是针对 glibc 构建的。

哪款 Linux 发行版最适合开发者?

  • 如果你离不开 AUR,也不介意滚动更新, CachyOS 为你提供了已经调优好的 Arch。
  • 如果你想要一个稳定不变的系统,并且乐于在容器中进行开发, Bazzite 的镜像模型加上 Distrobox 就能满足需求。
  • 如果你已经熟悉 Fedora,只是想把 NVIDIA 驱动和编解码器的问题解决掉, Nobara 能让你的使用习惯保持不变。
  • 如果你经常需要在一台机器上使用来自多个发行版的软件包, Vanilla OS 可以把每套工具链放进各自独立的 Apx 容器中。
  • 如果你想要一个非主流系统来测试可移植性, Chimera 会把你代码中对 glibc 和 GNU 的所有隐含假设都暴露出来。

这些发行版都不会改变你的代码在生产环境中的运行平台。你的选择决定的是:工具链如何装到机器上、更新如何落地,以及在打开编辑器之前需要花多少功夫折腾驱动。找到与你情况相符的场景,把对应的发行版装到一个空闲分区上,并在正式切换之前,先在上面重建你当前项目的开发环境试一试。

常见问题

在 Bazzite 或 Fedora Atomic 上,每次执行 rpm-ostree install 都必须重启吗?

如果只是添加软件包,则不需要。默认情况下,所有 rpm-ostree 操作都是离线进行的,并在下次启动时生效;但 rpm-ostree install --apply-live(简写为 -A)可以将新分层安装的软件包立即应用到正在运行的系统上。实时应用仅适用于没有其他待处理变更的软件包添加操作。删除软件包仍然需要重启,而 rpm-ostree apply-live --reset 可以恢复到当前引导的系统树。

CachyOS 能在不支持 x86-64-v3 的旧 CPU 上运行吗?

可以。除了 x86-64-v3、x86-64-v4 和 Zen 4/5 版本之外,CachyOS 还保留了一个通用的 x86-64 仓库。在安装过程中,安装程序和仓库脚本会检测处理器支持的指令集级别,并为其选择最匹配的仓库层级。不支持 AVX2 的 CPU 会使用通用软件包,因此滚动更新的 Arch 基础系统和 CachyOS 工具依然可用。运行 /lib/ld-linux-x86-64.so.2 --help 即可查看你的 CPU 支持哪些级别。

在开发容器方面,Distrobox 和 Toolbx 有什么区别?

两者都会创建与宿主机共享主目录的长期运行容器。Toolbx 只能运行在 Podman 上,最适合搭配 Fedora 风格的镜像使用。Distrobox 则封装了 Podman 或 Docker,在两者都不可用时会回退到自己的 Lilipod 管理器,并且几乎可以运行任何发行版的镜像。在 Fedora Atomic 上使用 Fedora 容器,Toolbx 就够用了;如果你需要 Arch、Ubuntu 或 Alpine 的用户空间环境,例如要使用某个只提供 .deb 包的厂商工具,那么 Distrobox 更合适。

Flatpak 版的 VS Code 能使用安装在 Distrobox 中或宿主机上的编译器吗?

默认不能。Flathub 上的 VS Code 软件包运行在沙箱中,无法访问宿主机上安装的 SDK,因此 Distrobox 容器中的工具链或通过 rpm-ostree 分层安装的工具链对它都不可见。该软件包的说明中列出了三种解决办法:通过 flatpak-spawn --host 或 host-spawn 运行宿主机命令;将集成终端指向宿主机的 Shell;或者在沙箱内安装 Freedesktop SDK 扩展,例如 Go 或 .NET SDK。

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.