What are Kernel Version number components (w.x.yy-zzz) called? [duplicate]

Calling w the version, x the major revision and y the minor revision is semantic versioning using change significance. Linux hasn't used that semantic versioning in a long time. Until 2003, Linux used odd-even versions (odd numbers are unstable, even numbers are stable). And then came 2.6, which lasted a geological age in software terms (till 2.6.39, 8 years).

Then, pretty much arbitrarily, Linus bumped the version to 3.0. And that ended all of that semantic versioning's applicability to Linux versions. And when 3.20 was due, Linus switched to simply incrementing w whenever x got large enough that he ran out of fingers and toes to count it.

So, now, the kernel version is just w.x, the y from upstream indicates a patch released - Ubuntu just keeps it 0, and z, as already noted, is the ABI number.


Kernel Version . Major Revision . Minor Revision - Patch

Using w.xx.y-zzz and looking at the fourth file listed /boot/vmlinuz-4.4.0-45 we can say:

  • w = Kernel Version = 4
  • xx= Major Revision = 4
  • y = Minor Revision = 0
  • zzz=Patch number = 45

If someone is using 4.8.0, which Ubuntu 16.10 ships with, and encounters screen flickering they might say "I used the previous version 4.4.0-45" (which Ubuntu 16.04 uses) to fix the problem.

In layman's terms, this is correct but technically it was a downgrade four major revision levels (4.8.y-z) to (4.4.y-z). Technically speaking, to move from kernel version 4.8 to a previous kernel version it would have to be 3.2 or 3.13 using the file listing shown in the OP.

Segment name changes after Kernel 3.0

The above definitions come from: (Kernel Version Numbering) published May 9, 2006 but are now obsolete.

As the duplicate comment link (What does the fourth number in the release version mean?) states, the new names are:

<base kernel version>.<ABI number>.<upload number>-<flavour>

The proposed duplicate appears to be wrong because the second segment in the kernel version number seems to have nothing to do with ABI. In the other answer posted in this thread the fourth segment is tied to ABI but that doesn't seem right either. Here's the top of the list of ABI changes from (Linux Kernel ABI Timeline):

                ----- 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 number

From wiki.ubuntu we learn:

ABI stands for Application Binary Interface. For the kernel, this boils down to the exported functions that modules (AKA drivers) can use to do things in kernel space. Most of these exported functions are available directly from the kernel (vmlinux), but a good portion is also exported from other modules. These functions allow modules to make use of subsystems in the kernel for memory management, device interfaces, filesystems (VFS), networking stacks, etc.

Summary of Linux Kernel Version Numbering

From perhaps the most definitive source (wikipedia.org - Linux Kernel Version Numbering) we learn:

The Linux kernel has had three different numbering schemes. To summarize:

  • The first scheme was used in the run-up to "1.0". The first version of the kernel was 0.01. This was followed by 0.02, 0.03, 0.10, 0.11, 0.12 (the first GPL version), 0.95, 0.96, 0.97, 0.98, 0.99 and then 1.0.[303] From 0.95 on there were many patch releases between versions.
  • After the 1.0 release and prior to version 2.6, the number was composed as "a.b.c", where the number "a" denoted the kernel version, the number "b" denoted the major revision of the kernel, and the number "c" indicated the minor revision of the kernel.
  • In 2004, after version 2.6.0 was released, the kernel developers held several discussions regarding the release and version scheme[304][305] and ultimately Linus Torvalds and others decided that a much shorter "time-based" release cycle would be beneficial.