The latest stable kernel series. After several months of test versions, 2.6.0 was released on 18 December 2003.

A note on numbering

The Linux kernel has an unusual1? numbering system. The main version number is changed whenever there is a feature added that requires a significant rewrite - 2.0 added SMP and support for different architectures. The second field is the minor revision number. I say minor because the changes added here are generally not drastic enough to warrant incrementing the major revision.

The third number could be called the patchlevel, though its not incremented with every submitted and accepted patch the way Xfree is. An incremental patch for the Linux kernel is pretty much always a coalition of submitted patches cooked up by the maintainer.

Before a kernel is deemed stable enough for, say, server use, it goes through a long beta testing process. This gets an odd-numbered minor revision number - in this case 2.5. When it's stable enough (no obvious major bug or instabilities) it is feature frozen (after going through a 2.6-test phase, which is where we're at now) and becomes a "stable" kernel. Development does not stop here - there are still going to be bugs and the testers cant possibly test things on every platform and chipset. This requires a lot of work, and as soon as a kernel becomes "stable", the rejected or unstable features from the previous beta cycle are forked again into another tree, and the minor revision is incremented again.

Due to the heavy workload placed on a kernel maintainer (LinusTorvalds being the most memorable, but AlanCox is another), the maintainers handle one branch each - at the moment Alan is handling the 2.2 "stable" branch, Marcelo Tosatti is in charge of the 2.4 "stable" brach, and Andrew Morton has been handed the 2.6 branch so that Linus can work on 2.7 and beyond. At least for the time being, you can identify a beta kernel by right of it having an odd minor revision, and a stable kernel by an even minor revision.

The current Linux kernel tree is 2.6.x.

2.6 Numbering Scheme.

There has been a bit of debate over the future of the linux kernel numbering scheme as described above, which has resulted in some significant changes. The "oddnumber" development branch is no longer the default approach. That is to say, there is currently no 2.7 branch, nor are there any plans on releasing one. Instead, all the development is done within the 2.6 tree, although newer risky features are added into a branch of the 2.6 tree, such as the -mm branch. This does not mean that the 2.6.x kernel is an "unstable" kernel, or that running the latest 2.6.x kernel is "risky". The kernel team are putting a lot of effort into making sure each release is stable, and the time between 2.6.x releases has increased accordingly.

In order to accomodate urgent patches, a new "-stable" style set of kernels has been released. These are described in the form of 2.6.x.y, where .x is the current kernel, and y is the current patchlevel to said kernel. There are some strict criteria as to what patches are allowed to be incorporated into this branch, such as "must be less than 100 lines of code", "must fix an oops or other critical bug, or a security risk" and "must be a real risk". The 2.6.x.y tree only exists for as long as the 2.6.x kernel is the current one - once 2.6.(x+1) is released, no more additions can be made to 2.6.x.y.

For example, the current (20 March 2005) kernel release is 2.6.11, and the current revision of that is There have been a fairly impressive array of fixes included into these kernels, including oops corrections, driver regression fixes, security fixes, and so on. When 2.6.12 is released, it will automatically pull in any of the fixes included in 2.6.11.y, which haven't already been included.

It's worth pointing out that you don't ever have to use these new kernel revisions. If none of the patches affect your hardware or system in anyway, there's no real reason to upgrade. One of the major benefits to this new scheme is that if a major security vulnerability, or other major failure (such as the 2.4.11 dangling-symlink-eats-your-filesystem bug) occurs before a new kernel is ready to be released, a 2.6.x.y kernel can be released fixing this problem (assuming it's a small fix!). The fix can be pushed out without hurrying the next kernel - something which seems to have contributed in the past to some kernel instability.

New Features

