谷歌如何为数十万台设备更新内部 Linux 发行版


谷歌内部使用了许多不同的操作系统平台,其中包括 Linux。15 多年前,谷歌选择基于 Ubuntu LTS 构建内部 Linux 发行版 Goobuntu,主要是看中了 Ubuntu 具备用户友好、易于使用的特性,以及提供了许多优秀功能。此外,LTS 会获得 Canonical 提供 2 年以上的安全更新。

根据官方介绍,Goobuntu 是谷歌长期以来一直使用的 Linux 发行版。不过 Ubuntu LTS 的两年更新周期意味着谷歌必须在操作系统 EOL 之前,对超过 10 万台设备中的每台机器进行升级。这是一项非常困难且耗时的工作,毕竟每两年让所有工程师从头开始配置他们的工作空间,这对生产力是严重的打击,并且从经济角度来看也是一个不负责任的选项。

在每个操作系统使用周期内,谷歌还面临软件包重大版本升级的挑战,因为这可能需要对软件配置进行重大改变。为了让这个过程自动化,谷歌工程师编写了一个无人值守的升级工具来处理很多常见的问题。这种“自动化升级”意味着大多数谷歌员工无需通过重新安装机器,并重新创建所有配置来手动升级。不过为了实现这一点,谷歌需要对升级过程进行全面测试,并检查所有已更改的主要软件包是否继续运行(在 Ubuntu 中,主要版本之间的升级可能多达数千个软件包)。有时,在发生软件包弃用且工程师必须决定如何推进的情况下,很难提供自动化。

据称,谷歌完成所有 Goobuntu 的升级通常要花费一年的时间,整个过程对于团队来说是一个巨大的压力。而且很多时候他们遇到的一些 bug 已经在上游被修复了,但这些改进却从未被合并到所使用的 LTS 版本。

因此谷歌转向了滚动更新发行版,不过它没有选择知名的滚动更新发行版 Arch Linux,而是基于 Debian 测试分支构建了 gLinux Rodete (Rolling Debian Testing)。

选择 Debian 是因为它有着庞大的社区和软件库,还可以使用 Debian 格式的现有内部软件包和工具。而且 Ubuntu 也是基于 Debian,迁移过去更容易顺畅。

Debian 稳定分支也是差不多两年发布一次大更新,但其测试分支是滚动更新的。滚动更新意味着需要尽可能防止新版本对现有工作流程造成破坏,为了管理从源代码构建所有上游软件包的所有这些复杂任务,谷歌构建了一个名为 Sieve 的工作流系统。通过运行一个虚拟化测试套件,确保核心组件和开发者工作流程都不会被新版本软件包破坏。

谷歌表示,Goobuntu 最后一个版本基于 Ubuntu 14.04 LTS(代号 Trusty)。Rodete 的开发始于 2015 年,2017 年,谷歌开始将机器迁移到 Rodete,并在 2018 年底完成所有迁移。2019 年初关闭了最后一批运行 Goobuntu 的机器。2020 年中,Rodete 完全跟上了 Debian Bullseye 的发布时间。未来谷歌计划与上游 Debian 更紧密地合作,并贡献更多的内部补丁来维护 Debian 软件包生态。


相關推薦

2023-11-22

ineageOS 可在不同 Android 品牌的各种不同设备上使用,包括谷歌、HMD Global、三星、索尼、一加、小米等,这款 ROM 也让一些久远的品牌继续前行,例如早期的 Essential Phone、LG 等。

2022-09-16

如约重聚,主旨演讲干货新鲜出炉,一起回顾一下! 谷歌一直积极帮助开发者灵活运用前沿科技,探索创新的方式以解决现实问题,以科技之力应对变化,帮助他人,如 Google 大中华区总裁陈俊廷所强调:“谷歌一直在坚

2023-06-17

