Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

6.8. 禁用内核实时补丁

如果系统管理员遇到与 Red Hat Enterprise Linux 内核实时修补解决方案相关联的一些无法预期的负面影响,他们可以选择禁用该机制。以下小节描述了如何禁用实时补丁解决方案。

重要

目前,红帽不支持在不重启系统的情况下还原实时补丁。如有任何问题,请联系我们的支持团队。

6.8.1. 删除 live patching 软件包

下面的步骤描述了如何通过删除 live patching 软件包禁用Red Hat Enterprise Linux 内核实时修补解决方案。

先决条件
  • 根权限
  • 已安装 live patching 软件包。
流程
  1. 选择 live patching 软件包:

    # yum list installed | grep kpatch-patch
    kpatch-patch-3_10_0-1062.x86_64        1-1.el7        @@commandline
    …​

    上面的输出示例列出了您安装的实时补丁软件包。

  2. 删除 live patching 软件包:

    # yum remove kpatch-patch-3_10_0-1062.x86_64

    删除实时补丁软件包后,内核将保持补丁,直到下次重启为止,但内核补丁模块会从磁盘中删除。下一次重启后,对应的内核将不再修补。

  3. 重启您的系统。
  4. 验证 live patching 软件包是否已删除:

    # yum list installed | grep kpatch-patch

    如果软件包已被成功删除,命令不会显示任何输出。

  5. (可选)验证内核实时补丁解决方案是否已禁用:

    # kpatch list
    Loaded patch modules:

    示例输出显示内核没有补丁,实时补丁解决方案没有激活,因为目前没有加载补丁模块。

其它资源
  • 有关 kpatch 命令行工具的详情请参考 kpatch(1) 手册页。
  • 有关使用软件包的更多信息,请参阅《 系统管理员指南》的 相关章节。

6.8.2. 卸载内核补丁模块

下面的步骤描述了如何防止 Red Hat Enterprise Linux 内核实时修补解决方案,使其在以后的引导中应用内核补丁模块。

先决条件
  • 根权限
  • 已安装实时补丁软件包。
  • 已安装并载入内核补丁模块。
流程
  1. 选择内核补丁模块:

    # kpatch list
    Loaded patch modules:
    kpatch_3_10_0_1062_1_1 [enabled]
    
    Installed patch modules:
    kpatch_3_10_0_1062_1_1 (3.10.0-1062.el7.x86_64)
    …​
  2. 卸载所选内核补丁模块:

    # kpatch uninstall kpatch_3_10_0_1062_1_1
    uninstalling kpatch_3_10_0_1062_1_1 (3.10.0-1062.el7.x86_64)
    • 请注意,卸载的内核补丁模块仍然被加载:

      # kpatch list
      Loaded patch modules:
      kpatch_3_10_0_1062_1_1 [enabled]
      
      Installed patch modules:
      <NO_RESULT>

      卸载所选模块后,内核将保持补丁,直到下次重启为止,但已从磁盘中删除内核补丁模块。

  3. 重启您的系统。
  4. (可选)验证内核补丁模块是否已卸载:

    # kpatch list
    Loaded patch modules:

    以上输出示例显示没有加载或已安装的内核补丁模块,因此没有修补内核,且内核实时补丁解决方案未激活。

其它资源
  • 有关 kpatch 命令行工具的详情请参考 kpatch(1) 手册页。

6.8.3. 禁用 kpatch.service

下面的步骤描述了如何防止 Red Hat Enterprise Linux 内核实时修补解决方案在以后的引导中全局应用所有内核补丁模块。

先决条件
  • 根权限
  • 已安装实时补丁软件包。
  • 已安装并载入内核补丁模块。
流程
  1. 验证 kpatch.service 是否已启用:

    # systemctl is-enabled kpatch.service
    enabled
  2. 禁用 kpatch.service

    # systemctl disable kpatch.service
    Removed /etc/systemd/system/multi-user.target.wants/kpatch.service.
    • 请注意,应用的内核补丁模块仍然被载入:

      # kpatch list
      Loaded patch modules:
      kpatch_3_10_0_1062_1_1 [enabled]
      
      Installed patch modules:
      kpatch_3_10_0_1062_1_1 (3.10.0-1062.el7.x86_64)
  3. 重启您的系统。
  4. (可选)验证 kpatch.service 的状态:

    # systemctl status kpatch.service
    ● kpatch.service - "Apply kpatch kernel patches"
       Loaded: loaded (/usr/lib/systemd/system/kpatch.service; disabled; vendor preset: disabled)
       Active: inactive (dead)

    示例输出测试 kpatch.service 已被禁用且没有在运行。因此,内核实时修补解决方案不活跃。

  5. 确认内核补丁模块已被卸载:

    # kpatch list
    Loaded patch modules:
    
    Installed patch modules:
    kpatch_3_10_0_1062_1_1 (3.10.0-1062.el7.x86_64)

    上面的示例输出显示内核补丁模块仍处于安装状态,但没有修补内核。

其它资源
  • 有关 kpatch 命令行工具的详情请参考 kpatch(1) 手册页。
  • 有关 systemd 系统和服务管理器、单元配置文件、位置以及完整的 systemd 单元类型列表的更多信息,请参阅 系统管理员指南中 的相关部分。