In my usage of Ubuntu, I have noticed a baffling array of different Linux kernel packages. Some of them are listed below:

  • linux-generic
  • linux-headers-generic
  • linux-headers-generic-pae
  • linux-headers-x.x.xx-xx
  • linux-headers-x.x.xx-xx-generic
  • linux-image-generic
  • linux-image-generic-pae
  • linux-image-x.x.xx-xx-generic
  • linux-image-x.x.xx-xx-generic-pae
  • linux-image-extra-x.x.xx-xx-generic
  • linux-image-extra-x.x.xx-xx-generic-pae

My question is, why are there so many different kernel packages, often for the same version number (e.g., 3.5.0-24), and what are the differences between them?

Edit to deduplicate: This question is not asking about the differences between generic, server, and virtual kernel packages; instead, it is asking about what all of those packages (as well as the ones in the list) are.

  • 1
    This question and askubuntu.com/questions/175495 are quite (obviously) different. As one can also see from the quite different answers. It's a valid question in its own right. Please de-duplicate. Aug 4 '15 at 21:47

A kernel image package is related to the kernel image and modules which are loaded when your OS is booted. A header package provide files that are necessary to build out-of-tree kernel modules and/ or some other programs from source.


Usually you install the linux-image-generic package. That is a meta-package that does not ship any files itself. Instead, it depends on the latest kernel version provided by Ubuntu, for example linux-image-3.8.0-19-generic. This package is needed to receive kernel updates.


A similar story holds for the linux-headers-generic package. You need to install this package if you use external kernel modules such as proprietary video drivers. The linux-generic package is a meta-package that ensures that both the linux-headers-generic and linux-image-generic packages are installed.


This is a variant of the -generic packages. See What's the meaning of "-pae" at the end of kernel version?


This package was introduced with Ubuntu 12.10 and provides additional kernel modules (drivers). See What is the linux-image-extra package for and do I need it?.

Why multiple linux packages with the different version numbers?

The kernel is a critical piece of your system. Newer kernel versions may introduce a bug that make you unable to start your system successfully. With multiple kernels installed simultaneously, you can change the kernel version in the boot menu.

  • 1
    That's a useful answer, especially on the two different meta-packages and what they do when installed. thank you!
    – tuk0z
    Jun 5 '16 at 20:55
  • "The linux-generic package is a meta-package that ensures that both the linux-headers-generic and linux-image-generic packages are installed." ==> thanks for clearing it up!
    – Chan Kim
    Jun 23 at 5:34

Generally when you do an apt-get dist-upgrade it will upgrade everything that is available including your kernel. Ubuntu generally keeps 3 or 4 version of kernel (if i remember correctly) just in case the new kernel causes major issue or problems. If new kernel doesnt work well on your drivers etc, you can boot back to the older kernel. That is what it is for. You can remove the kernel using apt-get remove linux-kernel-* or using Synaptic Package Manager(which has to be installed seperately). But it would be safer to leave at least one older kernel version as backup.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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