跳至内容

如何处理内核恐慌

简介

有时,内核安装会出错,您需要回溯。

这可能有很多原因,例如 /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