The 2.6 tree adds two features that can lead to signifigant performance gains. The first one is reverse mapping of physical to virtual memory, which provides a better solution for paging as the kernel can now reuse pages allocated for a particular task rather than having to reallocate each time said task requires swap. The second one allows processes to be preempted anywhere in the kernel which reduces the average response time to 1ms, meaning the kernel spends less time idle under pressure, and so visible performance is, under certain circumstances, greatly improved. Other cool things added in the new kernel include the merging of ALSA, which has finally superceded OSS/Free] as the preferred sound driver for Linux. For those of you unfamiliar with the Advanced Linux Sound Architecture, it beats down OSS in pretty much every respect, as well as adding support for multiple channel muxing on sound cards which support it, and supports a whole lot more chipsets then OSS could ever dream of doing.

Another new feature in the 2.6 kernel was the addition of selectable IO schedulers. These control the way the kernel schedules reads and writes to the disk subsystem. See LinuxIoScheduler for more information

Caveat Emptor

It took kernel 2.4 about 14 patches and three different VM systems before a "stable" stable version. 2.6 has gone through several months of test kernels, but the design methodology still says "release it to primetime and let the users do the testing" (otherwise, no-one would!) Running a beta kernel is not reccomended for any server or otherwise important box. If in doubt, wait six months. It should be fine to run on a workstation until then. There are some cases, however, when a RAID or SCSI controller isn't supported by the 2.4 series kernels, so if you want to use one of them in a server, your best bet is upgrading (carefully) to 2.6.

See our KernelNotes page for other upgrade notes and differences from the 2.4 series.

Detailed Reviews of the kernel

Joe Pranevich on The Wonderful World of Linux 2.6

Getting and compiling the kernel

Well, since you've got this far, I'll presume you actually want to go ahead and try the kernel. You can find source at The procedure for compiling 2.6 is exactly the same as 2.4 (unpack, make menuconfig, make bzimage, make modules, make modules_install). If you dont understand that statement, you probably shouldnt be doing this by hand - head over to and RTFM before going any further.

You'll notice in the menuconfig several things have moved about. There is now an option for architecture and a seperate option for processor family, for instance, whereas in 2.4 these are combined. The list of platforms Linux supports is now so long that Linus felt the need to split architecture and family to make it easier to choose the right options. Other new entries include support for kernel accelerated crypto (you can build crypto algorythm support as modules or directly into the kernel). There is also support for additional (nazi) security regimes like grsec which can protect your machine from some kinds of tampering, but is generally an annoyance. Of course these arent the only new entries, you can find and explore them yourself.

(Lazy RedHatLinux users can see KernelNotes for prepackaged RH kernels).

For anyone who tries a 2.6.x kernel early in the game, here is a place to record your experiences.

'I have tried (2.5).62 through .66. .62 appears to be the most stable with .66 second. I do run a lot of OpenGL apps (read: Quake III Arena) though, and it's more likely to be the Nvidia driver thats causing my system instability. As far as performance goes: 2.5.65 with the ingo-linus scheduler was by far the fastest in interactive applications. In general I get about a 30% increase in framerate (under glx) but of course this comes at the cost of stability. Cedega also feels a lot faster (thought there is no framerate gain according to ingame displays - I've tried CS and Ghost Recon] - TomHibbert'

'Tried a generic 2.6.0 from on Fedora Core release 1 (Yarrow) using SoftwareRaid. When running the make install it complains when creating the initrd image and the raid1 module not being present. The bzImage loads fine when testing it manually, and seems to run sofar. -- GerwinVanDeSteeg'

Compiled 2.6.5 under Debian Sarge, monolithic (no modules, compiled in everything I use) and pre-emptable. It feels very responsive! Been using it for a few days already. - zcat(1)

After upgrading my Linode running woody to 2.6, I was unable to ssh in (fortunately the guys at linode provide a nice ssh-able console running under screen so I could fix the problem). Googling revealed that I had to add the following line to /etc/fstab (see
devpts /dev/pts devpts defaults 0 0

-- !PaulBrannan?

Note that this shouldn't be necessary - libc6 on woody has a startup script /etc/init.d/ that mounts this for you. (There should be a symlink from /etc/rcS.d/

1? Originally unusual; now Gnome and Evolution (to name a few) use it.