MySQL, Oracle, Linux, 软件架构及大数据技术知识分享平台

网站首页 > 精选文章 / 正文

未来的操作系统是不变的吗?_操作系统未来发展方向

2025-02-20 15:48 huorong 精选文章 2 ℃ 0 评论

开发人员经常谈论 “不可变性”。在技术世界之外,它通常意味着消极的东西:不动、僵化和根深蒂固。然而,在技术领域,这些功能成为一种优势,意味着系统是可靠且可重复的。


就像技术中的许多概念和趋势一样,这并不是什么新鲜事。 NixOS(稍后会详细介绍)已经存在了 20 多年,而 ChromeOS 可能是使用最广泛的不可变操作系统 (OS)。然而,就在 10 多年前,容器在 Docker 中的广泛采用使这个概念受到了更广泛的关注。

通常,您在文本文件中定义容器,容器运行时将该定义转换为正在运行的服务。这意味着根据该定义关闭、重新创建和重启容器相对容易。无论您重新创建并重启它多少次,您都可以依赖它是相同的 — 不可变的。

开发团队现在广泛使用容器,由 Kubernetes 等工具管理和编排。容器在某种程度上采用了不变性的概念。

仍然有一个操作系统和许多其他级别的软件围绕着它们。一切都需要不可变,才能拥有完全可信、可靠且可重现的操作系统。

对于我们这些经常使用 Windows、macOS 或大多数 Linux 发行版的人来说,这听起来可能很极端。但是,从边缘设备和服务器到您我每天使用的台式机,不可变的操作系统现在正在进入现实。

为什么现在会这样?正如 Canonical 的 Ubuntu Core 产品经理 Gabriel Aguiar Noury 告诉我的那样,这是因为世界各国政府的网络安全法规不断增长。“这些法规通常会告诉设备制造商和开发商,情况会发生变化。我们需要更加合规,“Noury 说。“我们需要确保我们产品中的每个元素都有一个安全计划,其中包括安全维护。”

欧盟与 2019 年出台了网络安全法规,Noury 补充说,该法案的合规截止日期引起了很多人的兴趣。 “欧盟网络安全法规正在得到关注,到 2027 年,我们将开始必须遵守它。所以现在,我们正处于这个时期,我们必须使我们发布的设备符合这一要求。而且,不变性的想法也起到了作用。

Nix 和 NixOS



Nix 是历史最悠久、仍然活跃的不可变操作系统。人们经常互换使用 “Nix” 和 “NixOS”,但它们是不同的。Nix 是一个包管理器,用于构建小型依赖项(如 OpenSSL)并将其安装到较大的依赖项(如 Firefox 或编程语言工具链)上。

正如 Nix 维护者团队的一员 Valentin Gagarin 所说:“Nix 对许多人来说有很多东西。但从本质上讲,Nix 非常简单。

您安装的几乎每个软件包都不是孤立存在的,而是使用自己的复杂依赖项树。为了处理这个问题并保持不可变性,当你使用 Nix 构建和安装一个软件包时,它会保留安装时用于安装该依赖项的所有内容的加密哈希值。

如果您稍后再次安装依赖项,Nix 会创建一个新的哈希值,这意味着如果出现问题,您可以切换回正常运行的版本。 “Nix 将文件系统中成为应用程序二进制文件一部分的文件之间的关系连接起来,并以不可变的方式记录它们,”Gagarin 说。“每当你想把这些文件传输到其他地方时,拉动一端就能得到整个东西,而不是散架。”

NixOS 更进一步。您可以从 Nix 包管理器中的包定义整个操作系统,以及这些包的配置。配置取决于您安装的软件包,但可能包括引导设备、登录消息、用户帐户等。此外,Nix 在隔离的沙箱中执行创建这些文件的每个进程,从而进一步增强了安全性。


对于任何曾经使用移动设备管理 (MDM) 或类似工具在一组机器上推出一致的系统镜像的人来说,这听起来可能并不那么具有革命性,但 NixOS 不需要跨网络发送数 GB 的大型镜像文件,它只是一个在发布时构建的文本文件。

同样,与包管理器一样,如果出现问题,您可以回滚。NixOS 允许你在构建系统所需的时间内,在不同的操作系统配置之间切换。如果安装过程中断,这同样适用。重新启动时,它会将系统恢复到上一个良好状态,您可以重试。

Nix 已经发展了很长时间,尽管它们听起来很现代。它已经存在了 20 多年,比 Docker 和 Git 还要古老。

正如 Gagarin 所说,这甚至不是第一个。“Nix 也不是第一次尝试改变 Linux 打包。Nix 有前身,它基本上做同样的事情,但更复杂,一般 Linux 用户更难理解。我认为 Nix 的不同之处在于它在概念上的简单性。而且它仍然存在,而不是许多其他的。

社区和企业

Nix 社区是开源的,由捐赠资助,每月约有 800 名活跃的贡献者。但是,不变性的现代趋势以及 Nix 对它的适应程度并没有被企业忽视,尽管 Gagarin 承认他并不完全确定兴趣上升的根源。

基于 NixOS 的三个最有趣的商业产品是 Determinate Systems、Flox 和 DevBox。所有这些都处于早期阶段,但它们和类似的工具认识到,使用 Docker 等容器运行时进行开发的“更简单”世界可能并不像承诺的那么简单,并提供了替代方案。

Ubuntu 核心

