如果您长期使用 Linux,您就会知道 Linux 发行版具有独特的版本,并且每个版本都有特定的代号。 Linux 内核也有不同的版本号,作为内核所属系列的标识符。 但是,内核版本的早期形成方式与 Linus Torvalds 现在的命名方式有所不同。
到最后,您将更加熟悉 Linux 内核版本控制方案,并且会更轻松地阅读内核版本号并识别与特定版本相关的各种功能。
传统的 Linux 内核版本控制
当 Linus 刚开始开发内核时,所使用的版本控制系统只是由一个从零开始的递增变量方案组成(0.x)。 最初,Linus 是该项目的唯一工作人员,这个版本控制系统足以满足记录和分发新内核版本的需要。
以下是遵循此命名方案的一些内核版本:
图片来源: 维基百科
后来,随着越来越多的开发人员开始为该项目做出贡献,并且修订和补丁的数量显着增加,人们认为这种版本控制方案不适用于内核等软件。 从 1.0 版本开始,Linus 采用了一个带有一些附加变量的新方案。
引入更具描述性的版本控制系统
1994 年,随着 Linux 内核 1.00 的发布,Linus 开始使用新的版本控制系统,该系统在语法中使用了三个变量:“美国广播公司“。这些变量(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 内核版本现在是如何命名的?
在 Linux 3.0 版中,Linus 从版本号中删除了第四个变量。 现在,内核版本是根据语法形成的: 美国广播公司,其中 a、b 和 c 分别是主要版本、次要版本和修订版计数。 此版本控制方案类似于 1.0 和 2.4 内核版本之间使用的版本控制方案。
由于版本控制系统的进步,贡献者现在可以无缝地在稳定分支上工作并添加新功能,而不会意外破坏已经工作的稳定版本。 因此,在内核版本 4.0 和第一个 LTS 版本 (4.1) 推出后,内核的稳定分支和生产分支使用偶数和奇数次要版本号变得多余了。 4.x 系列有一个奇数的次要版本号。
您可能还会注意到版本号末尾的一些字符,例如 rcX. 审查候选(或简称“rc”)是内核的预览版本和预补丁版本,开发人员需要修补它们以消除错误和其他问题。 这些是以前由奇数次要版本号表示的开发版本的替代品。
尽管这些版本是专门为内核开发人员保留的,因此他们可以修复报告的问题并实现新功能,但您也可以根据需要下载和测试这些内核审查候选者,但通常不建议这样做,因为这是大多数开发发生的地方。 撰写本文时内核的最新预览版是 5.19-rc6.
为了创建新版本,当变量的值达到特定数字时,前面的变量会递增。 例如,每当次要版本计数获得时,主要版本都会更新到下一位 close 到 20。
Linus 中提到 他的 5.0 内核开发邮件 他只是将主要版本更新为 5,因为次要版本数量太大而无法指望手指和脚趾(20!)。 同样,根据 内核.org,当第一个点之后的数字开始看起来“太大”时,主版本号会增加。 中的最终内核版本 3.x 系列是 3.19 和最后一个专业 4.x 内核系列是 4.20,然后提高到 5.0。
自 3.0 版以来,Linux 内核一直遵循这种版本控制方案,并且证明它在三个主要内核版本(版本 3.x, 4.x, 和 5.x)。
使用版本号识别 Linux 内核版本
考虑到发布的 Linux 内核版本数量之多,因此需要一个适当的系统来识别和区分特定版本与其他版本。 使用新的内核版本控制方案,现在可以有效地识别和比较内核版本,并且很容易知道哪个内核版本是最新的,哪个是较早发布的。
如果要检查当前安装在系统上的 Linux 内核版本,可以使用 uname 来完成,这是一个 Linux 命令,可让您列出与系统相关的信息。 根据您运行的发行版,uname 显示的版本号可能与实际的 Linux 内核版本不同。