Understanding Linux Kernel Version Numbering

The Linux kernel follows a distinct version numbering format that indicates the type of changes, stability, and development cycle of a given release. While earlier eras of Linux utilized different conventions—such as odd and even numbers to denote development and stable branches—the modern kernel uses an intuitive three-component format (A.B.C) supplemented by release tags. This guide breaks down the structure of current Linux kernel versions, how development cycles operate, and what special suffixes mean.

The Modern Format: A.B.C

Modern Linux kernel versions (standardized since kernel 3.0 in 2011) primarily follow a three-part numbering system: major.minor.patch (often represented as x.y.z).

Pre-release Identifiers: Release Candidates (-rc)

Before a new mainline kernel is officially published, it undergoes extensive community testing using Release Candidate (RC) tags formatted as A.B-rcN:

  1. When a new development window opens, Linus Torvalds pulls new code for about two weeks (the "merge window").
  2. At the close of the merge window, the first release candidate is issued (e.g., 6.8-rc1).
  3. Over the subsequent weeks, bug fixes are committed, resulting in weekly releases (-rc2, -rc3, up to -rc7 or -rc8).
  4. Once the codebase is considered stable, the final release drops without the -rc suffix (e.g., 6.8).

Historical Context: Pre-3.0 Conventions

Understanding older kernel numbers helps when dealing with legacy systems:

Long-Term Support (LTS) Releases

Certain kernel releases are designated as Long-Term Support (LTS). While regular stable kernels are maintained only until the next mainline version arrives, LTS kernels receive critical bug fixes and security backports for several years. These are designated to provide stable platforms for enterprise distributions, embedded devices, and production servers.

Distribution-Specific Suffixes

When checking the kernel version on an installed system using the uname -r command, additional strings often appear after the base version, such as 5.15.0-88-generic or 6.1.0-18-amd64. These strings represent: