使用 yum 升级 CentOS 7 内核版本(Elrepo)
升级到发行版官方最新版
没啥好说的,升级到发行版官方最新内核。
sudo yum list kernel
sudo yum update -y kernel
升级到 ELRepo 最新版
ELRepo 包含四个通道,我们要用到即为内核通道。
ELRepo 项目专注于硬件相关的软件包,以增强您使用 Enterprise Linux 的体验。这包括文件系统驱动程序、图形驱动程序、网络驱动程序、声音驱动程序、网络摄像头和视频驱动程序。
elrepo-kernel 通道使用源代码提供长期支持内核和最新的稳定主线内核。
请参阅 kernel-lt 或 kernel-ml 页面以获取更多详细信息。
此通道可以在/etc/yum.repos.d/elrepo.repo
文件中启用或与'yum --enablerepo=elrepo-kernel'
一起使用。内核配置基于默认的 RHEL 配置,并酌情启用了附加功能。这些包被有意命名为 kernel-lt/ml,以免与默认 RHEL 内核冲突,因此,它们可以与常规内核一起安装和更新。
这些软件包按“原样”提供,不提供任何暗示担保或支持。使用 kernel-lt/ml 可能会使您的系统面临安全、性能和或数据损坏问题。由于 ELRepo 项目可能无法及时更新,最终用户有最终责任决定是否继续在常规服务中使用 kernel-lt/ml 软件包。这些包没有为 SecureBoot 签名。
摘自 https://elrepo.org (经过翻译)
1.安装源
升级到 elrepo 的最新内核,通常也就是最新版。
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
- 安装公钥;
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
- 安装 ELRepo 源(Centos 7);
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
- 缓存 elrepo-kernel 部分的元数据,不做也行;
yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
- 看看有什么版本能装,想更新到最新不必执行;
当前最新内核列表可以到 kernel.org 查看,elrepo 源会慢一点点。
2.安装内核
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
- 安装最新版本的 kernel-ml (最新稳定版)
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-devel.x86_64
- 安装最新版本的 kernel-ml-devel (开发工具)
- kernel-ml(mainline stable),elrepo-kernel 中代表的是最新的稳定主线版本。对应 kernel.org 的 stable 和 mainline 版;
- kernel-lt(long term support),elrepo-kernel 中代表的是最新的长期支持版本。对应 kernel.org 的 longterm 版;
3.升级内核工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
- 删除老版本的内核工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
- 安装新版本的内核工具包
4.设置为默认内核
仅 Centos 7 需要,Centos 8 及以后已不需要更改内核启动顺序。
传统 BIOS 启动
grub2-set-default 0
grub2-mkconfig -o /etc/grub2.cfg
- 启动时自动选择第一个内核
- 重新生成启动配置,会自动将新内核排到第一个,因此即使你是远程机器,也会自动使用。
现代 UEFI 启动
grub2-set-default 0
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
5.安全启动?
详见 https://elrepo.org/wiki/doku.php?id=secureboot
6.手动删除旧内核
虽然 yum 会自动保留一定数量的内核并删掉多余的,但是有时候还是会空间不足,比如:installing package kernel-core-4.18.0-553.8.1.el8_10.x86_64 needs 2MB on the /boot filesystem
这时候你可以把 /etc/yum.conf
中的 installonly_limit
调小。
例如,installonly_limit=3
将在系统上维护 3 个内核包。达到 3 个包以后,最旧的版本会在你下一次操作时被删除。
当然,你不能设置 installonly_limit=1
,因为这会使 yum 删除正在运行的内核
如果你已经空间不足,那么就需要手动删除旧内核:
首先查看系统上有哪些内核包
rpm -qa | grep kernel
然后用通配符删除指定版本即可,比如要删除 6.8.8-1 版本:
yum remove kernel-*6.8.8-1*
日后一键操作
传统 BIOS 启动
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-devel.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
grub2-set-default 0
grub2-mkconfig -o /etc/grub2.cfg
现代 UEFI 启动
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-devel.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
grub2-set-default 0
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg
不设置启动项(CentOS 8+)
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-devel.x86_64
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
No Comments