您可以通过本文了解获取Alibaba Cloud Linux内核热补丁的方式,以及如何在Alibaba Cloud Linux实例内启用、禁用内核热补丁或禁用kpatch系统服务。
背景信息
内核热补丁的相关操作说明如下:
如何获取内核热补丁以及如何查看热补丁的具体信息,请参见获取内核热补丁。
如果您需要在操作系统中启用内核热补丁,具体操作,请参见启用内核热补丁。
如果操作系统中已启用的内核热补丁存在问题,您可以禁用该补丁。具体操作,请参见禁用内核热补丁。
如果操作系统中已启用了内核热补丁,但您需要在重启服务器时,使操作系统不自动加载所有的热补丁的内核模块,您可以禁用kpatch系统服务。具体操作,请参见禁用kpatch系统服务。
获取内核热补丁
每一个内核热补丁均通过RPM包发布,您可以通过以下任一方式获取热补丁的安装包:
Alibaba Cloud Linux CVE公告平台
访问CVE公告平台。
所有已发布的热补丁都将在CVE公告平台上公示,您可以访问不同发行版本的CVE公告平台进行查看。
单击Advisory ID列名,重新排序列表内的信息,将热补丁的相关更新展示在最上方。
以
HOTFIX
开头的Advisory ID为内核热补丁,重新排序后如下图所示:关于CVE公告平台中的信息说明,如下表所示。
列信息
说明
Affected Packages
表示内核热补丁的具体包名。名称以
kernel-hotfix-
为前缀,以Alibaba Cloud Linux操作系统的子版本号信息为后缀。您可以通过名称后缀确认该热补丁是否适用于您的Alibaba Cloud Linux操作系统。例如:
Affected Packages的信息为
kernel-hotfix-5928799-5.al8
。您在Alibaba Cloud Linux 3操作系统中运行uname -r命令的回显结果为
5.10.23-5.al8.x86_64
。
Alibaba Cloud Linux 3子版本号信息均为
5.al8
,则表示该热补丁适用于您的Alibaba Cloud Linux 3操作系统。说明Alibaba Cloud Linux 2操作系统的版本号均为al7。
Advisory ID
表示热补丁的发布序号。分为安全漏洞(CVE)和错误修复(Bugfix)两类热补丁,命名有如下区别:
安全漏洞补丁以
HOTFIX-SA-
为前缀。错误修复补丁以
HOTFIX-BA-
为前缀。
您可以单击热补丁的Advisory ID查看补丁的详细信息,并支持下载热补丁的RPM包。
CVE ID(s)
表示具体修复的安全漏洞(CVE)ID号。如果是错误修复热补丁,则CVE ID(s)列的内容为空。
单击Advisory ID列下对应的热补丁发布序号,进入热补丁详情页。
在该页面,您可以查看热补丁的详细信息,以及热补丁RPM包对应的名称。
补丁RPM包的格式为
kernel-hotfix-{hotfix_id}-{操作系统子版本号}-{hotfix版本号}-{hotfix制作时间戳}.{操作系统大版本号}.{体系架构}.rpm
。例如上图所示的格式RPM包名称说明:
5928799:热补丁的ID。
5.al8:匹配的Alibaba Cloud Linux 3子版本号,您的Alibaba Cloud Linux 3操作系统的内核版本需要与该版本一致,才可以使用该热补丁。操作系统的内核版本信息可以在ECS实例内运行uname -r查看。
1.0:热补丁的RPM包版本号。
20210720165816:热补丁的制作时间为2021年07月20日16时58分16秒。部分历史版本的热补丁中该字段可能为无效的值。
al8:匹配的Alibaba Cloud Linux 3版本号。Alibaba Cloud Linux 3操作系统的版本号均为al8。
说明Alibaba Cloud Linux 2操作系统的版本号均为al7。
x86_64:适用的操作系统的体系架构为x86_64。
yum源
您可以通过yum list命令查询相应的内核热补丁安装包。具体操作,请参见启用内核热补丁。
启用内核热补丁
远程连接需要热补丁的Alibaba Cloud Linux实例。
具体操作,请参见连接方式概述。
运行以下命令,安装kpatch工具。
sudo yum -y install kpatch
安装热补丁。
运行以下命令,查看操作系统的内核版本信息。
sudo uname -r
本示例中,查询结果如下所示。可以确认该操作系统的子版本号为
5.al8
。5.10.23-5.al8.x86_64
使用yum list命令查询适用于该操作系统的内核热补丁。
命令格式为:
sudo yum list | grep "kernel-hotfix" | grep "<操作系统的子版本号>"
本示例中,操作系统的子版本号为
5.al8
,需要运行以下命令:sudo yum list | grep "kernel-hotfix" | grep "5.al8"
回显结果示例,如下所示:
kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 alinux3-plus kernel-hotfix-5956925-5.al8.x86_64 1.0-20210726171200.al8 alinux3-plus
安装指定的热补丁。
本示例中,以
kernel-hotfix-5928799-5.al8.x86_64
为例,说明如何通过yum命令安装热补丁。说明通过yum安装热补丁时,不需要指定RPM包文件的后缀
.rpm
。sudo yum -y install kernel-hotfix-5928799-5.al8.x86_64
运行以下命令,通过kpatch工具查看系统补丁的状态。
sudo kpatch list
回显结果如下所示,表示内核热补丁安装成功且已经生效。
Loaded patch modules: kpatch_5928799 [enabled] Installed patch modules: kpatch_5928799 (5.10.23-5.al8.x86_64)
禁用内核热补丁
如果您已启用的热补丁存在问题(例如热补丁未生效),可以通过以下步骤禁用内核热补丁以解决问题。本示例将使用yum命令完成操作。
运行以下命令,查看可禁用的热补丁包。
sudo yum list installed | grep kernel-hotfix
回显结果示例,如下所示:
kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 @alinux3-plus
运行以下命令,删除存在问题的热补丁包。
本示例中,以
kernel-hotfix-5928799-5.al8.x86_64
为例。sudo yum -y remove kernel-hotfix-5928799-5.al8.x86_64
运行以下命令,确认存在问题的热补丁包已经被删除。
sudo kpatch list
回显结果如下所示,表示没有已安装并生效的热补丁。
Loaded patch modules: Installed patch modules:
禁用kpatch系统服务
如果您的热补丁已安装并且已生效,但您需要在重启服务器时,使操作系统不自动加载所有的热补丁的内核模块,您可以通过以下操作步骤禁用kpatch系统服务。
运行以下命令,查看kpatch系统服务是否已启动。
sudo systemctl is-enabled kpatch.service
回显结果为
enabled
,表示kpatch系统服务已启动。运行以下命令,禁用kpatch系统服务。
sudo systemctl disable kpatch.service
回显结果如下所示,表示已禁用kpatch系统服务。
Removed symlink /etc/systemd/system/multi-user.target.wants/kpatch.service.
运行以下命令,查看kpatch系统服务状态。
sudo systemctl status kpatch.service
回显结果如下所示,表示kpatch系统服务已禁用。
kpatch.service - "Apply kpatch kernel patches" Loaded: loaded (/usr/lib/systemd/system/kpatch.service; disabled; vendor preset: disabled)
说明如有需要,您可以运行
sudo systemctl enable kpatch.service
命令,重新启用kpatch系统服务。