当许多人想到 Linux 时,他们会想到 Canonical 的 Ubuntu。很难获得现实的数字,因为大多数消息来源都报告了桌面使用情况,而实际上,它的数据中心和服务器是 Linux 占据主导地位的地方。

Canonical 的不可变产品 Ubuntu Core 不是针对桌面用户,而是针对边缘设备。这些是现在随处可见的小型计算设备,从汽车到机器人,再到智慧城市和工业。边缘设备通常只在小型嵌入式板上运行少数服务,通常远程大规模管理,并运行安全性和可靠性至关重要的关键功能。不可变操作系统的完美用例。

Noury 解释了这些使用案例。“考虑一下设备的核心操作系统和核心元素。它们在正常操作期间不应更改,您也不需要维护它们。

相反,Ubuntu Core 让您专注于您的使用案例的独特功能组件,并相信如果没有您的输入,它们不会改变。 “当您部署数字信息亭、智能家居设备或在生产线中运行的机器人时,您希望专注于解决问题,并确保在您更改之前,您所依赖的组件不会发生变化,”Noury 补充道。

Canonical 的 Snap 格式和 Snap Store 类似于 Nix 包管理器。从 Snap Store 安装依赖项包含安装时的所有依赖项,以及保护主机操作系统免受“快照”应用程序攻击的额外保护。

对于任何 macOS 用户来说,这听起来很像从 App Store 安装,但由于 Linux 用户更习惯于在安装时构建软件,因此这是一种更新颖的方法,并且会分裂 Linux 社区。

Ubuntu Core 的工作方式与 NixOS 不同。您可以使用一系列模型来定义操作系统的核心组件,例如体系结构、操作系统的基础、要安装的快照和快照版本以及要使用的安全级别,而不是使用文本文件进行配置。

完成该操作后,您可以跨计算机推出、构建和安装映像。如果您使用 Canonical 的 Multipass 工具,您还可以在推出映像之前在虚拟机中本地创建、测试和构建映像,并浏览预构建的映像以作为您的基础。

虽然 Ubuntu Desktop 仍然是不可变的,但它也有 Snap 存储以实现一定程度的不变性,Canonical 工程师的这篇文章详细介绍了它 是如何工作的。

Fedora Silverblue 和 Vanilla OS

Fedora 的不可变产品 Silverblue 来自 Linux 发行版中的其他知名产品之一,它结合了 NixOS 和 Ubuntu Core 的元素。对于较大的图形应用程序,Silverblue 使用 Flatpak,其工作方式类似于 Snap Store(和 App Store),将应用程序作为一个独立的捆绑包分发。

开发人员工具使用 Toolbx,而 Toolbx 又使用容器来允许开发人员拥有每个项目的一系列功能依赖项,而不会影响基本操作系统。但是,没有像 NixOS 和 Ubuntu Core 那样将所有东西捆绑在一起的配置文件。

Vanilla OS 类似。整个操作系统不是不可变的,但它的关键部分是不可变的。它以 Apx 的形式拥有自己的包管理器方法,它将包安装到容器中,将所有内容与主机操作系统隔离开来,并且可以轻松地在版本之间切换。

除了单个安装之外,您还可以使用 Apx 基于其他 Linux 发行版定义开发人员环境,这将 Vanilla OS 定位为一种 Linux 中心。它还以不同的方式处理系统更新,为更新创建临时分区(同样,基于容器映像),只有在成功重启后才会切换到该分区(最新版本的 macOS 执行类似操作)。

最后,如果您想更加谨慎和不可变,您可以将整个文件系统设置为只读,这意味着一切都必须在容器中运行。

Fedora Silverblue 和 Vanilla OS 都没有像 NixOS 那样走向不可变的极端,但它们确实使最重要和最脆弱的部分变得不可变。

值得信任的人

信任是整个讨论的中心方面。不可变操作系统的卖点是它们值得信赖且安全。但是,您为什么要信任他们呢?

正如 Noury 所说,“不变性并不一定意味着安全性。从根本上说,预防措施是它们允许您测试并在出现问题时回滚,并且通常,服务在隔离的沙箱(无论是容器还是其他东西)中运行,这意味着任何流氓服务对其他任何内容的影响都很小。

对于 Ubuntu Core 等商业产品或商业支持的 NixOS,维护者通常会关注 CVE 数据库,以确保版本没有漏洞。尽管如此,这些来源远非完美,并且不会突出错误,因此开发人员仍然需要进行自己的测试——值得庆幸的是,不可变的操作系统使这变得更容易。

不变的未来

正如我在整篇文章中所介绍的,即使你不想全力以赴使用像 NixOS 这样完全不可变的操作系统以及随之而来的所有警告,现代消费设备对安全性的需求增加意味着你使用的许多操作系统无论如何都已经部分不可变,尤其是在安装更新时。

我最近的一篇文章介绍了 Homebrew,它是 macOS(现在是 Linux)的包管理器,它为安装应用程序增加了一定程度的不变性,具体取决于您如何使用它。

虽然本文中提到的不可变操作系统周围的社区一直在努力构建尽可能可访问和可用的系统,但完全不可变的操作系统仍然比“传统”操作系统更复杂。您需要了解一个应用程序不一定等于一个安装,以及如何在它们之间切换。由于多次安装,它们还会占用更多的磁盘空间,这很容易忘记。

我不确定完全不可变的操作系统是否是操作系统的未来,但它们的一些概念和原则肯定是。它们构成了一个典型的例子,说明有时,一个技术概念可能需要 20 年或更长时间才能找到它的时机。

Tags:重启容器

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言