为什么我的机器上有这么多以"linux-"开头的内核包,它们都是做什么用的?

在我使用Ubuntu的过程中,我注意到了各种令人困惑的Linux内核包。以下是其中一些的列表:
  • 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
我的问题是,为什么会有这么多不同的内核包,通常是针对相同的版本号(例如3.5.0-24),它们之间有什么区别?
编辑以去重:这个问题并不是在询问通用、服务器和虚拟内核包之间的区别;相反,它是在询问所有这些包(以及列表中的包)都是什么。

1这个问题和https://askubuntu.com/questions/175495/显然是不同的。正如人们从完全不同的答案中也可以看出来的那样。它本身是一个有效的问题。请删除重复内容。 - Nils Toedtmann
2个回答

一个内核镜像包与在操作系统启动时加载的内核镜像和模块相关。头文件包提供了构建内核模块和/或其他源代码程序所需的文件。
通常情况下,您会安装linux-image-generic包。这是一个元包,本身不包含任何文件。相反,它依赖于Ubuntu提供的最新内核版本,例如linux-image-3.8.0-19-generic。此包用于接收内核更新。
对于linux-headers-generic包也是类似的情况。如果您使用外部内核模块(如专有视频驱动程序),则需要安装此包。linux-generic包是一个元包,确保同时安装了linux-headers-generic和linux-image-generic包。
-generic-pae 这是-generic软件包的一个变种。请参阅内核版本末尾的“-pae”是什么意思?

linux-image-extra-*

这个软件包是在Ubuntu 12.10中引入的,提供了额外的内核模块(驱动程序)。请参阅linux-image-extra软件包是什么,我需要吗?

为什么有多个不同版本号的linux软件包?

内核是系统的关键部分。更新的内核版本可能会引入错误,导致您无法成功启动系统。通过同时安装多个内核,您可以在启动菜单中更改内核版本。


1这是一个有用的答案,特别是关于两个不同的元包和它们在安装时的功能。谢谢! - tuk0z
linux-generic软件包是一个元软件包,确保linux-headers-generic和linux-image-generic软件包都已安装。谢谢你澄清了这个问题! - Chan Kim

通常情况下,当你执行apt-get dist-upgrade命令时,它会升级所有可用的内容,包括内核。Ubuntu通常保留3或4个版本的内核(如果我没记错的话),以防新内核引起严重问题或故障。如果新内核在你的驱动程序等方面工作不正常,你可以回退到旧的内核。这就是它的作用。你可以使用apt-get remove linux-kernel-*命令或者使用Synaptic软件包管理器(需要单独安装)来删除内核。但最好保留至少一个旧的内核版本作为备份。