图片

在本周举行的欧洲开源峰会上,Linux 内核开发者兼《Linux 每周新闻(Linux Weekly News)》执行主编 Jonathan Corbet 宣布了一个重大变化:

Linux 内核的长期支持(LTS)版本,维护期将从六年变回两年。

对此,Corbet 给出的理由是:缺乏使用 & 缺乏支持。

图片

图片

2017 年之前,LTS 版本的维护期就是两年

为什么说是“变回”?因为在 2017 年之前,Linux 内核 LTS 版本的维护期就是两年。

具体来说,Linux 内核 LTS 版本 (Long Term Support,简称 LTS)是相对稳定和可靠的版本,能够提供长期的维护和升级,因此多数企业和用户都会优先选择使用 LTS 版本。

在 2017 年之前,Linux LTS 内核基本上每两年发布一次,并会在发布之后的两年内提供安全和错误修复——但六年前,也就是在 2017 年 9 月的 Linaro Connect 大会上,谷歌高级工程师 Iliyan Malchev 宣布:Linux 内核团队已同意将 LTS 的维护期从两年延长到六年。

“所有的 Android 设备都是基于 Linux LTS 内核的,LTS 以前的维护期只有两年,如果幸运的话,你可能会赶上一年的 LTS 支持,但如果不快速支持的话,它可能就结束了。好在,Greg Kroah-Hartman( Linux 基金会 LTS 内核维护者)已经同意延长 LTS 的支持周期到六年了。”

这是首次 Linux LTS 内核的生命周期发生延长,为此当时各大技术网站都有相关报道,而 Linux 基金会 IT 基础架构安全总监 Konstantin Ryabitsev 也对此进一步说明:这一改变从 Linux Kernel 4.4 开始实施,且并不意味着未来所有的 Linux LTS 版本都将有六年的支持期限。

现在六年过去了,截至目前共有 6 个支持期限为六年的 Linux LTS 内核,分别是:6.1、5.15、5.10、5.4、4.19 和 4.14 版本。

而此次 Corbet 宣布 LTS 版本的支持期限再次变回两年,也进行了相关补充:支持周期缩减至两年的计划,针对的是之后的新内核版本,Linux 社区仍将遵守当前的生命周期结束时间表,即 Linux 6.1、5.15、5.10、5.4、4.19 和 4.14 版本的支持周期依旧是六年,具体到期时间如下:

图片

图片

Linux 代码维护者们早已疲惫不堪

在解释 LTS 版本支持周期缩短的原因时,Corbet 直白表示:“因为人们不使用它们,所以维护(旧内核)那么长时间真的没有意义。”

正如 Corbet 所说,以 Linux 4.14 版本为例:该版本的维护期是六年,将于明年 1 月份到期——可在能选择更多新版本 Linux LTS 内核的情况下,目前还有在使用 Linux 4.14 的人吗?肯定有,但应该不会有很多。

除了旧版本 Linux LTS 内核的使用人数不多,Corbet 表示还有一个更大的问题,那就是:Linux 代码维护者们早已疲惫不堪了。

据了解在过去的几个 Linux 版本中,平均每个版本都有 2000 多名程序员参与,其中包括约 200 名新加入的开发人员——看起来人数不少?但是内核维护者,也就是那些检查代码是否合适、工作是否正常的人,却完全是另一回事。

通常来说,Linux 内核维护者在维护工作中会遇到许多障碍:

  • 障碍一:许多维护者的维护工作没有报酬,因此需要在日常工作之外维护代码;
  • 障碍二:他们面临着越来越多的时间要求,因为人手不足,也因为用模糊测试来找 Bug。虽然模糊测试很有帮助,但也会发现太多的小 Bug,而维护者必须对每个小 Bug 进行检查并修复。
  • 障碍三:Linux 目前正在尝试使用 Rust 语言。虽然 Rust 消除了 Linux 的主语言 C 容易出现的错误,也给维护者带来了问题——如果一个维护者已经在 C 语言上工作了 30 年,那么要求他们再次成为 Rust 专家是一个很大的要求。

这些障碍导致了怎样的结果呢?Linux 内核文件系统开发者和维护者 Josef Bacik 一句话总结:“维护者都快累死了,(因为)维护者不会扩展。”另一位资深 Linux 内核维护者 Darrick Wong 也补充道:“这种情况不能再继续下去了,我们需要帮助。”