边缘产品与服务而设计的内部 Linux 发行版,旨在为这些设备和服务提供一个一致的平台,并增强微软在 Linux 更新方面的能力。CBL-Mariner 是微软对各种 Linux 技术的投资的一部分,例如 SONiC、Azure Sphere OS 和 Windows Subsystem for Linux (WS

2022-06-27

的云基础设施以及边缘产品和服务。CBL-Mariner 旨在为这些设备和服务提供一致的平台,并增强微软在 Linux 更新方面与时俱进的能力。 CBL-Mariner 2.0 带来海量新内容,包含许多 Bug 修复、软件包更新以及新增功能。 比如添加了 Kpa

2022-10-20

的云基础设施以及边缘产品和服务。CBL-Mariner 旨在为这些设备和服务提供一致的平台,并增强微软在 Linux 更新方面与时俱进的能力。 CBL-Mariner 2.0 版本 2022 年 10 月更新内容包括: 新增 增加了生成 livepatch 包的自动化 添加

2023-05-05

riner 2.0.20230426 版本添加了 XFS 文件系统支持,并在低内存设备上进行了性能测试,测试结果“还不错”。 XFS 支持代码来自 Microsoft 的 LinkedIn 组织,他们从 3 月起就一直致力于为 CBL-Mariner 安装程序添加 XFS 支持,比如为 initrd 添

2022-05-19

技术创新构建良好基础 国外社区、国外用户数量上达到数十万规模,形成广泛的国际影响力 立足根系统,共建根社区,根深才能枝繁叶茂。中国主导的桌面操作系统根社区的成立,将进一步推动中国开源产业发展。深度社

2023-03-22

gar on a Stick)学习平台的 Trisquel Sugar TOAST 版,此版本附带数十种儿童教育活动。 由于 Trisquel GNU/Linux 仅向用户提供自由和开源软件,因此新版本继续使用 Abrowser 作为默认的网络浏览器,这是一款注重隐私的 Firefox 变体,已更

2022-11-07

的云基础设施以及边缘产品和服务。CBL-Mariner 旨在为这些设备和服务提供一致的平台,并增强微软在 Linux 更新方面与时俱进的能力。 CBL-Mariner 2.0 版本 2022 年 11 月更新内容包括: 添加指令,从 rpm cmd 的输出中过滤 gpg-pubkey

2023-04-18

的云基础设施以及边缘产品和服务。CBL-Mariner 旨在为这些设备和服务提供一致的平台,并增强微软在 Linux 更新方面与时俱进的能力。 CBL-Mariner 2.0.20230407 现已发布,该版本新增了许多软件包。包括:apache-commons-cli、apache-commo

2024-07-22

和操作系统安全副总裁 David Weston 发文表示,大约有 850 万台 Windows 设备受到了最近的 CrowdStrike 中断的影响。 “虽然软件更新偶尔会造成干扰,但像 CrowdStrike 事件这样的重大事件并不常见。我们目前估计,CrowdStrike 的更新影

2023-11-07

览器的 Android 版尚不支持扩展功能。The Register 指出,谷歌公司此举可能是因为担心 Android 用户会使用插件屏蔽广告,从而影响其广告收益。不过,谷歌目前正在对其 Chrome 浏览器扩展架构 (Manifest v3) 进行修订。如果谷歌

2024-07-23

宁静。在后续的 1 个月里,社区贡献者们对该 MR 提出了数十条修改意见;Dave Airlie (@airlied) 为帮助 ORCJIT 最终落地提交了数个前序修改和代码结构优化;MR 提交者 @YukariChiba 根据修改意见对 MR 提交内容修改了数十个版本,并最终

2022-09-28

在近期举行的 Progress 360 会议上,谷歌的开发者关系工程师 Emma Twersky 发表了一个主题为"What’s New with Angular"的讲话。演讲的很大一部分内容集中在 Angular 的过去迭代以及这些变化如何为谷歌下一步的工作奠基。 Twersky 透露,Angu