如何在 Linux 中回滚内核

b74eb260c2bb2ab

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

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

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

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

如何使用不同的内核启动

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

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

bedc41cd9318c26

使用箭头键导航到“[您的发行版] 的高级选项”,然后按 Enter。

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

c4959c427057868

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

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

如何删除或降级内核

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

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

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

0aa341ac4e1dd57

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

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

在 Debian 和 Ubuntu 上删除内核

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

dpkg --list | grep linux-image

450206728baecb0

你可以通过包名看到哪个版本是最新的。获得要删除的内核名称后,传递以下命令,替换为kernel-name与上一个命令中出现的内核包名称完全相同的名称。

sudo apt 删除内核名称

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

1717ecc24430b68

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

相关文章 如何更新 Ubuntu Linux

在 Arch 上删除或降级内核

在Arch Linux的,你可以轻松地获得了多个内核供其名称一样linux-hardenedlinux-zenlinux-lts。在 GRUB 中选择一个选项时,您可能只看到每个已安装内核的一个版本可用。与 Debian 上的内核不同,Arch 内核更新不会作为替换旧包的新包到来。相反,每个已安装的内核都会在可用时简单地 更新(或“同步”)到最新版本。

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

sudo pacman -R 内核名称内核名称头文件

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

b4eef793a21c3e0

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

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

sudo pacman -S 内核名称=xxx 内核名称-headers=xxx

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

在 Fedora 上删除内核

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

rpm -qa 内核核心

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

485664c2e7df0a9

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

须藤 dnf 删除 kernel-core-xxx-xxx.fcxx.x86_64

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

746f80cd373dcbf

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

未经允许不得转载:表盘吧 » 如何在 Linux 中回滚内核