图片

新内核的维护期为两年,但可根据情况再延长

基于这些难点,Corbet 宣布 Linux LTS 内核的生命周期将从六年缩短至两年。此外,他还建议维护者可以与其雇主商量,为他们的 Linux 维护工作支付报酬——许多公司必须意识到,如果他们想继续从 Linux 中获益,就必须回馈 Linux。

Darrick Wong 研究了许多同是 Linux 内核维护者的朋友,发现多数都在小公司、非营利组织和地方政府工作,并且与他遇到了一样的情况:普遍工作过度、时常会有恐惧和愤怒的情绪,以及难以理解和适应新思想。“我们不明白,为什么会遇到这种情况,而我们的工作却服务于那些收入高达数千亿美元的公司?”

至于不适应 Rust 语言的 Linux 内核维护者,Corbet 只是表示:决定 Rust 是否将成为 Linux 内核主流语言的关键点即将到来——Linux 内核代码中将新增三个基于 Rust 的重要组件,分别是 PuzzleFS 的一个实现,一个读/写 Plan9 文件系统服务器,以及最引人注目的苹果 M1 GPU 驱动程序。

虽然名义上来看,Linux LTS 内核的生命周期将从六年减少至两年,但正如 2017 年从两年变成六年时的情况一样,未来的新内核版本并非绝对只有两年的维护期:“预计每个新 LTS 内核的维护期只有两年,但如果整个行业有足够的兴趣来帮助支持它更长的时间,那其生命周期就可以被进一步延长。”

图片

对 Android 的影响可能颇大?

虽然没有明说,但 2017 年提出延长 Linux LTS 内核维护期的是谷歌,此次 Linux 的这一变化也令不少人开始担忧谷歌的 Android。

在 PC 上,两年只代表内核更新之间的时间间隔,所以影响可能不太大;但嵌入式设备往往不会更新内核,“两年”代表了大部分的开发周期和对消费者的整个支持周期——显然,两年的时间绝对不够。

根据谷歌在 2017 年描绘的最初图景,手机需要两年的时间才能开发出来,而内核更是在开始阶段就被锁定了:首先,谷歌从一个新的 Linux LTS 中分叉出“Android Common”内核,然后将其发送给高通等 SoC 供应商,并针对每种型号的 SoC 进行分叉,然后将分叉结果发送给设备制造商,后者再针对每种型号的设备进行分叉。这一整个流程完整走下来,就需要花费不少时间了。

举个例子,Linux 于 2017 年 11 月发布了 4.14 版内核,而首批使用 4.14 版内核的 Android 手机于 2019 年春季才发布。另外,谷歌即将发布的 Android 14 也基于 Linux 5.4,这是一个发布于 4 年前且生命周期是 6 年的内核版本,但 Android 14 正式发布后,其内核对于消费者来说也只有两年的维护期了。

为了解决上游内核发布与产品发布之间的这种长时间延迟,谷歌推出了通用内核映像(GKI),即通过统一核心内核并将 SoC 和板级支持从核心内核移至可加载模块中,为内核模块提供稳定的内核模块接口(KMI),使模块和内核可以独立进行更新。

但即使是用了通用内核映像(GKI),也只能同步一些小的 LTS 安全更新,也并不能进行重大的内核更新:例如第一款采用了 GKI 的手机 Pixel 6 就基于 Linux 5.10,现在依旧是 Linux 5.10(这是一个发布于 3 年前的内核)。

这也就意味着,变成两年维护期的 Linux LTS 内核,很可能会导致 Android 手机最终发货时,其 LTS 内核的维护期恰好结束,消费者只能在设备的生命周期内使用过时的内核。

因此对于 Linux 的这一重大变化,诸多开发者和网友都十分关注:

  • “难道就没有人想过那些价值万亿美元的公司,它们为这个对其整个业务起着承重作用的内核支付了 0 美元吗?”
  • “也许像谷歌这样的公司可以在这一领域提供更多支持,因为这有助于他们解决目前面临的问题:销售已经过时的产品。”
  • “这与识别和反向移植安全修复程序的工作并不相同。如果供应商有 6 年 LTS 的业务需求,那他们就可以为这项工作付费啊。”

那么对于这个变化,你又有什么想法吗?

Loading

作者 amtbbsportal