Ask Ubuntu is a question and answer site for Ubuntu users and developers. Join them; it only takes a minute:

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

As you can see in the changelog for the Linux kernel, there are update messages like "Bump ABI - Maverick ABI 28".

According to the Ubuntu Wiki, ABI is something like a bridge between the kernel space and the other modules (my interpretation).

Does such an update adds extra features and / or bugfixes? Should I upgrade my kernel to the next version?

share|improve this question
up vote 10 down vote accepted

NB: I'm no kernel expert - so this is based on collected knowledge and experience.

An ABI "bump" should not bring new features, even though it may "fix" bugs in some modules/applications that are looking for a higher version of the ABI. You should still install these updates, since generally keeping all components in sync will ensure stability and security.

share|improve this answer

First off, you are not looking at the changelog for the linux kernel. You are looking at the meta package, which is a package that depends on the latest kernel. You probably want something like:

The purpose of this meta-package is to transition the user through these ABI bumps.

I hold the same view as you on the ABI and the kernel. Practically speaking, an ABI bump means that all the modules need to be rebuilt against the updated kernel.

My understanding is also in line with Roland, in that an ABI bump does not mean new features, just critical fixes and security updates.

share|improve this answer
Thanks for pointing out that it's just a meta-package. I've forgotten about that. aptitude changelog linux-image-2.6.35-28-generic displays a list of changes. I'm not sure why the meta-package does not contains the updates of the linux-{image,headers}-*-generic packages; maybe because there are also linux-{image,headers}-*-server packages? – Lekensteyn Mar 21 '11 at 17:14

The ABI is the Application Binary Interface, (not to be confused with the API, the Application Programming Interface). The ABI defines the sizes, the signs and the orders of the numbers that the application is using.

To be clear, here is an example: I want to encode the age of a building, expressed in years. To do so, I can use a C unsigned char, which is a type which size is 1 byte, and that can encode values from 0 to 255. Now suppose that I discover that 255 is a too low limit because there are buildings which were built more than 255 years ago. I can then use a C unsigned int, which is 4-bytes long and can encode values from 0 to 65535.

Changing the type from char to int, I haven't changed the semantic meaning of the field (it was an age expressed in years and it still is), however I have changed its size. Every software that interacts with my application won't need to be changed, however it will speak a different "language".

Therefore, when a kernel changes its ABI, it means that it has changed the language it speaks, but no functionalities have been added, removed or modified. All third party modules that have to interact with the kernel need to be recompiled in order to speak this new language, but they do not need to be changed in any way in order to work correctly.

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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