在一篇冗长的技术文章中, 伊奇·多赫蒂 (因领导 Solus 等项目和为 Clear Linux 做出贡献而闻名) 概述了 AerynOS 的理念和架构这个新项目旨在重新思考操作系统在基础设施即代码时代应该如何运作。
它不仅仅是 Linux 生态系统中的另一个发行版, AerynOS 是对现代操作系统的深刻重新构想。
从分销到基础设施
AerynOS 源于一个问题 挑衅: “如果操作系统的行为像现代基础设施一样会怎样?”。答案是一个从头开始构建的平台,不拖延传统发行版的遗留惯例,也不改变现有系统,AerynOS 从一个干净的基础开始,利用以前的经验并做出彻底的架构决策,以确保一致性、可逆性和结构简单性。
Ikey Doherty 在他的文章中提到 最引人注目的决定之一是采用 LLVM 工具链 而不是传统的GNU,默认使用libc++和compiler-rt。这种选择不仅是出于风格偏好,也是出于策略。 实现卓越的诊断和更高的便携性。尽管进行了此次升级,AerynOS 仍然致力于使用 glibc 作为其标准库,选择它而不是 musl 是因为它在多线程负载和要求苛刻的应用程序下具有卓越的性能。
除此之外,还提到 AerynOS 的核心理念之一是“无状态”: 没有软件包可以安装 /usr 之外的文件。 这种严格的划分将用户空间(/etc、/var)与系统空间分开,消除了合并冲突并促进了干净的升级。这个想法可以追溯到 Clear Linux,旨在强制执行合理的默认值并避免更灵活的系统经常引入的不必要的复杂性。
原子和可逆更新
AerynOS 使用全新的包管理系统,称为 Moss, 执行原子事务。每次更新都会使用来自重复数据删除存储的硬链接创建一个新的 /usr 树,并使用 renameat2() 以原子方式与当前树交换。该机制确保更新要么完全完成,要么根本不应用,从而避免中间状态。
启动管理也打破了传统。 得益于 blsforme 和 disks-rs 等工具,AerynOS 通过直接读取超级块动态生成内核命令行 文件系统,从而无需 root=。此外,每个核心都与其特定的事务相关联,从而方便从启动菜单进行系统回滚,并允许在 ESP 丢失时从头开始重建启动环境。
.stone 格式:一种打包软件的新方法
另一个关键组件是 .stone 格式,现代二进制包 设计具有版本独立性和高效率。每个 .stone 文件包含:
- 包文件的重复内容删除
- 哈希索引(XXH128,计划迁移到 Blake3)
- 目标文件系统的地图
- 类型元数据,例如名称、版本、功能等。
而不是直接安装文件中, .stone 存储在内容可寻址存储中 (CAS)并作为交易的一部分进行编译。这种方法不仅提高了性能,而且还可以轻松恢复任何更改。
包管理系统不遵循传统的命令式模型。开发人员认为直接安装命令“引入的错误比解决的错误还多”。相反,每个事务都会创建一个新的系统图,为未来类似于 Nix 或 Gentoo 的声明模型铺平道路,其中描述系统的所需状态而不是执行更改命令。
AerynOS 是不可变的吗?
尽管它经常被描述为一个不可变的系统,但创建者自己澄清说这并不完全正确。 系统不阻止只读访问,当事务替换 /usr 树时, 完全的不变性尚未实现。 长期目标是利用 overlayfs 和 erofs 等技术,无需重启即可实现这一目标。
尽管还处于 alpha 阶段,AerynOS 已经拥有可用的 ISO、对 GNOME 的支持、与 Steam、NVIDIA、Flatpak 的兼容性,并且有真实用户对其稳定性和性能表示称赞。尽管该系统仍在不断发展,但它已经运行良好,可以在现实场景中进行测试。
数据来源: https://aerynos.com