Arch Linux 如何切换内核


目录:

Notice

切换内核不是一件容易的事。我建议你有一个实际的理由这样做,而不仅仅是实验/为了好玩。虽然这本身并不是一个困难的过程。因为 linux 发行版通常设置为与特定内核配合使用。虽然有些不像其他发行版那样与内核紧密相连,但许多发行版维护者选择特定的内核是有原因的。Arch Linux 发行版不像 Ubuntu,RHEL 发行版等那样与特定的内核绑定。所以我使用 ArchLinux 来进行演示。

这里列举目前 ArchLinux 官方支持的内核:

  • Stable — 原版的 Linux 内核以及模块, 使用了一些补丁。

https://www.kernel.org/ || linux

  • Hardened — 更加注重安全的 Linux 内核,采用一系列 加固补丁 以减少内核和用户空间产生漏洞的风险。和 linux 相比,还启用了一些加固选项,比如用户命名空间(同时通过补丁禁用未授权用户的访问)、审计以及 SELinux

https://github.com/anthraxx/linux-hardened || linux-hardened

  • Longterm — 包含了长期支持的 Linux 内核和内核模块。

https://www.kernel.org/ || linux-lts

  • Zen Kernel — 一些内核黑客合作的结果,提供了适合日常使用的优秀内核。 更多详情请参见 https://liquorix.net (为 Debian 提供了基于 Zen 内核的二进制文件).

https://github.com/zen-kernel/zen-kernel || linux-zen

切换内核

Step 1 检查安装的内核和版本

首先,使用以下命令检查当前安装的内核和版本:

$ uname -r
5.17.5-zen1-1-zen

可以看出,我使用的是linux-zen内核。

Step 2 安装新内核

然后,选择你需要切换的内核安装,比如说,我们要安装原版 linux 内核:

sudo pacman -S linux linux-headers

Step 3 卸载现在使用的内核

使用以下命令进行卸载(根据自身情况更改内核名称):

sudo pacman -Rs linux-zen linux-zen-headers

Step 4 更新 boot loader 的配置

我使用的是 GRUB,使用以下命令更新:

sudo grub-mkconfig -o /boot/grub/grub.cfg

最后,您需要做的就是重新启动系统就可以更新到新的内核。

只是要切换内核的话,到这里就结束了。但是如果你想在必要的时候,可以很快地使用不同的内核,则只需删除 Step 3 即可。但是,为了切换内核操作方便,我们可以对 GRUB 的配置文件进行一些更改。

首先,使用编辑器打开/etc/default/grub文件:

sudo vim /etc/default/grub

接下来,我们将更改以下选项。根据你使用的基于 Arch 的发行版,这些设置可能有不同的顺序,已经正确设置,或者可能需要取消注释。具体根据自身情况确定。

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
GRUB_DISABLE_SUBMENU=y

# 含义
# GRUB_DEFAULT — Default boot selection.
# GRUB_SAVEDEFAULT — GRUB to remember the last selection.
# GRUB_DISABLE_SUBMENU — Disable submenus.

到这里就结束了,现在,我们就可以在 GRUB 引导界面进行内核的选择,而且 GRUB 会默认记住上次的选择,而不需要你每次都要进行选择操作。

Reference

https://wiki.archlinux.org/title/Kernel How to Switch your Linux Kernel in Arch Linux