AlmaLinux、CentOS、Rocky Linux 8 如何更新到 Linux 内核 5.15
请访问原文链接:https://sysin.org/blog/centos-8-upgrade-kernel/,查看最新版。原创作品,转载请保留出处。
作者主页:sysin.org
以前使用 ELRopo 更新 CentOS 内核比较常见,AlmaLinux 和 Rocky Linux 如何更新内核呢,方法是一样的。
请注意:Linux Kernel 5.15 当前在 ELRepo 中仍然属于 mainline stable,有可能在 RHEL 9 系列发布后正式成为 LTS。
引言:Linux Kernel 5.15 LTS
11 月 21 日,著名的 Linux 内核开发人员 Greg Kroah-Hartman 宣布发布 Linux 内核 5.14.21,这是第 21 个维护更新,也是该系列的最后一个。是的,没错,Linux 5.14 现在在 上被标记为 EOL(生命周期结束),kernel.org 网站 并且将不再受支持。
“请注意,这是最新的 5.14.y 内核版本。 现在是生命的尽头。 请在此时移至 5.15.y 内核分支” Greg Kroah-Hartman 在 邮件列表公告中说。
然而,好消息是您将升级到最近发布的 Linux 5.15 内核,这是一个 LTS(长期支持)系列,至少支持几年,直到 2023 年 10 月。
Linux 内核 5.15 为 Linux 内核带来了许多优点,例如全新且功能齐全的 NTFS 文件系统实现、内核中的 SMB 服务器、实时抢占锁定、新的 Btrfs 功能、每 VLAN 多播支持、对 Nintendo 的支持 Wii 控制台、新的 gpio-virtio 驱动程序、DAMON(数据访问监控器)以及许多其他可以玩的好东西。
不用多说,如果您的 GNU/Linux 发行版使用的是 Linux 内核 5.14,您应该考虑尽快升级到 Linux 内核 5.15。如果您不能自己完成,您应该要求您的发行版的维护者将内核包升级到最新的 Linux 5.15 版本。
可以预见,未来的 Linux 发行版可能大量采用 5.15 内核版本,目前 RHEL 9 Beta 是 5.14 版本。
Longterm release kernels
Version | Maintainer | Released | Projected EOL |
---|---|---|---|
5.15 | Greg Kroah-Hartman & Sasha Levin | 2021/10/31 | Oct, 2023 |
5.10 | Greg Kroah-Hartman & Sasha Levin | 2020/12/13 | Dec, 2026 |
5.4 | Greg Kroah-Hartman & Sasha Levin | 2019/11/24 | Dec, 2025 |
4.19 | Greg Kroah-Hartman & Sasha Levin | 2018/10/22 | Dec, 2024 |
4.14 | Greg Kroah-Hartman & Sasha Levin | 2017/11/12 | Jan, 2024 |
4.9 | Greg Kroah-Hartman & Sasha Levin | 2016/12/11 | Jan, 2023 |
4.4 | Greg Kroah-Hartman & Sasha Levin | 2016/1/10 | Feb, 2022 |
为什么要更新内核
升级内核一般是为了支持新特性、新设备、新功能。为了测试最新的软硬件产品特性,升级内核比较常见。使用 ELRepo 升级内核变得非常简单。
ELRepo 简介
项目主页:http://elrepo.org
欢迎使用 ELRepo,这是 Enterprise Linux 软件包的 RPM 存储库。ELRepo 支持 Red Hat Enterprise Linux (RHEL) 及其衍生产品,如 Scientific Linux、CentOS Linux、Alma Linux 和 Rocky Linux。
ELRepo 项目专注于与硬件相关的软件包,以增强您对 Enterprise Linux 的体验。这包括文件系统驱动程序、图形驱动程序、网络驱动程序、声音驱动程序、网络摄像头和视频驱动程序。
ELRepo 存储库内容
ELRepo 包含四个频道。 您可以通过单击其名称来浏览每个频道的内容。
这是主通道,默认启用。 由于此频道不应包含发行版中也存在的软件包,因此在启用此存储库频道的情况下运行 “yum 更新” 应该是安全的。
例如安装 kmod-r8168(Realtek r8168 网卡驱动):
yum install kmod-r8168
根据正在安装的软件包或存储库设置,可能需要禁用非 elrepo 存储库:
yum --disablerepo=\* --enablerepo=elrepo install kmod-nvidia
elrepo-extras 频道提供了替换 / 更新 RHEL 分发包的包及其依赖项。 它可以在 /etc/yum.repos.d/elrepo.repo 文件中启用或与 “yum --enablerepo=elrepo-extras” 一起使用。
elrepo-testing 频道提供尚未发布到主频道的软件包,默认情况下处于禁用状态。 它可以在 /etc/yum.repos.d/elrepo.repo 文件中启用或与 “yum --enablerepo=elrepo-testing” 一起使用。
elrepo-kernel 频道使用 Linux Kernel Archives 长期支持内核(已为 RHEL-7 配置)和最新的稳定主线内核(已为 RHEL-8 和 RHEL-7 配置)。 请参阅 kernel-lt 或 kernel-ml 页面以获取更多详细信息。 该频道可以在 /etc/yum.repos.d/elrepo.repo
文件中启用或与 “yum --enablerepo=elrepo-kernel” 一起使用。
启用 ELRepo
从 CentOS 8 开始,ELRepo 已经加入到官方软件仓库中,名称为 “elrepo-release”。
AlmaLinux 和 Rocky Linux 同样适用。
启用 ELRepo 只需要执行命令:
dnf -y install elrepo-release
#or
yum -y install elrepo-release
以下为 rpm 包在线安装方法:
# Import the public key:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
# To install ELRepo for RHEL-**8** or CentOS-**8**:
yum install https://www.elrepo.org/elrepo-release-8.el8.elrepo.noarch.rpm
# To install ELRepo for RHEL-**7**, SL-**7** or CentOS-**7**:
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
# To make use of our mirror system, **please also install yum-plugin-fastestmirror**.
升级内核
升级内核步骤如下:
-
查询 ELRepo 中的 kernel 版本
# 列出可用的内核相关包: yum --disablerepo="*" --enablerepo="elrepo-kernel" list available yum --disablerepo="*" --enablerepo="elrepo-kernel" list available --showduplicates #查看所有版本
术语解释
- kernel-ml
kernel-ml 中的 ml 是英文 “mainline stable” 的缩写,elrepo-kernel 中列出来的是最新的稳定主线版本。 - kernel-lt
kernel-lt 中的 lt 是英文 “long term support” 的缩写,elrepo-kernel 中列出来的长期支持版本。
- kernel-ml
-
查询安装的 kernel 包
# 查询所有 kernel 包 rpm -qa|grep kernel # 示例输出如下: kernel-core-4.18.0-348.el8.x86_64 kernel-4.18.0-348.2.1.el8_5.x86_64 kernel-core-4.18.0-348.2.1.el8_5.x86_64 kernel-modules-4.18.0-348.2.1.el8_5.x86_64 kernel-devel-4.18.0-348.2.1.el8_5.x86_64 kernel-modules-4.18.0-348.el8.x86_64 kernel-tools-libs-4.18.0-348.2.1.el8_5.x86_64 kernel-headers-4.18.0-348.2.1.el8_5.x86_64 kernel-4.18.0-348.el8.x86_64 kernel-tools-4.18.0-348.2.1.el8_5.x86_64
-
安装 kernel
# 根据上述查询结果,安装内核相关包 # 安装新内核 yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64 #kernel-core、kernel-modules 与 kernel 依赖自动更新 # 安装新内核相关软件 yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-devel kernel-ml-tools kernel-ml-tools-libs kernel-ml-tools-libs-devel kernel-ml-headers --skip-broken
新内核将成为默认启动内核,可以根据需要调整默认启动项,如下文描述。
-
查看和设置默认启动项
grubby 是一个命令行工具,用于更新和显示有关 grub2 和 zipl 引导加载程序的配置文件的信息。它主要设计用于安装新内核并需要查找有关当前引导环境的信息的脚本。同时也可以对启动内核的各项信息参数进行修改。
在 CentOS 8 在已经自带该命令,如果没有通过
yum install grubby
来安装即可。查看当前的默认启动内核:
$ grubby --default-kernel /boot/vmlinuz-5.15.4-1.el8.elrepo.x86_64
查看系统安装的全部内核:
$ grubby --info=ALL index=0 kernel="/boot/vmlinuz-5.15.4-1.el8.elrepo.x86_64" args="ro crashkernel=auto net.ifnames=0 $tuned_params" root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3" initrd="/boot/initramfs-5.15.4-1.el8.elrepo.x86_64.img $tuned_initrd" title="Rocky Linux (5.15.4-1.el8.elrepo.x86_64) 8.5 (Green Obsidian)" id="032ed95ba9c0471381bbb6b416eff523-5.15.4-1.el8.elrepo.x86_64" index=1 kernel="/boot/vmlinuz-4.18.0-348.2.1.el8_5.x86_64" args="ro crashkernel=auto net.ifnames=0 $tuned_params" root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3" initrd="/boot/initramfs-4.18.0-348.2.1.el8_5.x86_64.img $tuned_initrd" title="Rocky Linux (4.18.0-348.2.1.el8_5.x86_64) 8.5 (Green Obsidian)" id="032ed95ba9c0471381bbb6b416eff523-4.18.0-348.2.1.el8_5.x86_64" index=2 kernel="/boot/vmlinuz-4.18.0-348.el8.x86_64" args="ro crashkernel=auto net.ifnames=0 $tuned_params intel_iommu=on" root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3" initrd="/boot/initramfs-4.18.0-348.el8.x86_64.img $tuned_initrd" title="AlmaLinux (4.18.0-348.el8.x86_64) 8.5 (Arctic Sphynx)" id="032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64" index=3 kernel="/boot/vmlinuz-0-rescue-032ed95ba9c0471381bbb6b416eff523" args="ro crashkernel=auto net.ifnames=0" root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3" initrd="/boot/initramfs-0-rescue-032ed95ba9c0471381bbb6b416eff523.img" title="AlmaLinux (0-rescue-032ed95ba9c0471381bbb6b416eff523) 8.5 (Arctic Sphynx)" id="032ed95ba9c0471381bbb6b416eff523-0-rescue"
查看特定内核的具体信息:
$ grubby --info=/boot/vmlinuz-4.18.0-348.el8.x86_64 index=1 kernel="/boot/vmlinuz-4.18.0-348.el8.x86_64" args="ro crashkernel=auto net.ifnames=0 $tuned_params" root="UUID=56c34ece-6010-480e-aeac-dea98b8ffcd3" initrd="/boot/initramfs-4.18.0-348.el8.x86_64.img $tuned_initrd" title="AlmaLinux (4.18.0-348.el8.x86_64) 8.5 (Arctic Sphynx)" id="032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64"
设置新的默认启动内核:
- 使用路径来指定内核,可以使用 --set-default=kernel-path
$ grubby --set-default=/boot/vmlinuz-4.18.0-348.el8.x86_64 The default is /boot/loader/entries/032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-348.el8.x86_64 $ grubby --default-kernel /boot/vmlinuz-4.18.0-348.el8.x86_64
- 使用 index 来指定内核,则使用 --set-default-index=entry-index
$ grubby --set-default-index=1 The default is /boot/loader/entries/032ed95ba9c0471381bbb6b416eff523-4.18.0-348.el8.x86_64.conf with index 1 and kernel /boot/vmlinuz-4.18.0-348.el8.x86_64 $ grubby --default-kernel /boot/vmlinuz-4.18.0-348.el8.x86_64
-
重启后生效
reboot #重启
-
删除旧内核(可选)
从启动项中删除旧内核
grubby --remove-kernel=/boot/vmlinuz-4.18.0-348.el8.x86_64
删除旧内核文件
# 删除旧内核 yum remove kernel-4.18.0 kernel-core-4.18.0 kernel-modules-4.18.0 kernel-devel-4.18.0 kernel-tools-4.18.0 kernel-tools-libs-4.18.0 kernel-headers-4.18.0 # 注意,会同时删除一些依赖包(如 gcc、systemtap 等),需要重新补安装回来。 # 再查看系统已安装的内核,确认旧内核版本已经删除: rpm -qa | grep kernel