如何在 Arch Linux 中降级到以前的内核版本。如何安装和切换到 linux-lts
新的 Linux 内核带来了对新硬件和新功能的支持。但有时内核会导致问题:它与现有软件完全或部分不兼容,尤其是视频驱动程序受此影响,但这也适用于任何其他软件,例如 VirtualBox。
在 linux 5.9 内核发布时,NVIDIA 驱动程序与其部分不兼容,因此失去了它们的重要功能。虽然显卡工作正常,但 CUDA、OpenCL 和其他功能可能都坏了。当然,这个问题很快就解决了,但是那些需要 CUDA 和 OpenCL 或其他在问题发生时与最新版本的 Linux 内核不兼容的程序的人呢?
一个最近的例子,撰写本文时的 linux 5.19 内核与最新版本的 VirtualBox 不兼容,后者无法正常工作。该问题将在不久的将来得到解决,但如果您现在需要运行 VirtualBox 机器怎么办?
一种选择是通过从下载的包缓存中安装它来回滚到以前的版本。该方法不是最令人愉快的,因为有必要禁止更新软件包,其版本已回滚,甚至拒绝更新整个系统。
当涉及到 linux 内核时,这种方法特别烦人——你还需要对依赖项做一些事情。
更简单的选择之一是切换到 linux-lts 内核。
如何安装 linux-lts
LTS – 代表长期支持。简而言之,这是以前版本之一的 Linux 内核和模块,很少更新。
这个内核可以作为一个常规包安装,替换现有的内核。根据您的计算机配置,您可能需要安装其他 *-lts 软件包,例如 nvidia-lts 软件包,一个用于 linux-它是内核。
同时安装 linux-lts-headers。

所有这些包都可以使用以下命令安装:
sudo pacman -S linux-lts linux-lts-headers nvidia-lts
请注意,不需要删除旧内核和 NVIDIA 驱动程序(尽管您可以根据需要执行此操作)。
如何切换到 linux-lts 内核。引导选项更新
为了使用linux-lts 内核,您需要更改引导选项。
根据您使用的是 GRUB 还是 systemd-boot,更改启动选项的方式会有所不同。
如果您不确定,请参阅“如何检查计算机是使用 BIOS 还是 UEFI; GRUB 或 systemd-boot 引导程序; MBR 或 GPT 分区表”。
更新 systemd-boot 的启动选项
打开文件 /boot/loader/entries/arch.conf
sudo vim /boot/loader/entries/arch.conf
或者:
sudo gedit /boot/loader/entries/arch.conf
并替换其中的行
linux /vmlinuz-linux
initrd /initramfs-linux.img
在
linux /vmlinuz-linux-lts
initrd /initramfs-linux-lts.img
例如,我的文件的全部内容是
title BlackArch
linux /vmlinuz-linux-lts
initrd /initramfs-linux-lts.img
options root=/dev/nvme0n1p2 rw
我注释掉了指向普通内核版本的行并添加了指向 linux-lts 的行:
title BlackArch
#linux /vmlinuz-linux
#initrd /initramfs-linux.img
linux /vmlinuz-linux-lts
initrd /initramfs-linux-lts.img
options root=/dev/nvme0n1p2 rw

然后重新启动并确保您使用的是 LTS 内核版本和命令:
uname -a

更新 GRUB 的引导选项
更新您的 GRUB 配置:
sudo grub-mkconfig -o /boot/grub/grub.cfg
然后重新启动并确保您使用的是 LTS 内核版本和命令:
uname -a
在内核得到改进并解决了困扰您的问题后,您可以返回到最新版本的 Linux 内核。