Core Concepts: Understanding Kernel Versioning
Often someone will ask in a forum, what the the heck the numbers mean in reference to the Linux kernel. Most people just pass this off, and go on with thier lives, but isn’t it better understanding what it means!? Ha, I know I know, boring right? But I thrive on understanding neat stuff, and I wanted to simply break it down, just in case you were curious…
Fist off, Linux version is based on strings, NOT decimal notation. I cannot stress this enough. Many people in forums were perplex when recently, the kernel version progressed from 3.9 to 3.10. “Wahhhhhhhhhhh, 3.10 is ‘less’ than 3.9!!!! Well, using strings, 10* is more than 9*. Simple as that. And to boot, Linux versions often “jump”, (i.e. 2.6 to 3.0) when Linus deems enough changes warranted such a leap. Let’s look at the basics:
- There are 2 strands of kernel development, stable and unstable
- Stable version numbers are even, experimental version numbers are odd
- At a certain point, code for development versions would be frozen and made stable
- 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. 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”, as in Linux 1.2.1. A fourth number was only added for fixes/patches. This was to account for sped up releases, more on a time based schedule.
- After the 2.6 kernel, versioning changed to a 4 part version scheme (scary!) to account for very micro, but very important changes, such as patching NFS, a micro change in comparison, but very necessary.
- After the 3.0 kernel, the 3 number system was put back in place, with the first two numbers being the most important, and the third being for bug fixes/patches.
- Also note, “release candidates,” i.e. those that are almost ready for full release, contain a suffix of “rc.”
For example. Version 1.0 and version 1.2 would be “stable”. By contrast, 1.1 and 1.3 wold be “experimental.” 1.1.x would be frozen, then made stable at 1.2 and so on. Essentially expect the first number to only increase when Linux feels something major as happened, the second when some significant changes occur, and the third, only when their are bug fixes/patches. There are far more complex facets to this and the kernel, but at least maybe this helped unravel the mystery of the kernel versions.