⚠️ This post was last updated on May 8, 2022 and the content may be OUTDATED!
If you encounter any issues, please feel free to reachout to me!
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/KernelHow to Switch your Linux Kernel in Arch Linux
Sooner or later, everything ends.