Ubuntu Core 作为不可变 Linux Desktop 基本操作系统
by Canonical on 12 September 2023
Canonical 于 2014 年开始开发 Ubuntu Core,旨在创建一个完全容器化的物联网平台。我们在 Ubuntu Core 中使用了与 Docker 和 LXC 构建技术相同的内核容器技术,将系统的每个组件放入一个安全的沙盒中,并且明确定义了升级和回滚机制。这样是为了让自主连接的物联网设备能够在没有人为干预的情况下接收更新,以解决边缘的安全和业务需求。Ubuntu Core 的占用空间极小,有助于实现一个安全、有弹性、经久不衰的操作系统,即使在最具挑战性的环境中也可依赖。
这种容器化的方案意味着系统的每个部分都可以防止篡改,可以干净利落地独立更新。这意味着您可以运行您不放心其查看系统上所有内容的应用程序,您只想提供这些应用程序本身应当管理的数据。这意味着您可以更加灵活地在旧版本的 Linux 上使用新版本的应用程序。理想情况下,这意味着发行商可以发布一款适用于所有桌面的应用。
桌面软件在诸多方面均要比服务器或物联网软件更加难以容器化,这是因为我们想要桌面应用程序能够很好地协同工作。这种紧密集成也使得以一种既安全又易于使用的方式来定义应用程序与系统组件之间的沙盒边界变得更加困难。很多人都知道,快照在桌面上存在一些不完美的地方,但无论如何,我们非常乐于去探索完全容器化桌面的理念,完全容器化桌面的每个组件都是不可变且孤立的。我们一直在稳步改善桌面快照的体验。待到时机成熟,当我们认为可以交付整个系统时,我们将很高兴地提供一个具有此等新增功能的 Ubuntu Desktop 版本。
在本文中,我们将讨论不可变操作系统的架构、它们的优点和缺点以及 Ubuntu Core 在不可变 Linux 环境中所扮演的角色。我们将阐述其侧重于可组合性和安全性这一点如何为物联网、边缘、机器人和云开发人员带来独特的好处。
我们还将介绍不可变 Linux 在桌面系统中的崛起,其对户而言的优势,以及 Ubuntu Core 在未来可能扮演的角色……让我们切入主题!
什么是不可变操作系统?
在讨论 Ubuntu Core 与其他不可变操作系统的区别之前,我们必须首先定义不可变操作系统所具有的属性:
- 只读:不可变操作系统的主要特征是用户或应用程序不能直接修改运行的系统。
- 原子更新:自动应用更新;这意味着更新要么一次成功应用,要么均不成功。
- 可预测:因为核心操作系统不会改变,所以其行为在各种设备上都是可预测的。
- 孤立的应用程序:应用程序通常通过容器化与核心操作系统和其他应用程序相孤立。这样可以确保应用程序所做的更改不会影响核心系统或其他应用程序。
好处是什么?
- 安全性:恶意软件更难对系统进行更改或从一个应用程序传播到另一个应用程序。
- 稳定性:系统文件不会被意外更改或删除,原子更新可以确保系统更新不会让系统处于部分更新和可能不稳定的状态。
- 再现性: 因为操作系统自始至终都是相同的,所以更容易进行系统测试、审计和验证,以及诊断和排除问题。
- 可管理性:由于操作系统的每个实例都是相同的,系统管理员不必担心意外更改或不同系统之间存在不一致的问题。原子更新和回滚简化了应用系统更新和修复问题的过程。
缺点是什么?
- 灵活性降低:不可变操作系统不如传统操作系统灵活。用户不能修改系统文件或在相同程度上自定义系统。
- 兼容性有限:并非所有应用程序和服务都与不可变操作系统提供的容器化或孤立环境相兼容。
- 存储要求:更新机制通常需要使用镜像快照存储。孤立的应用程序可能导致应用程序依赖项存储冗余。
- 开发人员经验:虽然容器化开发环境具备一定的好处(例如改进的孤立性和再现性),但它们也可能带来额外的复杂性,并限制熟悉工具和工作流的使用。
不可变操作系统尤其适合稳定性、安全性和可预测性至关重要的环境,如服务器、物联网设备和高安全性环境。然而在最近几年,我们看到这些属性首先是在移动操作系统领域,然后越来越多地在 PC 领域展现出了巨大的用户价值。
不可变 Linux 操作系统的架构
既然我们已经定义了这些属性,下面就来看一下当今不可变 Linux 生态系统中所做的设计选择。
Chrome OS
在移动操作系统之外,最有效地为日常用户普及了不可变性所具价值的操作系统是基于 Linux 的 Chrome OS,其针对生产力和开发采用了云优先的方法。
Chrome OS 以安全性为优先,采用只读操作系统、沙盒化应用程序和进程以及硬件支持的加密。验证启动可以在启动过程的每个阶段,通过固件和内核签名检查,确认系统未被修改。
更新是通过“A/B 进程”处理的,在该进程中,设备存储两个版本的操作系统:一个在运行,另一个不运行,但可以在后台对操作系统应用修改和更新。如果修改应用成功,下次重新启动时将自动选择新版本。如果没有应用成功,设备将启动回到现有的镜像,这使得更新更具弹性。
Fedora Silverblue & OSTree
近期推出的不可变 Linux 发行版(如 Fedora Silverblue)采用了类似的升级机制,可以通过一款名为 OSTree 的工具升级到 Chrome OS。使用 OSTree,当更新可用时,完整的系统镜像将在后台下载,用户只需在安装后启动即可。
应用更改时,OSTree 会存储系统快照。在启动过程中,用户将看到这些快照的列表,他们可以启动进入其中的任何一个快照——有效地回滚系统。这种更新和回滚机制降低了用户修改其 OSTree 可能导致的不稳定性。用户进而可以放心地将应用程序甚至图形驱动程序分层到操作系统快照中。OSTree 只在每个版本中进行“增量”(差异)更新,使系统更新的存储和带宽开销降至最低。
MicroOS 和 Btrfs 快照
openSUSE 的 MicroOS 和 Ubuntu Core 一样,主要是针对物联网和其他单一用途的用例而设计。不过,它现在支持一个名为 openSUSE Aeon 的完整桌面环境。MicroOS 使用 Btrfs 快照,通过克隆当前运行的根文件系统来应用更新,然后将新的根文件系统标记为下次启动目标。虽然这与 OSTree 有所区别,但使用 Btrfs 快照还可以优化其写入时复制操作所带来的维护多个可启动系统镜像的存储需求。
容器化应用程序
虽然在系统更新后重启系统往往会更好,因为底层更改可能会影响正在运行的应用程序或服务,但又不想应用程序升级存在同样的要求,因为重启可能导致系统操作出现不必要的中断。
为解决这一问题,前文提到的不可变操作系统则利用了容器化桌面应用程序(Docker、Flatpak 等),这些应用程序独立于基本操作系统运行,并且不被视作操作系统文件系统的一部分。这允许那些对于系统启动(和管理)而言不重要的应用程序和服务具备可控的突变性。这种机制允许应用程序按照自己的节奏进行更新,不需要重新启动,而且也不会损害底层系统的弹性。
快照
快照也是不可变的应用程序。快照在安装完成后,是一个完整的独立软件包,其中包含应用程序及其所需的所有依赖项。这些元素被捆绑到一个不可变的 squashfs 文件系统中。这意味着“快照化”软件不会修改或依赖于主机系统的库或设置,从而实现跨主机的一致性和可预测性。
快照升级过程中,整个软件包会被自动替换掉,且版本之间会复制用户数据,这样可以确保应用程序始终处于一致的状态,从而降低部分更新所致问题的风险。
Snaps 还通过 “严格限制” 和强大的签名与验证过程提供了额外的安全优势。当开发者上传快照到 Snap Store 时,在经过详细的安全审查后,会使用注册到开发者账户下的密钥对快照进行签名。当 Linux 发行版运行 snapd 下载文件并安装快照时,它会根据 Snap Store 的公钥验证签名。这样可以确保快照没有被篡改且来自一个可信的来源。
Ubuntu Core 如何结合不可变性与可组合性
然而,快照背后所采用的技术不止用于桌面应用程序的分发。Ubuntu Core 中这种安全性和稳定性理念同样适用于构成整个 Ubuntu 操作系统的组件。
Ubuntu Core 并非将操作系统作为一个单一的不可变“大型物件”,而是将其分解成离散的组件。例如,Ubuntu Core 的基本操作系统基于以下四个主要快照而构建:
- 小工具:用于定义系统的启动加载程序、分区布局和快照的默认配置。
- 内核:包含 Linux 内核和硬件驱动程序。
- 基本操作系统:最小的 Ubuntu 操作系统镜像,仅包含必要的服务和实用程序以支持在其之上运行的应用程序。
- Snapd:用于管理一个 Ubuntu Core 系统中所有快照的生命周期。
然后可以将其他操作系统快照分层到该镜像上,以启用操作系统的其他元素,例如桌面环境(后文将对此进行详细介绍)。
更加原子化
这种组合式的操作系统构建方式具有诸多关键好处。在第一个实例中,用户可以组合流线型的 Ubuntu Core 镜像,而且只需要运行单一用途应用程序所需的必要组件,这样既减少了操作系统的占用空间,也减少了潜在的攻击面。
另一个好处是,任何快照类型都可以按照自己的节奏更新,从而大大减少了重启设备的需要。滚动更新(和回滚)粒度更精细,例如,允许按照对于内核而言的不同节奏运行网络堆栈的更新。
不同版本如何创造额外的灵活性
快照的另一个特性是使用不同的版本来交付更新。每个快照有四个标准版本:稳定版、候选版、测试版和边缘版。这些版本可供用户选择自己想要的高级程度的软件。稳定版接受的测试最多、最可靠,边缘版则包括应用程序发布者作出的最新更改。用户通过这种模式可以选择适合自己的风险水平。
不同版本均支持分阶段滚动更新和轻松回滚。开发人员或管理员可以将更新推送给一小部分用户进行测试,然后再将其推广给所有人。如果在更新中发现了问题,可以轻松回滚到以前的版本。这可以逐个快照地完成,最大限度地减少系统的中断。
Ubuntu Core 之于 Linux 桌面的潜力
Canonical 团队幕后一直在积极探索 Ubuntu Core 在物联网领域之外,尤其是对于开发人员和日常用户而言的好处。
Ubuntu Core 固有的特性,如安全启动、恢复状态和硬件支持的加密,将显著改善用户 PC 的安全状态。
它还在用户体验中引入了模块化的概念,其中用户可以尝试其他桌面环境快照,同时仍然处于高度稳定、已经签名和安全的 LTS 基本操作系统之中。
不同快照版本的使用还催生了“滚动更新”发行版特定元素的概念。例如,玩家可以选择内核版,其在最新 NVIDIA 驱动程序已经推出即可提供,就像 Ubuntu Desktop 团队为 Mesa 所做的那样,是我们对 Steam 快照所做工作的一部分。
然而,这种水平的稳定性和安全性对开发人员和修复人员来说是有代价的,即限制了对基本操作系统的修改,以便实现“恰好适用”的体验。对于将设备视为开源开发平台的开发人员来说,解决方案是基于容器的环境,类似于基于 LXD 的 Crostini。对于修复人员来说,经典的 Ubuntu 镜像仍然是他们全面控制(和负责)系统的首选途径。
了解更多
在接下来的几个月里,我们将深入探讨 Ubuntu Core 及其未来应用背后所采取的理念。欲了解最新资讯,请在本页边侧订阅我们的新闻通讯。
此外,也可点击以下链接了解更多信息:
- Ubuntu Core 功能概览
- Ubuntu Core success stories (英文),现如今网络、农业、机器人和无人机应用中如何使用 Ubuntu Core
- Ubuntu Core 教程,试用 Ubuntu Core
订阅博客文章
查看更多内容
如何添加 Ubuntu Core 设备到 Landscape
简化物联网设备管理 自 Canonical 成立以来,Landscape 就一直是 Canonical 产品目录中的一员。Landscape 允许管理员仅从单个集中式门户即可管理桌面和服务器实例。在 Landscape Server 23.10 版本中,我们引入了通过 Landscape 管理快照包的功能,并且使用我们在 Snap Store 中提供的 Landscape Client 快照包测试版,您也可以将基于 Ubuntu Core 的设备添加到您的 Landscape 环境中。 Landscape 可以为您的整个 Ubuntu 系统环境提供远程设备管理服务。您可以使用它来管理软件版本和配置,控制安全补丁,监测设备性能和合规性,进行访问管理与审计。 本篇博客将帮助 […]
Canonical 发布 Ubuntu Core 24
不可变 Ubuntu Core 为 IoT 设备制造商提供了新的厂内安装系统、对 AIoT 的 GPU 支持与 Landscape 和 Microsoft Azure IoT Edge 之间的设备管理集成 2024 年 6 月 4 日,伦敦 今日,Canonical 宣布正式发布 Ubuntu Core 24,并承诺提供 12 年长期支持 (LTS)。Ubuntu 的这种「不可变」风格将每个系统组件和系统本身放入一组容器中,这些容器具有严格的内核强制限制、丰富的托管组件集成、可靠的无线更新和故障安全回滚等特征,从而实现智能的边缘和物联网应用程序。 Ubuntu Core 支持 ARM、X86 及 RISC-V,使全球最受欢迎的开发者平台 Ubuntu 摇身一变成为面向数 […]
由 MediaTek Genio 1200 驱动的新型单板计算机 Advantech RSB-3810,现已通过 Ubuntu 22.04 LTS 认证
探索此款专为物联网和边缘应用设计的全新硬件解决方案 2023 年,Canonical 与 MediaTek 为实现物联网创新,合作优化 Ubuntu 并宣布推出针对 MediaTek 的 Genio 1200 片上系统(SoC)优化的首批 Ubuntu 镜像。该解决方案旨在实现不同市场的 AI 创新。基于 MediaTek Genio 平台和认证版 Ubuntu 构建的设备享有可靠高效的无线更新,从而实现下一代安全、开放且可扩展的物联网设备。 今天,MediaTek 和 Canonical 很高兴地宣布,行业领先的嵌入式 AI 解决方案提供商 Advantech 已成功发布 RSB-3810 2.5” Pico-ITX ——第一款运行于 MediaTek Genio 12 […]