未来的操作系统是不可变的吗?

澳洲作者 / 世界之声 / 2025-09-05 18:09
"
      开发人员经常谈论“不变性”。在技术世界之外,它通常意味着一些消极的东西:不动、不灵活、根深蒂固。然而,在技术

  

  Are the operating systems of the future immutable?

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

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

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

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

  

  欧盟科技界的前三名

  来自欧盟科技界的最新消息,来自我们睿智的老创始人鲍里斯的故事,以及一些可疑的人工智能艺术。它是免费的,每周都在你的收件箱里。现在就报名吧!

  仍然有一个操作系统和许多其他级别的软件围绕着它们。为了拥有一个完全可信、可靠和可复制的操作系统,所有东西都需要是不可变的。

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

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

  欧盟于2019年推出了网络安全法规,诺伊补充说,该法案的合规截止日期引起了很多人的兴趣。“欧盟的网络安全法规正在发挥作用,到2027年,我们将不得不开始遵守它。所以现在,我们正处于这个阶段,我们必须让我们发布的设备符合这一要求。而且,不变性的概念在其中发挥了作用。”

  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还要早。

  正如加加林补充的那样,它甚至不是第一个。Nix也不是第一个尝试改变Linux封装的人。Nix的前身基本上做了同样的事情,但是更复杂,对于一般的Linux用户来说不太容易访问。我认为Nix的与众不同之处在于其概念的简单性。与其他许多公司不同,它仍然存在。”

  Nix社区是开源和捐赠资助的,每月大约有800个活跃的贡献者。但是,现代的不变性趋势以及Nix如何很好地适应了这一趋势,并没有让企业忽视,尽管加加林承认,他并不完全确定兴趣上升的来源。

  基于NixOS的三个最有趣的商业产品是Determinate Systems、Flox和DevBox。它们都处于早期阶段,但它们和类似的工具认识到,也许使用容器运行时(如Docker)进行开发的“更简单”世界并不像承诺的那么简单,并提供了另一种选择。

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

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

  Noury解释了用例。“考虑一下核心操作系统和设备的核心元素。它们在正常操作中不应该改变,你也不需要维护它们。”

  相反,Ubuntu Core让你专注于你用例的独特功能组件,并且相信没有你的输入它们不会改变。诺伊补充说:“当你在生产线上部署数字亭、智能家居设备或机器人时,你希望专注于解决问题,并确保你所依赖的组件不会改变,直到你改变它们。”

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

  对于任何macOS用户来说,这听起来很像从App Store安装,但由于Linux用户更习惯于在安装时构建软件,这是一种更新颖的方法,也使Linux社区产生了分歧。

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

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

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

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

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

  香草操作系统是类似的。整个操作系统不是不可变的,但它的关键部分是不可变的。它有自己的Apx形式的包管理器方法,它将包安装到容器中,将所有内容与主机操作系统隔离,并且再次使版本之间的切换变得容易。

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

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

  Fedora Silverblue和Vanilla操作系统都没有达到NixOS的不可变极端,但它们确实使最重要和最脆弱的部分不可变。

  信任是整个讨论的中心内容。不可变操作系统的卖点在于它们是值得信赖和安全的。但你为什么要相信他们呢?

  正如诺伊所说,“不变性并不一定意味着安全。”基本上,预防措施是允许您在出现问题时进行测试和回滚,并且通常,服务运行在隔离的沙箱中(可能是容器或其他东西),这意味着任何流氓服务对其他任何东西的影响都很小。

  对于商业产品,如Ubuntu Core或商业支持的NixOS,维护人员通常会查看常见漏洞和暴露(CVE)数据库,以确保发布的版本没有漏洞。尽管如此,这些源代码还远远不够完美,也没有突出bug,因此开发人员仍然需要自己进行测试——谢天谢地,不可变的操作系统使这变得更容易。

  正如我在本文中所介绍的那样,即使您不想使用像NixOS这样的完全不可变的操作系统以及它附带的所有警告,现代消费设备中对安全性的需求增加意味着您使用的许多操作系统已经部分不可变了,特别是在安装更新时。

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

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

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

  Chris Chinchilla

  科技作家、播客和视频制作人。晚上看小说、玩游戏、听音乐。技术作家、播客和视频制作者。晚上看小说、玩游戏、听音乐。chrischinchilla.com

分享到
声明:本文为用户投稿或编译自英文资料,不代表本站观点和立场,转载时请务必注明文章作者和来源,不尊重原创的行为将受到本站的追责;转载稿件或作者投稿可能会经编辑修改或者补充,有异议可投诉至本站。

热文导读