linux 内核版本发布流程与计划

Linux 内核的开发和发布是一个高度组织化且持续进行的过程。了解其版本号的含义、发布周期以及不同类型的版本对于关注内核发展的人员比较重要

一、Linux 内核版本号解读

自 2004 年发布的 2.6.x 版本开始,Linux 内核采用了更为线性的版本编号方案。目前,版本号通常遵循 MAJOR.MINOR.PATCH 的格式,例如 6.8.1

  • MAJOR (主版本号): 这个数字的变动相对较少,通常表示内核发生了重大的变化或达到了某个里程碑。历史上,主版本号的增加并没有严格的规律,更多是根据 Linus Torvalds 的判断。例如,从 2.x 到 3.x,再到 4.x、5.x 和现在的 6.x。Linus 曾开玩笑说,当次版本号变得太大不方便记忆时,他就会考虑增加主版本号。
  • MINOR (次版本号): 这是变化最频繁的部分,代表了常规的、包含新功能和主要改进的内核版本。每个新的次版本号都意味着一次新的特性集成窗口的结束和稳定化周期的开始。 例如,从 6.7 到 6.8,就代表 6.8 版本带来了新的驱动、新的子系统特性等。
  • PATCH (修订号): 这个数字表示针对特定 MAJOR.MINOR 版本的错误修复和安全补丁。例如,6.8.1 是在 6.8.0 (通常简写为 6.8) 基础上进行的第一次修复更新。这些版本不包含新功能,只关注稳定性和安全性。

发布候选版本 (Release Candidate – RC):

在每个新的次版本号(例如 6.9)正式发布之前,会有一系列的“发布候选”版本,标记为 -rcX,例如 6.9-rc1, 6.9-rc2 等。这些是开发中的快照,用于测试和错误修复,不建议在生产环境中使用。

历史上的版本号方案:

在 2.6.x 之前,Linux 内核采用一种奇偶数系统来区分开发版和稳定版:

  • 偶数次版本号 (如 2.2.x, 2.4.x) 表示稳定版。
  • 奇数次版本号 (如 2.1.x, 2.3.x, 2.5.x) 表示开发版。这种方式在 2.6.x 之后被废弃,新的模型使得所有主线版本在发布时都被认为是“稳定”的,只是其支持周期不同。

二、Linux 内核发布周期

Linux 内核的发布遵循一个相对规律的时间表,主要围绕着“合并窗口”和“发布候选”阶段。

  1. 合并窗口 (Merge Window):
    • 当一个内核版本(比如 6.8)发布后,下一个版本(6.9)的“合并窗口”就会立即打开。
    • 这个窗口通常持续 2 周 时间。
    • 在此期间,各个子系统的维护者会将他们已经测试和准备好的新功能、新驱动程序和主要的架构变更提交给 Linus Torvalds,并由 Linus 决定是否将其合并到主线内核树中。
    • 合并窗口是引入新特性的主要阶段。
  2. 发布候选阶段 (Release Candidate – RC Phase):
    • 在 2 周的合并窗口关闭后,Linus Torvalds 会发布第一个发布候选版本,例如 6.9-rc1
    • 此后,内核开发进入稳定化阶段。这个阶段不再接受新的主要功能,主要工作是测试 -rc1 版本,发现并修复其中引入的 bug 和回归问题 (regression)。
    • 通常每周会发布一个新的 RC 版本(-rc2, -rc3, 以此类推)。
    • 这个阶段一般会持续 6到8周,具体取决于发现和修复 bug 的情况。如果 bug 较多或者有难以解决的问题,RC 阶段可能会延长,发布更多的 RC 版本 (例如 -rc8, -rc9 甚至更多)。
    • Linus Torvalds 会根据每周的 bug 修复进展和整体稳定性来决定何时发布最终的稳定版本。
  3. 最终版本发布:
    • 当 Linus 认为内核已经足够稳定时,就会发布最终的稳定版本,例如 6.9
    • 这个版本的发布标志着当前开发周期的结束,同时也是下一个版本合并窗口的开始 (例如 6.10-rc1 的合并窗口会打开)。

总结一个典型的发布周期:

  • 2 周的合并窗口 (新功能集成)
  • 大约 6-8 周的 RC 阶段 (bug 修复和稳定化)
  • 总计大约 8-10 周 发布一个新的次版本内核。

