跳至内容

如何处理内核恐慌

简介

有时,内核安装会出现问题,您需要回滚。

造成这种情况的原因可能有很多,例如 /boot 分区空间不足、安装中断或第三方应用程序出现问题。

幸运的是,总有一些方法可以挽救局面。

尝试使用之前的内核重新启动

首先要做的是尝试使用之前的内核重新启动。

  • 重新启动系统。
  • 到达 GRUB 2 启动屏幕后,将光标移到与之前的内核对应的菜单项,然后按 enter 键。

系统重新启动后,您可以修复它。

如果系统无法启动,请尝试 **救援模式**(参见上文)。

卸载损坏的内核

最简单的方法是卸载当前无法工作的内核版本,然后重新安装它。

注意

您无法删除正在运行的内核。

显示当前运行的内核版本

uname -r

检查已安装内核列表

dnf list installed kernel\* | sort -V

但下面的命令可能更实用,因为它只返回安装了多个版本的软件包

dnf repoquery --installed --installonly

要删除特定的内核,您可以使用 dnf,并指定您之前检索到的内核版本

dnf remove kernel-core-<version>

示例

dnf remove kernel-5.14.0-427.20.1.el9_4.x86_64

或者使用 dnf repoquery 命令

dnf remove $(dnf repoquery --installed --installonly --latest=1)

现在您可以升级系统并尝试重新安装最新的内核版本。

dnf update

重新启动并查看新内核这次是否工作正常。

救援模式

救援模式对应于旧的单用户模式。

注意

要进入救援模式,您必须提供 root 密码。

进入救援模式最简单的方法是在 grub 菜单中选择以 0-rescue-* 开头的行。

另一种方法是编辑 grub 菜单的任意一行(按 'e' 键),并在以 linux 开头的行的末尾添加 systemd.unit=rescue.target,然后按 ctrl+x 键将系统启动到救援模式。

注意

然后您将处于 qwerty 模式。

进入救援模式并输入 root 密码后,您可以修复您的系统。

为此,您可能需要使用 ip ad add ... 配置一个临时 IP 地址(请参阅我们的管理员指南的网络章节)。

最后的希望:Anaconda 救援模式

如果以上所有方法都无效,您仍然可以从安装 ISO 启动并修复系统。

本教程不包含此方法。

系统维护

清理旧内核版本

您可以删除已安装的旧内核包,只保留最新版本和正在运行的内核版本

dnf remove --oldinstallonly

限制已安装内核版本的数量

我们可以通过编辑 /etc/yum.conf 文件并设置 **installonly_limit** 变量来限制内核版本的数量

installonly_limit=3

注意

您应该始终至少保留最新的内核版本和一个备份版本。

作者:Antoine Le Morvan

贡献者:Steven Spencer, Ganna Zhyrnova