Red Hat Training

A Red Hat training course is available for RHEL 8

22.7. 自动订阅将来的内核到实时补丁流

您可以使用 kpatch-dnf YUM 插件向您的系统订阅内核补丁模块(也称为内核实时补丁)提供的修复。该插件为系统当前使用的任何内核启用自动订阅,以及在以后安装地内核。

先决条件

  • 您有 root 权限。

流程

  1. (可选)检查所有安装的内核和您当前运行的内核:

    # yum list installed | grep kernel
    Updating Subscription Management repositories.
    Installed Packages
    ...
    kernel-core.x86_64         4.18.0-240.10.1.el8_3           @rhel-8-for-x86_64-baseos-rpms
    kernel-core.x86_64         4.18.0-240.15.1.el8_3           @rhel-8-for-x86_64-baseos-rpms
    ...
    
    # uname -r
    4.18.0-240.10.1.el8_3.x86_64
  2. 安装 kpatch-dnf 插件:

    # yum install kpatch-dnf
  3. 启用自动订阅内核实时补丁:

    # yum kpatch auto
    Updating Subscription Management repositories.
    Last metadata expiration check: 19:10:26 ago on Wed 10 Mar 2021 04:08:06 PM CET.
    Dependencies resolved.
    ==================================================
     Package                             Architecture
    ==================================================
    Installing:
     kpatch-patch-4_18_0-240_10_1        x86_64
     kpatch-patch-4_18_0-240_15_1        x86_64
    
    Transaction Summary
    ===================================================
    Install  2 Packages
    …​

    这个命令订阅所有当前安装的内核,以接收内核实时补丁。命令还会为所有安装的内核安装并应用最新的累积实时补丁(如果有)。

    将来,当您更新内核时,将在新的内核安装过程中自动安装实时补丁。

    内核补丁模块也安装到 /var/lib/kpatch/ 目录中,供 systemd 系统和服务管理器以后重启时载入。

    注意

    当给定内核没有可用的实时补丁时,将安装空的实时补丁软件包。空的 live patching 软件包会有一个 0-0 的 kpatch_version-kpatch_release,如 kpatch-patch-4_18_0-240-0-0.el8.x86_64.rpm。空 RPM 安装会将系统订阅到以后为给定内核提供的所有实时补丁。

验证

  • 验证是否所有安装的内核都已打了补丁:

    # kpatch list
    Loaded patch modules:
    kpatch_4_18_0_240_10_1_0_1 [enabled]
    
    Installed patch modules:
    kpatch_4_18_0_240_10_1_0_1 (4.18.0-240.10.1.el8_3.x86_64)
    kpatch_4_18_0_240_15_1_0_2 (4.18.0-240.15.1.el8_3.x86_64)

    输出显示您正在运行的内核,另一个安装的内核已分别修补了来自 kpatch-patch-4_18_0-240_10_1-0-1.rpmkpatch-patch-4_18_0-240_15_1-0-1.rpm 软件包的修复。

    注意

    输入 kpatch list 命令不会返回一个空的实时补丁软件包。使用 rpm -qa | grep kpatch 命令替代。

    # rpm -qa | grep kpatch
    kpatch-patch-4_18_0-477_21_1-0-0.el8_8.x86_64
    kpatch-dnf-0.9.7_0.4-2.el8.noarch
    kpatch-0.9.7-2.el8.noarch

其它资源

  • kpatch(1)dnf-kpatch(8)手册页