三、不同类型的内核版本

除了上述的主线开发版本,还有其他重要的内核版本类型:

  1. 主线内核 (Mainline Kernel):
    • 由 Linus Torvalds 直接维护和发布的内核版本。
    • 这是所有新功能和开发活动发生的地方。
    • 每个 MAJOR.MINOR 版本(如 6.8, 6.9)都是主线内核。
  2. 稳定版内核 (Stable Kernel):
    • 当一个主线内核版本发布后(例如 6.8),它会被移交给稳定版内核维护团队(主要由 Greg Kroah-Hartman 领导)。
    • 稳定版内核会持续接收针对该版本的 重要 bug 修复和安全补丁,并以 MAJOR.MINOR.PATCH 的形式发布(例如 6.8.1, 6.8.2 等)。
    • 这些补丁通常是从主线开发分支中精心挑选和向后移植 (backport) 的。
    • 稳定版内核的维护通常会持续到下一个主线版本发布几周后,确保用户有时间迁移。
  3. 长期支持版内核 (Longterm Supported Kernel – LTS):
    • 某些特定的主线内核版本会被选为“长期支持版”。
    • LTS 内核会获得 更长时间的维护和支持,通常是 2 年或更长 (有些甚至达到 6 年或以上)。
    • LTS 版本对于嵌入式系统、服务器发行版以及那些需要长期稳定性和较少内核升级的产品非常重要。
    • LTS 内核同样由专门的维护者(包括 Greg Kroah-Hartman 和其他开发者)负责,他们会持续为这些版本向后移植重要的修复。
    • 选择哪个版本作为 LTS 并没有固定的规则,通常是社区和主要行业参与者根据版本的成熟度和特性集共同决定的。

四、发布计划与时间表

  • 主线内核: 大约每 8-10 周 发布一个新的次版本。这个节奏相对稳定,但会根据实际开发情况略有调整。
  • 稳定版内核 (.PATCH 版本): 通常 每周或每两周 会有新的修订版本发布,具体取决于修复的可用性和紧急程度。
  • LTS 内核:
    • 新的 LTS 版本大约 每年会选择一个
    • 每个 LTS 版本的具体支持年限可以在 kernel.org 官网上查到。例如:
      • 6.6 版本计划支持到 2026 年 12 月
      • 6.1 版本计划支持到 2026 年 12 月
      • 5.15 版本计划支持到 2027 年 10 月
      • 更早的 LTS 版本如 5.10, 5.4, 4.19, 4.14 仍在支持期内,有些甚至支持到 2029 年。

五、参与者

Linux 内核的开发是一个全球性的协作项目,主要参与者包括:

  • Linus Torvalds: 内核的创造者和最终仲裁者,负责合并新代码到主线树。
  • 子系统维护者: 负责内核特定部分(如网络、文件系统、驱动程序等)的开发者。他们审查和收集来自其他开发者的补丁,并提交给 Linus。
  • Greg Kroah-Hartman: 核心开发者之一,负责稳定版内核和部分 LTS 内核的维护,以及 USB 子系统等。
  • 其他 LTS 维护者: 针对特定的 LTS 版本进行维护。
  • 成千上万的开发者: 来自世界各地的公司和个人贡献者,他们编写代码、测试、报告和修复 bug。

六、如何追踪内核发布

  • 官方网站: kernel.org 是获取内核源代码、发布信息和文档的官方渠道。首页会显示最新的主线、稳定版和 LTS 版本。
  • LWN.net (Linux Weekly News): LWN.net 是一个优秀的新闻和信息来源,提供关于内核开发、发布和社区动态的深度报道。
  • 邮件列表: Linux 内核开发主要通过邮件列表进行,例如 LKML (Linux Kernel Mailing List)。

总而言之,Linux 内核的发布流程是一个经过时间考验的、旨在平衡新功能引入和系统稳定性的高效模型。通过合并窗口快速集成新特性,再通过数周的 RC 阶段进行打磨和修复,确保了内核的质量和持续进化。而稳定版和 LTS 版本的存在,则满足了不同用户和产品对稳定性和长期支持的需求。

本文版权归原作者zhaofujian所有,采用 CC BY-NC-ND 4.0 协议进行许可,转载请注明出处。

发表评论