如果您的Linux PC在系统更新后突然出现问题,则可能是Linux内核更新出现故障。幸运的是,在Debian、Arch和Fedora系统上,回滚或切换到另一个内核相对容易。以下是方法。
为什么内核升级会导致问题
内核是Linux系统的一个组成部分,因此根据您的设备和设置,内核更新可能会给您或已安装的应用程序带来问题。问题可能从古怪的图形行为到完全不可用的系统。如果你的情况是后者,你就真的陷入了困境。
为了解决这个问题,许多现代发行版都安装了一个较旧或不同的内核,您可以在启动时访问该内核。这些将允许您测试内核是否存在问题,或从系统崩溃的内核更新中恢复。
相关:如何检查Linux内核和操作系统版本
如何使用不同的内核启动
当然,对Linux内核以外的系统包的更新可能是问题的真正根源。排除内核故障的一种快速方法是尝试使用不同的内核启动。
首先,您需要通过重新启动电脑来访问GRUB菜单。您可能会看到GRUB在启动时出现几秒钟,显示一些选项,如“高级选项”,但有些发行版会将其隐藏,除非您访问它。如果它在启动时未出现,请在电脑开始启动时按住Shift键,直到您看到与下图类似的屏幕。
使用箭头键导航到“[您的注意力]的高级选项”,然后按Enter键。
您将获得可用启动选项的列表。您应该看到至少两个,如“[Your Distro],with Linux 5.10.0.7-amd64”,然后是该选项的“恢复模式”版本。列出的不同版本是安装的不同内核。
如果您只有一个标准选项和一个恢复模式选项,不幸的是,这意味着您只安装了一个内核。在这种情况下,如果根本无法使用内核,可以使用恢复模式尝试一些修复选项。
如果您有一个以上的版本号,那么您可以使用另一个内核启动。第一个选项将是最新的,也是电脑自动启动的选项。使用箭头键导航到另一个非恢复模式选项,然后按Enter键,尝试该选项。
相关:如何修复Ubuntu系统无法启动时的问题
如何删除或降级内核
如果引导到另一个内核似乎解决了您的问题,那么您可能希望继续使用该内核。但是,默认情况下,您的电脑可能会在每次启动时尝试使用有问题的内核。您可以在每次启动时手动选择较旧的内核,或者在等待另一次更新时删除有问题的内核。
Warning: Kernel updates may involve security fixes. For that reason, ignoring kernel updates comes with risks. If you must proceed, make sure your system is otherwise as secure as possible.
有些发行版允许您以图形方式执行此操作,甚至可以让您简单地选择不同的内核作为默认内核。例如,LinuxMint的更新管理器(如下图所示)有一个内核设置功能,除了删除不需要的内核外,还可以设置内核首选项。
尝试在应用程序菜单中搜索单词“kernel”,并查看是否出现任何dektop工具。如果有人这样做了,你很可能可以用图形来完成。否则,通过命令行继续阅读以删除内核。
Warning: Only do proceed while booted into the kernel you want to use, not the one you plan to remove.
删除debian和ubuntu上的内核
要删除Debian、Ubuntu或其衍生产品上的Linux内核,首先应该确定已安装的内核包。打开终端并输入以下命令。
apt list --installed | grep linux-image
您可以在每个包名中看到版本号,它们位于结果中正斜杠(/)之前。获取要删除的内核的名称后,传递以下命令,将内核名称替换为与前一命令中显示的完全相同的内核包名称。
sudo apt remove kernel-name
系统将提示您输入密码,然后要求您键入y并按enter键确认删除。
等待删除完成,您的Linux PC将不再引导到该内核。当您更新系统时,请关注新内核,并在它们到达时对其进行测试,以确定问题是否得到解决。
相关:如何更新Ubuntu Linux
删除或降级arch上的内核
在Arch Linux上,您可以很容易地获得几个名称为Linux硬化、Linux zen和Linux lts的替代内核。在GRUB中选择一个选项时,您可能看到每个已安装内核只有一个版本可用。与Debian上的内核不同,Arch内核更新不会作为新的包来取代旧的包。相反,每个已安装的内核只需在可用时更新(或“同步”)到最新版本。
出于这个原因,最好只使用替代内核启动,而不是降级通常的内核。如果您已经启动到另一个内核,并且知道不想使用第一个内核,那么可以使用Pacman在卸载命令中命名内核。
sudo pacman -R kernel-name kernel-name-headers
用您选择的内核替换内核名称。系统将提示您输入密码,然后才能继续。然后,您需要键入“y”并按enter键确认删除。
如果您想降级内核包,请知道我们不建议这样做。滚动发布更新通常依赖于其他包是最新的,因此回滚任何更新都是有风险的,可能会导致操作系统崩溃。
但是,如果您确定要同步,可以使用以下命令将内核包同步到特定版本。
sudo pacman -S kernel-name=x.x.x kernel-name-headers=x.x.x
将内核名称替换为要降级的内核,将x.x.x替换为所需的版本。您可以通过在Arch Package Search中查找内核并单击“查看更改”来查找旧版本号
相关:如何更新Arch Linux
删除软呢帽上的内核
FedoraLinux默认情况下会在您的设备上安装两个旧版本的内核以及最新版本的内核。使用此rpm命令,您可以识别软件包名称。
rpm -qa kernel-core
您将在其版本号旁边看到所有已安装内核的列表。
使用不同的内核启动后,使用dnf卸载有问题的内核。
sudo dnf remove kernel-core-x.x.x-xxx.fcxx.x86_64
您将得到确认卸载的提示。键入y并按enter键确认。
删除内核后,在允许内核更新之前,系统将无法启动到更新的内核。当有新的可用时,尝试一下,看看您的问题是否得到解决。