如何在 Linux 中回滚内核

已发表: 2022-01-29
fatmawati achmad zaenuri/Shutterstock.com

如果您的 Linux PC 在更新系统后突然出现问题,则可能是 Linux 内核更新有问题。 幸运的是,在 Debian、Arch 和 Fedora 系统上回滚或切换到另一个内核相对容易。 就是这样。

为什么内核升级会导致问题

内核是 Linux 系统不可或缺的一部分,因此根据您的设备和设置,内核更新可能会给您或您安装的应用程序带来问题。 问题的范围从古怪的图形行为到完全无法使用的系统。 如果您的情况是后者,那么您就处于真正的泡菜中。

为了解决这个问题,许多现代发行版都安装了旧的或不同的内核,您可以在启动时访问它们。 这些将让您测试内核的问题或从破坏系统的内核更新中恢复。

相关:如何检查 Linux 内核和操作系统版本

如何使用不同的内核启动

当然,对 Linux 内核以外的系统包的更新可能是问题的真正根源。 排除内核故障的一种快速方法是尝试使用不同的内核启动。

您首先需要通过重新启动 PC 来访问 GRUB 菜单。 您可能会看到 GRUB 在启动时出现几秒钟,并显示一些选项,例如“高级选项”,尽管有些发行版会隐藏它,除非您访问它。 如果它在启动时没有出现,请在您的 PC 开始启动时按住 Shift 键,直到您看到类似于下图的屏幕。

Debian 11 Bullseye 的 GRUB 菜单选项

广告

使用箭头键导航到“[Your Distro] 的高级选项”,然后按 Enter。

您将获得可用启动选项的列表。 您应该看到至少两个,例如“[Your Distro], with Linux 5.10.0.7-amd64”,然后是相同选项的“恢复模式”版本。 您看到列出的不同版本是安装的不同内核。

在 Debian 11 上的 GRUB 中,两个具有恢复模式选项的内核被列为引导选项

如果您只有一个标准选项和一个恢复模式选项,那么不幸的是,这意味着您只安装了一个内核。 在这种情况下,如果您根本无法使用内核,您可以使用恢复模式尝试一些修复选项。

如果您有多个版本号,则可以使用另一个内核启动。 第一个选项将是最新的,也是您的 PC 自动启动的选项。 通过使用箭头键导航到另一个非恢复模式选项并按 Enter 来尝试另一个非恢复模式选项。

相关:如何修复无法启动的 Ubuntu 系统

如何删除或降级内核

如果引导到另一个内核似乎已经解决了您的问题,那么您可能希望继续使用该内核。 但是,您的 PC 默认情况下可能会在每次启动时尝试使用有问题的内核。 您可以在每次启动时手动选择较旧的内核,也可以在等待下一次更新时删除有问题的内核。

警告:内核更新可能涉及安全修复。 因此,忽略内核更新会带来风险。 如果您必须继续,请确保您的系统在其他方面尽可能安全。

一些发行版允许您以图形方式执行此操作,它们甚至可以让您简单地选择不同的内核作为默认内核。 例如,Linux Mint 的更新管理器(如下图所示)具有内核设置功能,除了删除不需要的内核外,还允许您设置内核首选项。

广告

尝试在您的应用程序菜单中搜索“内核”一词,看看是否出现任何桌面工具。 如果有,您可能能够以图形方式执行此操作。 否则,请继续阅读以通过命令行删除内核。

警告:只有在引导到您要使用的内核时才能继续,而不是您计划删除的内核。

在 Debian 和 Ubuntu 上删除内核

要在 Debian、Ubuntu 或其衍生产品之一上删除 Linux 内核,您应该首先确定已安装的内核包。 打开终端并输入以下命令。

 apt 列表--已安装 | grep linux 映像

使用 apt 列出 Ubuntu 中已安装的内核

您可以在结果中的正斜杠 (/) 之前看到每个包名称中的版本号。 获得要删除的内核的名称后,传递以下命令,将kernel-name替换为与上一个命令中出现的内核包名称完全相同的名称。

 sudo apt 删除内核名称

系统将提示您输入密码,然后要求您输入y并按 Enter 确认删除。

在 Ubuntu 中使用 apt 删除已安装的内核

等待删除完成,您的 Linux PC 将不再启动到该内核。 更新系统时请密切注意新内核,并在它们到达时对其进行测试以查看您的问题是否已解决。

相关:如何更新 Ubuntu Linux

删除或降级 Arch 上的内核

在 Arch Linux 上,您可以轻松地获得几个替代内核,其名称如linux-hardenedlinux-zenlinux-lts 。 在 GRUB 中选择一个选项时,您可能只看到每个已安装内核的一个可用版本。 与 Debian 上的内核不同,Arch 内核更新不会以新软件包的形式出现以取代旧软件包。 相反,每个安装的内核都会在可用时简单地更新(或“同步”)到最新版本。

广告

出于这个原因,最好简单地使用替代内核启动,而不是降级您常用的内核。 如果您已经启动到另一个内核并且知道您不想使用第一个内核,您可以使用 Pacman 在卸载命令中命名该内核。

 sudo pacman -R 内核名称内核名称标题

用您选择的内核替换kernel-name 。 在继续之前,系统会提示您输入密码。 然后,您需要通过键入“y”并按 Enter 来确认删除。

Arch Linux 中使用 pacman 卸载内核

如果您想降级内核包,请知道我们不推荐它。 滚动发布更新通常依赖于最新的其他软件包,因此回滚任何更新都是有风险的业务,并可能导致操作系统损坏。

但是,如果您确定要这样做,可以使用以下命令将内核包同步到特定版本。

 sudo pacman -S kernel-name=xxx kernel-name-headers=xxx

kernel-name替换为您要降级的内核,将xxx替换为您想要的版本。 您可以通过在 Arch Package Search 中查找内核并单击“查看更改”来找到旧版本号。

相关:如何更新 Arch Linux

在 Fedora 上删除内核

默认情况下,Fedora Linux 会在您的设备上安装两个较旧版本的内核以及最新版本。 使用此rpm命令,您可以识别软件包名称。

 rpm -qa 内核
广告

您将在其版本号旁边看到所有已安装内核的列表。

在 Fedora 终端中搜索 Linux 内核

使用不同的内核启动后,使用 dnf 卸载有问题的内核。

 sudo dnf 删除 kernel-core-xxx-xxx.fcxx.x86_64

您将收到确认卸载的提示。 键入 y 并按 enter 确认。

在 Fedora Linux 终端中删除内核

删除内核后,您的系统将无法启动到较新的内核,直到您允许内核更新。 当有新的可用时,请尝试一下,看看您的问题是否已得到解决。