切换 Fedora(40) 内核
前几天我从 Fedora 39 升级到了 Fedora 40,但是在升级后,我的 VirtualBox
无法正常启动了,提示我的 kernel
和 kernel-header
版本不匹配。
通过 uname -r
和 dnf list --installed | grep "kernel-headers"
得知我的版本为:
kernel
: 6.8.8-300.fc40.x86_64kernel-headers
: 6.8.3-300.fc40.x86_64
于是我尝试通过 sudo dnf install kernel-headers-$(uname -r)
来安装对应版本的 kernel-headers
,但是发现没有对应的版本。
这一点在 fedoraproject/rpms/kernel 和 fedoraproject/rpms/kernel-headers 中也可以得到验证,Fedora 40 目前最新的
kernel-headers
版本为6.8.3-300.fc40
。
所以我决定降级 kernel
版本,以便于安装对应版本的 kernel-headers
。经过一番查找,我确认了 kernel
版本 6.8.3-300.fc40
的存在。
但是无法通过 sudo dnf install kernel-6.8.3-300.fc40.x86_64
来安装,因为 dnf
会提示我没有这个版本。
最终在 discussion.fedoraproject 找到了相关的描述,可以通过 Fedora Updates System For F40 来确认自己需要安装的 kernel
版本是否存在,然后通过 koji download-build --arch=x86_64 <package name>
来进行安装,示例如下:
mkdir kernel-downloads
cd kernel-downloads
koji download-build --arch=x86_64 kernel-6.8.3-300.fc40
sudo dnf install ./kernel-*
安装完成后,我们需要切换到对应的 kernel
版本上。此时可以使用 sudo grubby --info=ALL
来查看当前系统的 kernel
列表。并记录下你想切换的 index
和 kernel
字段。如:
然后先临时切换到这个 kernel
上,以便检测是否正常工作:
sudo grub2-reboot "3"
reboot
上面的命令将在下次重启时切换到
index
为3
的kernel
上(只生效一次)。
如果没有问题,我们可以将这个 kernel
设置为默认值:
sudo grubby --set-default /boot/vmlinuz-6.8.3-300.fc40.x86_64
再检查一下是否设置成功:
sudo grubby --default-kernel
现在起,我们的系统将默认使用 6.8.3-300.fc40
版本的 kernel
。直到下次执行了 dnf update
或者手动切换到其他版本。
Reference: