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.