默认情况下,用sudo dnf updatesudo yum update后,会将Linux内核一起更新,过一段时间,grub2 就会生成好几个启动项,如果更新内核后使用系统没有问题,就可以把旧的内核删除。

我的M6800遇到的问题是,每次更新内核后,都需要重新安装显卡驱动,不然进不了GUI,这个很烦人,浪费时间,搞得我每次都有冲动重装系统。今天更新到5.15.12,又进不了桌面了,还好grub2可以让我选择从5.15.11启动。

自我对话

  • TMD,装win算了,至少没这么多麻烦...然后我就去搜win10镜像了...
  • 行了吧你,Windows用不了几天你必然折腾回Linux,谁叫你爱折腾呢...
  • 好吧,还是不要逃避问题,折腾走起...

冷静了一会儿,网上搜索试验了一番,把不用的内核都删除,然后dnf更新时排除内核,即不升级内核。

使用uname -r 查看当前使用的内核

[yangjl@fedora ~]$ uname -r
5.15.11-200.fc35.x86_64

使用rpm -aq|grep kernel查看已经安装的内核

[yangjl@fedora ~]$ sudo rpm -aq | grep kernel
libreport-plugin-kerneloops-2.15.2-6.fc35.x86_64
abrt-addon-kerneloops-2.14.6-9.fc35.x86_64
kernel-headers-5.15.4-200.fc35.x86_64
kernel-srpm-macros-1.0-6.fc35.noarch
kernel-core-5.15.11-200.fc35.x86_64
kernel-modules-5.15.11-200.fc35.x86_64
kernel-5.15.11-200.fc35.x86_64
kernel-modules-extra-5.15.11-200.fc35.x86_64
kernel-devel-5.15.11-200.fc35.x86_64
kernel-devel-5.15.12-200.fc35.x86_64

保留当前使用的内核,删除不用的内核 sudo dnf remove -y kernel-core-5.15.12*

dnfyum 更新时可以使用exclude命令排除你不希望更新的package,例如更新除了firefox以外的所有package,可以这样

sudo dnf update --exclude=firefox
sudo yum update --exclude=firefox

再比如更新除了内核以外的所有package:

sudo dnf update --exclude=kernel*
sudo yum update --exclude=kernel*

如果觉得麻烦,在fedora下,可以通过修改/etc/dnf/dnf.conf,在[main]下添加exclude=kernel*,这样在使用dnf updateyum update时会排除kernel package 的更新。

/etc/dnf/dnf.conf

[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=False
skip_if_unavailable=True
exclude=kernel*

参考文献

https://chewett.co.uk/blog/800/exclude-fedora-packages-updating-dnf-yum/
https://laplacence.github.io/2017/02/27/Fedora_delete_redundancy_kernel/

The end.