Arch Linux 备用内核安装与引导配置
Arch Linux 滚动更新的特性,够体验最新的内核和软件,但有时候也会由于更新导致系统出现故障。本文记录了如何安装linux-lts备用内核,并配置GRUB和rEFInd从而方便地选择不同内核
安装linux-lts内核
1 | sudo pacman linux-lts linux-lts-headers |
此时重启如果使用GRUB引导系统的话,会出现“Advanced Options for Arch Linxu”,选择这一项就会进入选择启动linux内核或者linux-lts内核的自选单。
如果使用rEFInd引导系统的话,此时选择进入Arch Linux会默认加载最后安装的内核即linux-lts,选中Arch Linux图标在按F2键的话就会进入选择加载不同内核的选单。
为了更加方便地在Boot Loader界面选择想要加载的内核,我们可以分别对GRUB和rEFInd进行一些配置。
配置GRUB
我们想要的是在进入GRUB界面后,直接列出了加载不同内核的选项,而不需要先进入子选单再选择内核。编辑/etc/default/grub,取消注释、

1 | GRUB_DISABLE_SUBMENU=y |
如果使用的文件系统不是btrfs,还可以配置GRUB自动选中上一次选择加载的选项,这样可以免除每次重新选择。同样编辑/etc/default/grub,对下面几项进行更改
1 | GRUB_DEFAULT=saved |
重新生成GRUB引导
1 | sudo grub-mkconfig -o /boot/grub/grub.cfg |

配置rEFInd
rEFInd每次会默认加载最后安装的内核,所以如果不按F2进入子选单选择linux内核就会自动加载linux-lts内核。
通过更改rEFInd配置文件,我们可以实现默认加载进入linux内核,然后通过子选单选择加载linux-lts内核。同时我们也可以选择附加内核参数,使得每次加载内核的同时加载微码,防止出现一些意外奔溃。
为了让rEFInd支持Btrfs子卷,需要为rEFInd安装驱动
1 | # 我的ESP分区挂载在/efi下 |
编辑rEFInd配置文件/efi/EFI/refind/refind.conf,我的ESP分区挂载在/efi,如果ESP分区挂载在/boot下的话配置文件路径为/boot/efi/EFI/refind/refind.conf。
让rEFInd能够匹配Arch Linux的不同内核
1 | extra_kernel_version_strings linux-hardened,linux-zen,linux-lts,linux |
让rEFInd能够在Btrfs子卷下自动扫描内核
1 | also_scan_dirs boot,ESP2:EFI/linux/kernels,@/boot |
为了实现rEFInd默认加载linux内核,修改配置文件/efi/EFI/refind/refind.conf,手动添加启动项
1 | # 我使用的是Btrfs文件系统,请更加自己的文件系统和内核位置更改路径选项 |
设定启动选项时需要在volume指定内核和initramfs的所处的子卷,volume的值可以设定成/或/boot所处的子卷标签或者GUID。
查看子卷标签
1 | ❯ sudo lsblk -o name,mountpoint,label,size,uuid |
系统启动时会通过Boot Loader加载内核和ramfs,一般还要指定加载微码。内核文件vmlinuz-linux、内核对应的initramfs-linux.img以及微码intel-ucode.img默认位于/boot文件夹,在rEFInd配置时需要确定自己系统中这些文件实际存在的路径。
Arch Linux启动过程参考Arch boot process。
保存对/efi/EFI/refind/refind.conf更改,此时重启进入rEFInd界面,会多出一个我们刚才定义的启动项,直接选择此项启动会直接加载linux内核,按F2进入此启动项的子选单会出现我们刚才定义的加载fallback initramfs和加载linux-lts内核等选项。选中原先的Arch Linux启动项按Delete隐藏即可。
https://itsfoss.com/switch-kernels-arch-linux/
https://superuser.com/questions/1358080/what-does-grub-default-12-mean





