Networking | Programming | Security | Linux | Computer Science | About

How Linux kernel numbering works

One potentially confusing aspect of Linux for newcomers is the way in which different pieces of software are assigned a version number. When you first approach Linux, chances are you’ll be looking at a distribution, such as Ubuntu 18.04 or Fedora 29. It’s important to understand that these version numbers only relate to the particular distribution (which is a prepackaged version of Linux along with tons of free application packages). Therefore, the version number assigned by Ubuntu, SuSE, or Debian might not have anything to do with the individual version numbers of the software in that distribution.

The Linux kernel, as well as each application, component, library, or software package in a Linux distribution, generally has its own version number. For example, you might be using gcc Version 2.96, as well as the XFree86 GUI Version 4.0.3. As you can guess, the higher the version number, the newer the software is.

If you install Linux in the form of a distribution (such as Red Hat and SuSE), all of this is simplified for you since the latest versions of each package are usually included in the distribution, and the distribution vendors make sure that the software on a particular distribution works together.

The Linux kernel has a peculiar version numbering scheme with which you should be familiar. The linux kernel is the core operating system itself, responsible for managing all the hardware resources in your machine — such as disks, network interfaces, memory, and so on. Unlike Windows systems, the Linux kernel doesn’t include any application-level libraries or GUIs. In some sense, as a user you will never interact with the kernel directly, but rather through interfaces, such as the shell or the GUI (more on this later). However, many people still consider the Linux kernel version to be the version of the “entire system,” which is somewhat misleading. Someone might say, “I’m running kernel version 2.5.12,” but this doesn’t mean much if everything else on the system is years out of date.

The Linux kernel versioning system works as follows. At any given time, there are two “latest” versions of the kernel out there (meaning available for download from the Internet) — the “stable” and “development” releases.

The stable release is meant for most Linux users who aren’t interested in hacking on bleeding-edge experimental features, but who need a stable, working system that isn’t changing underneath them from day to day.

The development release, on the other hand, changes very rapidly as new features are added and tested by developers across the Internet.

Changes to the stable release consist mostly of bug fixes and security patches, while changes to the development release can be anything from major new kernel subsystems to minor tweaks in a device driver for added performance. The Linux developers don’t guarantee that the development kernel version will work for everyone, but they do maintain the stable version with the intention of making it run well everywhere.

The stable kernel release has an even minor version number (such as 2.4), while the development release has an odd minor version number (such as 2.5). Note that the current development kernel always has a minor version number exactly one greater than the current stable kernel. So, when the current stable kernel is 2.6, the current development kernel will be 2.7. (Unless, of course, Linus decides to bump the kernel version to 3.0 — in which case the development version will be 3.1, naturally).

Each kernel version has a third “patch-level” version number associated with it, such as 2.4.19 or 2.5.12. The patch level specifies the particular revision of that kernel version, with higher numbers specifying newer revisions. The website provides more information and downloads for the most recent kernels.

Published on Sat 13 January 2018 by Gary Hall in Linux with tag(s): kernel