Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Most Linux distributions ship with a certain kernel version and only update it on point releases (x.y.z to x.y.(z+1)) and for security updates.

On the other hand, I know that Linux has a very strict policy about not changing the kernel ABI and never breaking user space. In fact, Linus have had many public tantrums directed at developers who wanted to (intentionally or accidentally) change the kernel is non-backwards-compatible ways.

I don't understand why distributions use "stable" kernels instead of always updating to the latest kernel. This is not a criticism, I'm just curious about the reason.

share|improve this question

closed as primarily opinion-based by Thomas Dickey, Anthon, chaos, mdpc, muru Feb 1 at 3:36

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

1  
because the latest kernels lack of testing. it may contain bugs that can effect the stability of system and stability is the main focus of any distribution maintainer. – user137124 Jan 31 at 20:37
up vote 6 down vote accepted

The Linux kernel's system call interfaces are very stable. But the kernel has other interfaces that aren't always compatible.

  • /proc is mostly stable, but there have been a few changes in the past (e.g. some interfaces moving to /sys some time after /sys was created).
  • A number of device-related interfaces have been removed in the past.
  • /sys contains some stable interfaces (listed in Documentation/ABI/stable) and some that aren't. You aren't supposed to use the ones that aren't, but sometimes people do, and a simple security and stability upgrade shouldn't break things for them.
  • There have been incompatibilities with modutils in the past (newer kernels requiring a newer version of modutils), though I think it was quite a while ago.
  • There have also been incompatibilities with respect to the boot process on some unusual configurations. Even increasing the size of the kernel could cause problems on some embedded systems.
  • While the kernel's external interfaces are pretty stable, the internal interfaces are not. The rule for internal interfaces is that anyone can break them as long as they fix internal uses, but fixing third-party modules is the responsibility of the author of said modules. Overall quite a lot of installations run third-party modules: extra drivers for hardware that wasn't supported by the kernel (if the hardware is supported by the new kernel, that's fine, but what if it isn't), proprietary drivers (while the world would be a better place if all drivers were open source, this isn't the case; for example, if you want good 3D GPU performance, you're pretty much stuck with proprietary drivers), etc.
  • Some people need to recompile their kernel, or some third-party modules. More recent kernels often can't be compiled with older compilers.

All in all, the primary reason not to switch to a more recent kernel version is third-party modules.

Some distributions nonetheless offer recent kernels as an option. For example, Debian makes kernels from testing available to users of the stable release through backports. Similarly, on Ubuntu LTS, kernels from more recent Ubuntu releases are available, but not used by default. This is mostly useful for new installations on hardware that wasn't supported yet when the distribution was finalized.

share|improve this answer

I'm not working for a distribution, but I can think of at least two reasons:

  • Some distributions apply their custom patches to the Kernel which are not merged into mainline yet. This means for every update of the Kernel they need to ensure that their patches don't break anything and still function properly.
  • Even the latest stable Kernel release can contain a bug, distributions which take reliability seriously will want to go through some testing procedures/processes before delivering a Kernel to their customers.
share|improve this answer
2  
Distribution-specific patches aren't necessarily intended for upstream, anyway. And the latest upstream kernel will on average contain more bugs than a distribution's tested "stock" kernel. Much of what the kernel distributed by a distribution does is try to shake out/fix as many bugs as possible, while not changing the code more than necessary. – Faheem Mitha Jan 31 at 16:26

More conservative distributions follow (and actively participate in) the stable kernel versions, for stability's sake. More adventurous ones use a kernel one version or so behind latest&greatest vanilla, plus a spattering of patches backported from the development tip (and some home-grown ones).

Current kernel development policy is that Linus' version forges ahead with shiny, new toys, and isn't afraid of wholesale changes. Some versions are deemed stable enough (development-wise) to form the basis for rigorous testing and stabilization, giving stable series.

All this is possible due to the tools in use, everybody can groom their own git tree, keep interesting upstream branches and trees synchronized locally, pilfer commits from others, and share local changes freely.

share|improve this answer
    
The stable kernel series isn't chosen based on a particular version's stability, it's arbitrary. Starting this year the stable series will be based on the first version released each year... Every single kernel release is supposed to be stable, and never break backwards compatibility. – Stephen Kitt Jan 31 at 18:52

Not the answer you're looking for? Browse other questions tagged or ask your own question.