Intro


使用 Arch 5 年多,几乎一直在使用默认内核,也就是这俩包 core/linuxcore/linux-headers。 2022 年换机器 Asus-ROG-G14 后,因为一些硬件的适配问题换了 Asus-Linux 提供的专用内核。 它提供了一些上游没有的补丁和修复。例如最典型且不能接受的 bug:在 AMD 独立显卡上可能出现的休睡眠后无法唤醒的问题(俗称睡死)

想要在 Arch 上安装这个内核,可以在 arch-asus-linux 软件源里找到,包名为 linux-g14linux-g14-headers

### /etc/pacman.conf
[g14]
SigLevel = DatabaseNever Optional TrustAll
Server = https://arch.asus-linux.org

一年多来一直使用这个内核,但最近看到主线内核更新到 6.2.5 了,想实验一下专用内核的补丁有没有被合并到上游,毕竟性能更高的 Xanmod Kernel 内核才能发挥出硬件的优势。遂动手!

Cook


Step 1 添加 ArchLinuxCN 软件源

Xanmod 内核并没有进入 Arch Linux 的官方软件源,只在 AUR 中有提供,但 ArchLinuxCN 进行了预构建,可以直接下载打包好的内核而不用花费额外的时间和 CPU 进行内核编译。 添加 ArchLinuxCN 软件源

### /etc/pacman.conf
[archlinuxcn]
Include = /etc/pacman.d/mirrorlist-archcn
### /etc/pacman.d/mirrorlist-archcn
## ArchLinuxCN repo sources

Server = https://mirrors.ustc.edu.cn/archlinuxcn/$arch
Server = https://mirrors.tuna.tsinghua.edu.cn/archlinuxcn/$arch
Server = https://mirrors.zju.edu.cn/archlinuxcn/$arch
Server = https://mirrors.xjtu.edu.cn/archlinuxcn/$arch
Server = https://mirrors.cqu.edu.cn/archlinuxcn/$arch
Server = https://mirrors.sjtug.sjtu.edu.cn/archlinux-cn/$arch

Step 2 安装内核软件包

安装 Xanmod 内核,卸载旧内核(可选)

$ sudo pacman -S linux-xanmod linux-xanmod-headers
...
$ sudo pacman -Rns linux-g14 linux-g14-headers
...

Step 3 重新生成引导

这一步是为了能够在启动时让引导加载程序(Boot Loader)能够启动新安装的内核。在 EFI 启动的 Linux 系统上,Boot Loader 通常是 GRUB2

⚠️警告
这一步非常重要,尤其是在卸载了旧内核的情况下。不生成新引导会导致无法使用新安装的内核启动,此外如果卸载了旧的内核会导致无法启动,需要使用 Live 系统进行修复。

## Install grub2
$ sudo grub-install --target=x86_64-efi --efi-directory=/efi --bootloader-id=GRUB --removable 
Installing for x86_64-efi platform.
Installation finished. No error reported.

## Regenerate grub config file
$ sudo grub-mkconfig -o /boot/grub/grub.cfg                                                  
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/arch/theme.txt
Found linux image: /boot/vmlinuz-linux-xanmod
Found initrd image: /boot/amd-ucode.img /boot/initramfs-linux-xanmod.img
Found fallback initrd image(s) in /boot: initramfs-linux-xanmod-fallback.img
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
Adding boot menu entry for UEFI Firmware Settings ...
done

需要在重新生成 grub 配置文件时,看到新内核名的输出,才表明新内核可以在再次启动时被加载。

Step 4

大功告成,重启就可以享受 Xanmond 内核带来的畅快感受了。这里有更新前后的两个对比,能够明显感觉到 Xanmod 内核带来的性能提升。

  • LLVM 项目在构建时能够观察到稳定的 100% CPU 全核占用。此前的 linux-g14 内核通常在 96% ~ 98% CPU 占用之间浮动。同时在 CPU 占用为 100% 的情况下,进行其他诸如打开浏览器或编辑器的操作,只会感觉到时间花的更久,但不会有明显的卡顿感。你能感觉到 CPU 是在转的,只是转的慢了一些。这里也能体现出 CPU 调度的大幅优化。
  • Factorio 游戏内,同一个大型存档的 UPS/FPS 从 30fps 不到,提升到了大约 50fps。这个游戏的帧率和流畅度非常依赖于 CPU 单核性能。