为什么 Linux 安装程序会安装多个内核?

Tas*_*ret 5 linux grub kernel

例如,我的启动菜单有三个内核版本,每个版本都有一个恢复选项。这些是用于调试和故障排除的额外选项吗?

Pyl*_*lsa 8

安装新内核后,由于 Linux 领域严重碎片化,无法保证新内核会完美运行。因此,引导菜单将提供轻松引导至先前内核的可能性。较早的内核可以轻松删除或简单地从引导菜单中删除。

是的,它也被开发人员用于调试目的。

完全删除旧内核,示例

例如,我将使用 Ubuntu/Debian 机器。在执行此操作之前,请确保您的新内核正常工作并且与您当前的安装兼容。首先我们需要列出安装了哪些内核,所以打开一个终端窗口,然后执行:

dpkg --list 'linux-image*'
Run Code Online (Sandbox Code Playgroud)

这应该输出类似于下面的内容

||/ Name                          Version                       Description
+++-=============================-=============================-==========================================================================
ii  linux-image                   2.6.22.14.21                  Generic Linux kernel image.
un  linux-image-2.6                                       (no description available)
rc  linux-image-2.6.20-15-generic 2.6.20-15.27                  Linux kernel image for version 2.6.20 on x86/x86_64
ii  linux-image-2.6.20-16-generic 2.6.20-16.32                  Linux kernel image for version 2.6.20 on x86/x86_64
ii  linux-image-2.6.22-14-generic 2.6.22-14.47                  Linux kernel image for version 2.6.22 on x86/x86_64
ii  linux-image-generic           2.6.22.14.21                  Generic Linux kernel image
Run Code Online (Sandbox Code Playgroud)

现在我们已经获得了已安装内核的列表,我们可以通过调用包管理来简单地删除内核。说,我们要删除2.6.22-14-generic内核,我们执行:

sudo apt-get remove linux-image-2.6.22-14-generic
Run Code Online (Sandbox Code Playgroud)

您可能需要输入您的凭据,然后您选择的内核将被我永久删除。如果它仍然存在于引导列表 (GRUB) 中,请在终端中执行以下命令:

sudo update-grub
Run Code Online (Sandbox Code Playgroud)