什么是内核版本号组件(wxyy-zzz)?

使用work in progress命令( find /boot/vm* -printf "%A@ %p\n" )查看/boot安装的内核版本号时,我看到:

 1469098968.0000000000 /boot/vmlinuz-3.13.0-92-generic 1477523408.0000000000 /boot/vmlinuz-3.2.0-113-generic 1476549941.0000000000 /boot/vmlinuz-4.4.0-43-generic 1477008540.0000000000 /boot/vmlinuz-4.4.0-45-generic 1470540722.0000000000 /boot/vmlinuz-4.6.3-040603-generic 1471805944.0000000000 /boot/vmlinuz-4.7.1-040701-generic 1472208664.0000000000 /boot/vmlinuz-4.7.2-040702-generic 1473382012.0000000000 /boot/vmlinuz-4.7.3-040703-generic 1474853146.0000000000 /boot/vmlinuz-4.7.5-040705-generic 1475960925.0000000000 /boot/vmlinuz-4.8.1-040801-generic 1477145804.0000000000 /boot/vmlinuz-4.8.4-040804-generic 

vmlinuz前缀后面的“w.xx.y-zzz”的正确名称是什么?

建议的重复链接( 发布版本中的第四个数字是什么意思? )表示第二个段称为ABI Number 。 muru下面的答案说第四部分是ABI Number但是我认为根据我在下面的答案中提供的链接都是错误的。

请记住,这个问题是关于所有四个片段wxyy-zzz而不仅仅是第四段zzz。

调用版本, x主要修订版本和次要修订版本是使用更改重要性的语义版本控制 。 Linux很长一段时间没有使用语义版本。 直到2003年, Linux使用奇偶版本 (奇数是不稳定的,偶数是稳定的)。 然后是2.6,它以软件术语持续了一个地质时代(直到2. 6 .39, 8年 )。

然后,几乎任意,Linus将版本提升到3.0。 这就结束了所有语义版本对Linux版本的适用性。 当3.20到期时,只要x足够大以至于他用完了手指和脚趾来计算它 , Linus就会改为简单地递增w

所以,现在,内核版本只是wx上游y表示发布的补丁–Ubuntu只保留0,而z ,如前所述,是ABI号码。

内核版本。 主要修订 。 次要修订 – 补丁

使用w.xx.y-zzz并查看列出/boot/vmlinuz-4.4.0-45的第四个文件,我们可以说:

  • w =内核版本= 4
  • xx =主要版本= 4
  • y =次要修订= 0
  • zzz =补丁号码= 45

如果有人使用的是4.8.0 Ubuntu 16.10附带并遇到屏幕闪烁,他们可能会说“我使用的是之前的版本4.4.0-45”(Ubuntu 16.04使用)来解决问题。

外行人的说法是正确的,但从技术上来说,这是将四个主要修订级别(4.8.yz)降级到(4.4.yz)。 从技术上讲,从内核版本4.8迁移到以前的内核版本,使用OP中的文件列表显示它必须是3.2或3.13。

编辑 – 内核3.0之后的段名称更改

以上定义来自:( 内核版本编号 ),于2006年5月9日发布,但现已过时。

作为重复注释链接( 发布版本中的第四个数字是什么意思? )表明新名称是:

 ..- 

建议的副本似乎是错误的,因为内核版本号中的第二个段似乎与ABI无关。 在这个post中发布的另一个答案中,第四个段与ABI绑定,但这似乎也不正确。 以下是( Linux Kernel ABI Timeline )ABI更改列表的顶部:

  ----- Symbols ----- Version Date Added Removed Total 4.8.1 2016-10-07 141 50 1470 4.7.2 2016-08-20 170 42 881 4.6.1 2016-06-01 159 52 924 4.5.6 2016-06-01 146 41 994 4.4.5 2016-03-10 87 40 994 4.3.6 2016-02-20 166 51 1231 4.2.8 2015-12-15 213 75 1768 4.1.19 2016-03-05 204 88 1760 4.0.9 2015-07-21 159 53 822 3.19.8 2015-05-11 207 44 1146 3.18.28 2016-03-05 147 56 867 3.17.8 2015-01-08 165 46 688 3.16.7 2014-10-30 155 55 943 3.15.10 2014-08-14 129 98 1051 3.14.64 2016-03-10 279 91 1019 3.13.11 2014-04-23 140 99 822 3.12.56 2016-03-04 171 77 994 

ABI号码

wiki.ubuntu我们学习:

ABI代表应用程序二进制接口。 对于内核,这归结为模块(AKA驱动程序)可用于在内核空间中执行操作的导出函数。 大多数这些导出函数都可以直接从内核(vmlinux)获得,但很多部分也可以从其他模块导出。 这些函数允许模块利用内核中的子系统进行内存管理,设备接口,文件系统(VFS),网络堆栈等。

Linux内核版本编号摘要

从最权威的来源( wikipedia.org – Linux内核版本编号 )我们可以了解到:

Linux内核有三种不同的编号方案。 总结一下:

  • 第一个方案用于“1.0”的准备阶段。 内核的第一个版本是0.01。 其次是0.02,0.03,0.10,0.11,0.12(第一个GPL版本),0.95,0.96,0.97,0.98,0.99然后是1.0。[303] 从0.95开始,版本之间有许多补丁版本。
  • 1.0版本之后和版本2.6之前,编号为“abc”,其中数字“a”表示内核版本,数字“b”表示内核的主要版本,数字“c”表示内核的次要修订版。
  • 在2004年发布2.6.0版本之后,内核开发人员就发布和版本方案进行了多次讨论[304] [305],最终Linus Torvalds和其他人认为更短的“基于时间”的发布周期将是有益的。