VoidLinux
Void是基于内核独立开发的通用操作系统。其特色在于自研了一款二进制/源代码混合式包管理系统XBPS,这使得用户能快速安装、更新、移除软件,或者是借助XBPS从源码直接生成软件。该发行版对Raspberry Pi单板计算机(armv6和armv7)提供了支持,采用了每日更新的滚动式开发模式,对OpenBSD旗下LibreSSL软件的集成,以及名为runit的原生init系统。没有使用systemd的控制组件。其命名的关键字Void来源于C语言的关键修饰字,无实际的意义。
Void is a general purpose operating system, based on the monolithic Linux kernel. Its package system allows you to quickly install, update and remove software; software is provided in binary packages or can be built directly from sources with the help of the XBPS source packages collection.
它不基于 Debian、Arch 或 Fedora,而是完全独立构建,拥有自研的包管理器、固执地使用 runit 作为 init 系统,并提供了 musl libc 这一轻量级 C 库选项。是一款为有经验用户打造的、高度自洽且极具魅力的独立发行版;是一个独立的、滚动发布的Linux发行版,从零开始构建,而不是作为一个分支,其重点是稳定性。此外Void还有几个独特的功能:
1、XBPS软件包管理器的速度快,由内部自主开发,在安装更新时执行检查,以确保库不会更改为不兼容的版本,从而打破原有系统的依赖关系。该软件使用Scratch开发。
2、musl libc专注于标准遵从性和正确性,拥有一流的支持。这使我们能够静态地为musl系统构建某些组件,这在glibc系统上是没有过的。
3、runit用于init(启动引导)和服务管理。这允许Void支持musl作为第二个libc选项,这是采用systemd的系统中是不可能的。这个决策的副作用是有一个干净高效的核心系统,以及一个小的代码库。
4、Void是在少数开发人员的业余时间开发的,通常认为它足够稳定,可以日常使用。开发者认为这样做是为了好玩,希望其工作对其他人有用。
其官方提供了比较详细的参考文档。
Void Linux 凭什么让人着迷
一、缘起:独立的“反叛者”
Void Linux 由西班牙开发者 Juan Romero Pardines (xtraeme) 在 2008 年创建。最初是为测试自制包管理器 XBPS 而诞生的一个试验场,后来逐渐发展为功能完备的发行版。项目几经波折,创始人曾一度离开,现在由充满热情的社区维护。其设计哲学极为清晰:
• 简洁而不简陋:系统基础极简,但没有剥离到像 Alpine 那样必须用 busybox 的程度,完整的 coreutils、bash/dash 等都具备,开箱即用性远超最小化系统。
• 稳定滚动:采用滚动更新模型,软件包保持较新,但不会无脑追新。维护者会在上游发布后经过基本测试再推送,力求在“Arch 的激进”与“Debian 的保守”之间取得平衡。
• 独立与自建:不依附于任何大发行版。核心组件均为自研(XBPS)或选择最小依赖的外部工具(runit),避免了陷入 systemd 生态或其他庞大依赖链。
• 给用户选择权:最突出的就是提供 glibc 和 musl 两种 C 库的完整分支,同时对多种架构支持极好(x86_64、i686、ARM 系列、甚至 PPC 等)。
二、核心组件深度解读
1. XBPS:被低估的极速包管理器
XBPS (X Binary Package System) 是 Void 的魂。它由 xtraeme 从头编写,包含一套二进制包管理工具集:xbps-install、xbps-query、xbps-remove 等,以及从源码编译的构建系统 xbps-src。
• 速度惊人:得益于优秀的 C 语言实现和精简的元数据结构,XBPS 的查询、依赖计算和安装速度在主流包管理器中属于第一梯队,明显快于 apt/dnf,与 pacman 相当甚至在某些操作上更快。
• 事务与依赖处理:XBPS 可以“部分升级”单个包,且会自动检测版本冲突和缺失依赖,一旦发现问题会阻止操作并给出明确提示,不会让系统陷入半破碎状态。这比 Arch 官方不推荐部分升级、而 Debian 过于保守的方式都灵活且安全。它还有一个 xbps-pkgdb 可以检测和修复包数据库的一致性问题。
• 二进制与源码融合的生态:官方仓库软件数量约 13000 左右,包含日常使用的主流桌面、开发工具和服务器软件。那些无法进入官方仓库的软件(如许可证问题、小众软件)则存在于 void-packages 这个巨大的源码模板仓库中。你可以像使用 AUR 一样,用 xbps-src 从模板编译并打包安装。而且 void-packages 支持交叉编译,在 CI 中会构建大量包并提供二进制缓存,体验远胜纯源码编译的发行版。
• 仓库结构清晰:分为 main、nonfree(闭源驱动等)、multilib(32 位兼容库)和 debug。镜像站虽不如大发行版多,但全球有几台主力镜像和 CDN,速度尚可。
2. runit:极简主义的 init 与服务监督
Void 抛弃了 systemd,选择了 runit——一个只有几千行代码的 init 方案。runit 负责 PID 1 的三大阶段(系统初始化、运行服务、重启或关机),其核心是“进程监督”。
• 工作原理:每个服务对应一个目录(如 /etc/sv/sshd),目录内有一个可执行的 run 脚本。启用服务只需在 /var/service/ 下建立一个指向该服务目录的符号链接,瞬间生效。关闭服务就删除软链接。
• 极低开销:每个被监督的服务会 fork 一个 runsv 进程,但其内存占用极小。整个启动过程并行且极快,从内核加载完到登录提示符常常只需 1-2 秒。
• 日志透明:runit 推荐使用 svlogd 或自建的日志服务,输出均为纯文本,可任意用 grep 等工具处理,彻底告别二进制日志的困扰。
• 手写脚本的快乐与负担:大部分基础服务(dhcpcd、NetworkManager、cron、socklog 等)官方都提供了现成的服务脚本。但如果你需要管理很冷门的守护进程,可能需要自己写一个几行的 run 脚本。这既是自由的体现,也是对用户 Unix 功底的小考验。
3. musl libc:轻量与安全的另一面
Void 是少数完整支持 musl libc 的桌面/服务器通用发行版。musl 代码量少、静态链接友好、对内存分配有优化,尤其适合容器、嵌入式和追求极致安全的场景。在实际桌面体验中,musl 版本的系统空闲内存比 glibc 版本低 30-50MB,程序启动迅速。
然而,代价是兼容性。任何依赖 glibc 特有行为或符号的软件都会出问题:NVIDIA 官方闭源驱动完全不可用,Wine/Steam 运行 3D 游戏困难,部分电子应用(Electron)需特殊处理,甚至一些第三方监控代理也无法运行。因此 musl 分支更适合服务器、开发/容器环境,或有意避开这些闭源生态的用户。日常桌面使用,Void 的 glibc 版本依然是稳妥之选。
三、深度体验测评
安装:无图形界面,但足够清晰
Void 提供带有 ncurses 界面的安装程序,引导你完成键盘布局、网络、分区、文件系统、用户创建等步骤。也支持完全手动 void-installer 或从命令行一步步配置。全盘加密(LUKS)、LVM、UEFI 等都有良好支持。Live 镜像提供 Xfce、MATE 等多种桌面环境的预构建版,非常方便预览。
难度定位:安装比 Manjaro/Ubuntu 难,比 Gentoo 容易得多,与 Arch 的命令行安装难度持平,但交互界面更友好些。
日常维护:省心与需要留心的平衡
系统更新只需一条命令:sudo xbps-install -Su。在长期使用中更新翻车次数比 Arch 略少。维护者在推送大的变更(如 icu、openssl 版本跳)时一般会通过 /etc/xbps.d 或新闻公告引导。偶尔需要手动干预解决文件冲突,通常用 xbps-remove -o 清理孤儿包,xbps-pkgdb 检测损坏即可。
内核管理是亮点:可以同时安装 linux(主线)、linux-lts(长期支持)等多个版本,它们会并存于 grub 菜单,升级新内核后如果出问题可以随时回退旧内核启动,不需要额外操作。
桌面与软件生态
在一台 X86_64 笔记本上安装了 Void glibc 版,搭配 Xfce 桌面。初始安装后,内存占用约 350MB,登陆后空闲约 200MB,反应极其敏捷。驱动方面,Intel/AMD 开源显卡开箱即用,NVIDIA 可通过启用 nonfree 仓库安装 nvidia 驱动包(仅限 glibc 版),并运行 nvidia-xconfig 即可,但无法像一些大发行版那样“一键安装并自动启用 optimus”等。
办公、图像处理、编程工具链(GCC、Python、Node.js、Go、Rust)包版本都很新。Firefox、LibreOffice、GIMP 等大软件稳定跟随上游。
当软件不在仓库时:
• 优先使用 xbps-src 从 void-packages 编译。比如我编译了 neovim-nightly 和某个小众窗口管理器,过程简单,依赖自动解析。
• Flatpak 作为极好补充。Void 对 Flatpak 支持良好,通过 Flathub 可以获得丰富桌面应用,包括 Spotify、Discord 等闭源软件,这是回避软件包不足的推荐方案。
• Distrobox 可以无缝运行其他发行版的容器,甚至用 Arch 容器里的 AUR 软件,生态几乎无短板。
游戏体验:在 glibc 下启用 multilib 仓库后,Steam 原生运行顺利,我测试了《空洞骑士》、《星露谷物语》等原生游戏以及 Proton 运行的《巫师3》,表现与 Arch 无异。但在 musl 系统上这些几乎无法直接运作,只能用 Flatpak 的 Steam 或 chroot。
服务管理:直觉式控制
想开启 SSH 服务?只需:
sudo ln -s /etc/sv/sshd /var/service/
服务瞬间启动,并会被 runit 自动监督——如果 SSH 进程意外退出,它会立刻拉起。查看服务状态用 sv status sshd。这种零抽象、直接操作文件系统的设计带来了绝对的透明和可控感。
社区与文档
Void Linux 的官方手册(docs.voidlinux.org)覆盖面广,从安装、包管理到常见配置都有涉及,但细节和故障排除案例远不如 Arch Wiki 丰富。Reddit 的 r/voidlinux 和 IRC 频道比较活跃,提问通常能得到有效回答。社区整体氛围务实、简洁,略带极客的冷傲。
四、优点与槽点总结
优点:
• 极速且可靠的包管理:XBPS 结合事务性检查和部分升级能力,体验顶级。
• runit 带来的简洁与健壮:系统启动极快,服务管理透明,无庞杂的依赖体系。
• 独立滚动,稳定可控:在不牺牲新软件的情况下保持了较好的稳定性。
• musl/glibc 双轨制:提供了独特的 C 库选择自由。
• 轻量与性能:对老旧硬件或期望纯净环境的用户十分友好。
• 出色的架构支持:在树莓派等 ARM 设备上表现极佳。
槽点:
• 软件绝对数量偏少:即使有 void-packages,相比 AUR 仍显单薄,且某些商业软件不提供支持。
• 硬件兼容性:闭源驱动(如某些无线网卡、NVIDIA 双显卡切换)配置比主流发行版繁琐。
• 文档深度不足:遇到冷门问题时可能需要自行探索或深入源码。
• 商业生态缺失:没有企业支持,无法运行依赖 systemd 的商业应用(如某些安全套件,但可通过容器缓解)。
• musl 的桌面局限:无法直接使用大型游戏、闭源应用,更多是服务器或极客的实验田。
五、适合谁
它并非为 Linux 新手准备。它最适合的人群画像如下:
• 喜欢 Arch 的滚动和包构建理念,但想避开 systemd,又不想折腾 Gentoo 编译的控制狂。
• 追求系统底层纯粹、厌恶依赖臃肿,并有能力手写服务脚本的极简主义者。
• 需要在服务器或嵌入式环境运行轻量 musl 系统的开发者。
• 渴望深入了解 Linux 启动、包管理细节的进阶学习者。
如果习惯“下一步-完成”安装、重度依赖商业闭源软件、或者需要完整开箱即用的硬件驱动支持的用户,Void 可能会给你带来挫败感。然而一旦你跨过了它故意抬高的那一点点门槛,会发现一个异常稳固、敏捷、且由你完全掌控的系统。Void Linux 不追热点,不唱高调,它只是安静而强悍地存在着,成为独立发行版版图上一块闪亮的拼图。
最新版本:20240314
2024年3月发布了最新的镜像版本,标记为20240314,已经被提升到当前状态,并且已经为爱好者和专业人士提供了。该发布的亮点之一是在XFCE镜像上引入了LightDM中的按键映射选择器。这使得用户可以在登录屏幕上选择他们首选的键盘布局,使得Void Linux更容易被全球用户使用。该更新通过在实时镜像中默认启用chrony NTP守护程序,为用户提供了更可靠的时间同步,进一步确保了准确的时间保持。
尽管这些是有用的改进,但更新的Void Linux发行版的主要重点在其他地方,特别是在SBC设备和特别是树莓派上。有鉴于此,它针对树莓派的镜像现在提供了增强的安装灵活性,支持在非SD卡存储上进行安装,无需手动配置。这一改进适用于支持从USB或NVMe存储启动的树莓派型号,极大地扩展了运行Void Linux的树莓派设备的潜在用例和性能。树莓派镜像上“/boot”分区的默认大小已从64MiB增加到256MiB,从而为内核和固件更新提供了更多空间,解决了以前版本中的一个常见限制。现到了锦上添花的时刻。对于树莓派5用户来说,Void Linux引入了对这款最新型号的专门支持,这是一项重大进展。也就是说,rpi-aarch64镜像现在与Pi 5兼容,使用户能够充分利用这种新硬件的全部功能。安装后用户可以选择切换到树莓派5特定的“rpi5-kernel”软件包,确保最佳性能和兼容性。
最新版本:202502
2025年2月的更新带来了一系列增强功能,并大幅扩展了对设备的支持,尤其是对 ARM 硬件的兼容性增强,这对于那些计划在最新 ARM 设备上部署 Void Linux 的用户来说,意义重大。
ARM 设备支持提升:本次更新的一个主要亮点是对多个流行的 arm64 UEFI 设备的支持。具体来说,Apple Silicon 机器、Lenovo ThinkPad X13s 笔记本和 Pinebook Pro 设备的用户将能够在没有太多障碍的情况下运行 Void Linux。对于其他运行不同 ARM 设备的用户,新发布的 aarch64 和 aarch64-musl live ISO 提供了良好的兼容性,前提是设备支持 UEFI 并且能够使用主线内核启动。这对于那些希望将 Void Linux 安装到新型 ARM 硬件的用户来说,提供了更大的灵活性和更好的支持。新的设备兼容性意味着更多的用户可以体验到 Void Linux 带来的轻量级和高效的操作体验。
重要的内核和软件更新:还包含了一些重要的内核和软件包更新。live ISO 镜像现在捆绑了 Linux 6.12 LTS 内核,这为系统提供了更高的稳定性和性能,特别是对新硬件的支持。而 Xfce 版本则包含了 Xfce 4.20,进一步优化了桌面环境的性能和外观。对于 Raspberry Pi 用户,Void Linux 现在已将 6.6 内核集成到其镜像中,从而提供了更好的性能和驱动支持。这将有助于提升 Raspberry Pi 上的整体体验,尤其是在执行计算密集型任务时。
新增工具和简化流程:另一个值得注意的新功能是 xgenfstab,一个来自 xtools 的全新脚本,旨在简化基于 chroot 安装中的 /etc/fstab 文件的生成。这个脚本的引入预计能够节省时间,并减少用户在多次安装过程中可能出现的错误,特别适合经常需要设置多个系统的用户。
修复和优化:还修复了一些重要问题。最值得关注的修复之一是解决了一个以前存在的问题——如果不应用 nomodeset,系统在使用 Nvidia 显卡时无法启动。这个问题现在已经得到修复,用户可以在新的引导加载程序菜单中选择 nomodeset,如果需要的话,还可以使用热键进行快捷导航。此外,Raspberry Pi 镜像的大小已经缩小,但在首次启动时会自动扩展根分区,使用 growpart 工具来适配存储设备的大小,从而避免了用户手动调整分区的麻烦。
安装和服务管理改进:更新后的 void-installer 使得用户能够在安装后通过专门的菜单启用所需的服务。这一改进使得服务管理更加直观和便捷,进一步提升了用户体验。
Raspberry Pi 新支持:最新的 rpi-aarch64 和 rpi-aarch64-musl 镜像现在可以无缝支持新发布的 Raspberry Pi 500 和 CM5。这个更新使得新款 Raspberry Pi 设备的用户能够更轻松地安装和运行 Void Linux,进一步拓展了其在嵌入式设备和开发板领域的应用。
2025年2月的发行版本带来了许多重要的更新和改进,尤其是在 ARM 设备支持、内核更新和软件包优化方面。这些变化使得 Void Linux 成为一个更强大、更灵活的操作系统,能够满足更多用户和硬件的需求。无论你是想在新款 ARM 设备上运行 Void Linux,还是在 Raspberry Pi 上体验更好的性能,这次更新都为你提供了更多的可能性。如果你对 Void Linux 感兴趣,别忘了查看官方发布公告以获取更多细节。
官方主页:
https://voidlinux.org/
https://github.com/void-linux