你是否曾经好奇 linux 内核版本号是如何形成的?如果你已经使用 linux 有一段时间了,你应该知道每个 linux 发行版都有独特的版本号和特定的代号。同样,linux 内核也有不同的版本号,作为内核系列的标识符。然而,早期的内核版本命名方式与 linus torvalds 现在使用的命名方式有所不同。
通过本文,你将更深入地了解 Linux 内核的版本控制方案,并且能够更轻松地阅读和识别内核版本号中包含的各种功能。
在 Linus 刚开始开发内核时,他使用了一个从零(0.x)开始的简单递增变量方案来进行版本控制。最初,由于 Linus 是唯一的开发者,这个系统足以满足记录和发布新内核版本的需求。
以下是一些遵循这种命名方案的内核版本:
随着更多开发人员加入项目,修订和补丁数量显著增加,这种版本控制方案变得不适合内核等复杂软件。从 1.0 版本开始,Linus 采用了一个带有额外变量的新方案。
1994 年,Linux 1.00 内核发布,Linus 开始使用一个新的版本控制系统,该系统在语法中使用了三个变量:“abc”。这些变量(a、b 和 c)分别表示内核版本的主要版本、次要版本和修订号。
以 Linux 1.1.95 内核为例,它可以解码为第一个主要版本、第一个次要版本和第 95 个修订版。
当时,次要版本号的偶数表示稳定版本,奇数表示开发版本。分支的分离对于开发人员在内核中添加和测试新功能而不影响稳定分支至关重要。
开发人员在开发分支中添加和改进新功能,直到它足够稳定以发布为 LTS 内核。例如,LTS 内核 3.2 是基于稳定版本 3.1 的新功能开发的,而新的开发内核 3.3 从 3.2 分支出来,为 Linux 3.4 中引入的新功能铺平道路。
从 Linux 2.4 内核开始,内核名称中引入了第四个变量,表示补丁版本。例如,版本 2.4.37.10 是内核 2.4.37 的第十个补丁版本。
补丁版本不代表内核版本中修补的问题数量,而是表示在修补发现的问题后发布更新内核的次数。
在 Linux 2.6 之前,一直使用这个版本控制系统,它能够有效地区分不同版本。然而,随着版本号变得更长和更复杂,需要一个新的更好的方案。
在 Linux 3.0 版中,Linus 从版本号中删除了第四个变量。现在,内核版本是根据语法形成的:abc,其中 a、b 和 c 分别是主要版本、次要版本和修订计数。这种版本控制方案类似于 1.0 和 2.4 内核版本之间使用的方案。
Linux 3.2.0-23
由于版本控制系统的进步,贡献者现在可以无缝地在稳定的分支上工作并添加新功能,而不会意外破坏已经工作的稳定版本。因此,在内核版本 4.0 推出后,内核的稳定分支和生产分支使用偶数和奇数次要版本号变得多余,并且 4.x 系列中的第一个 LTS 版本(4.1)有一个奇数次要版本号。
你可能还会注意到版本号末尾的一些字符,例如 rcX。审查候选(或简称“rc”)是内核的预览版本和预补丁版本,开发人员需要修补它们以消除错误和其他问题。这些是以前由奇数次要版本号表示的开发版本的替代品。
尽管这些版本是专门为内核开发人员保留的,以便他们修复报告的问题并实现新功能,但你也可以根据需要下载和测试这些内核审查候选者,但通常不建议这样做,因为这是大多数开发发生的地方。在撰写本文时,最新的内核预览版是 5.19-rc6。
为了创建新版本,当变量的值达到特定数字时,前面的变量会递增。例如,每当次要版本计数接近 20 时,主要版本就会更新到下一位。
Linus 在他的 5.0 内核开发邮件中提到,他只是将主要版本更新为 5,因为次要版本数量太大,无法指望手指和脚趾(20!)。同样,根据 kernel.org,当第一个点之后的数字开始看起来“太大”时,主版本号会增加。3.x 系列的最终内核版本是 3.19,最后一个主要的 4.x 内核系列是 4.20,然后升级到 5.0。
Linux 5.18.0-2
自 3.0 版以来,Linux 内核一直遵循此版本控制方案,并且已证明它在三个主要内核版本(版本 3.x、4.x 和 5.x)中都是有效的。
考虑到发布的 Linux 内核版本数量之多,因此需要一个适当的系统来识别和区分特定版本与其他版本。使用新的内核版本控制方案,现在可以有效地识别和比较内核版本,并且很容易知道哪个内核版本是最新的,哪个是较早发布的。
如果你想检查系统上当前安装的 Linux 内核版本,可以使用 uname 命令,这是一个 Linux 命令,可让你列出与系统相关的信息。根据你运行的发行版,uname 显示的版本号可能与实际的 Linux 内核版本不同。