

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 内核实时补丁已开启 AL2023
<a name="live-patching"></a>

您可以使用 Kernel Live Patching 将特定的安全漏洞和严重错误补丁应用于正在运行的 Linux 内核，而无需重启或中断正在运行的应用程序。 AL2023 此外，在内核实时修补应用这些修复期间，直到系统可以重启之前，它有助于提高应用程序的可用性。

Amazon 发布了两种类型的内核实时补丁，用于 AL2023：
+ **安全更新** - 包括 Linux 常见漏洞和风险（CVE）的更新。通常使用 Amazon Linux 安全通告评级将这些更新评为*重要* 或*关键*。在某些情况下， Amazon 可能会在分配 CVE 之前提供更新。在这些情况下，补丁可能会显示为错误修复。安全更新的内核实时补丁是在*尽力而为的基础*上提供的，并非所有重要或关键的补丁 CVEs 都可以作为给定内核版本的实时补丁提供。要确定某个特定 CVE 是否已通过实时补丁解决，请查看 [Amazon Linux 安全公告](https://alas.aws.amazon.com/alas2023.html)。
+ **错误修复**-包括针对与之无关的关键错误和稳定性问题的修复 CVEs。

Amazon 在内 AL2023 核版本发布后，为其提供最长 3 个月的内核实时补丁。三个月之后，您必须更新为更高的内核版本才能继续收到内核实时补丁。

AL2023 内核实时补丁以已签名的 RPM 包的形式在现有 AL2023 存储库中提供。可以使用现有 **DNF 软件包管理器**工作流在单个实例上安装补丁。或者，也可以使用 S Amazon ystems Manager 将它们安装在一组托管实例上。

开启内核实时补丁 AL2023 功能不收取额外费用。

**Topics**
+ [限制](#live-patching-limitations)
+ [支持的配置和先决条件](#live-patching-prereq)
+ [使用内核实时修补](#working-with-live-patching)

## 限制
<a name="live-patching-limitations"></a>

在应用内核实时补丁时，无法执行休眠以及使用高级调试工具（例如 `SystemTap`、`kprobes` 和基于 `eBPF` 的工具），或者访问内核实时修补基础设施使用的 `ftrace` 输出文件。

**注意**  
由于技术限制，有些问题无法通过实时修补解决。因此，这些修复将不会在内核实时修补程序包中提供，而仅在本机内核程序包更新中提供。您可以照常安装本机内核程序包并[更新和重启](https://docs.amazonaws.cn/linux/al2023/ug/updating.html)系统以激活补丁。

## 支持的配置和先决条件
<a name="live-patching-prereq"></a>

Amazon EC2 实例和运行 AL2023的本地虚拟机支持内核实时补丁。

要在开启内核实时补丁 AL2023，必须使用以下内容：
+ 64 位 `x86_64` 或 `ARM64` 架构
+ 内核版本 `6.1` 或 `6.12`

### 政策要求
<a name="policy-requirements"></a>

要从 AL2023 存储库下载程序包，Amazon EC2 需要访问服务拥有的 Amazon S3 存储桶。如果您在环境中使用 Amazon S3 的 Amazon 虚拟私有云（VPC）端点，请确保您的 VPC 端点策略允许访问那些公共存储桶。下表描述了 Amazon EC2 可能需要访问以用于内核实时修补的 Amazon S3 存储桶。


| S3 存储桶 ARN | 说明 | 
| --- | --- | 
| arn: aws: s3::: al2023-repos--de612dc2/\* {{region}} | 包含存储库的 Amazon S3 AL2023 存储桶 | 

## 使用内核实时修补
<a name="working-with-live-patching"></a>

要在单独的实例上启用和使用内核实时修补，可在该实例本身上使用命令行。要在一组托管实例上启用和使用内核实时修补，可以使用 Amazon Systems Manager。

以下部分介绍如何在单独的实例上使用命令行来启用和使用内核实时修补。

有关在一组托管实例上启用和使用内核实时补丁的更多信息，请参阅《*Amazon Systems Manager 用户*指南》中的在[ AL2023 实例上使用内核实时补丁](https://docs.amazonaws.cn/systems-manager/latest/userguide/kernel-live-patching.html)。

**Topics**
+ [启用内核实时修补](#live-patching-enable)
+ [查看可用的内核实时补丁](#live-patching-view-available)
+ [应用内核实时补丁](#live-patching-apply)
+ [查看应用的内核实时补丁](#live-patching-view)
+ [禁用内核实时修补](#live-patching-disable)

### 启用内核实时修补
<a name="live-patching-enable"></a>

默认情况下，“内核实时补丁” 处于禁用状态。 AL2023要使用内核实时修补，必须为其安装 **DNF** 插件，并启用实时修补功能。

**启用内核实时修补**

1. 内核实时补丁适用于 AL2023 内核版本`6.1`。要检查内核版本，请运行以下命令。

   ```
   $ sudo dnf list kernel
   ```

1. 为内核实时修补安装 **DNF** 插件。

   ```
   $ sudo dnf install -y kpatch-dnf
   ```

1. 为内核实时修补启用 **DNF** 插件。

   ```
   $ sudo dnf kernel-livepatch -y auto
   ```

   此命令还会安装来自配置的存储库的最新版本的内核实时补丁 RPM。

1. 要确认内核实时修补的 **DNF** 插件是否安装成功，请运行以下命令。

   当您启用内核实时修补时，会自动应用空的内核实时补丁 RPM。如果内核实时修补成功启用，此命令返回一个列表，其中包括初始的空内核实时修补 RPM（以及另一个设置包含实时补丁的 DNF 存储库的 RPM）。

   ```
   $ sudo rpm -qa | grep kernel-livepatch
   kernel-livepatch-repo-s3-2023.7.20250428-0.amzn2023.noarch
   kernel-livepatch-6.1.134-150.224-1.0-0.amzn2023.x86_64
   ```

1. 安装 **kpatch** 软件包。

   ```
   $ sudo dnf install -y kpatch-runtime
   ```

1. 如果之前安装过 **kpatch** 服务，请更新它。

   ```
   $ sudo dnf upgrade kpatch-runtime
   ```

1. 启动 **kpatch** 服务。此服务在初始化或启动时会加载所有内核实时补丁。

   ```
   $ sudo systemctl enable kpatch.service && sudo systemctl start kpatch.service
   ```

### 查看可用的内核实时补丁
<a name="live-patching-view-available"></a>

Amazon Linux 安全警报会发布到 Amazon Linux 安全中心。有关 AL2023 安全警报（包括内核实时补丁警报）的更多信息，请参阅 [Amazon Linux 安全中心](https://alas.aws.amazon.com/alas2023.html)。内核实时补丁的前缀为 `ALASLIVEPATCH`。Amazon Linux 安全中心可能不会列出解决错误的内核实时补丁。

您还可以 CVEs 使用命令行查找可用的内核实时补丁以获取公告。

**列出所有可用的内核实时补丁以获取通告**  
使用以下命令。

```
$ sudo dnf updateinfo list
Last metadata expiration check: 1:06:23 ago on Mon 13 Feb 2023 09:28:19 PM UTC.
ALAS2LIVEPATCH-2021-123   important/Sec. kernel-livepatch-6.1.12-17.42-1.0-4.amzn2023.x86_64
ALAS2LIVEPATCH-2022-124   important/Sec. kernel-livepatch-6.1.12-17.42-1.0-3.amzn2023.x86_64
```

**列出所有可用的内核实时补丁 CVEs**  
使用以下命令。

```
$ sudo dnf updateinfo list cves
Last metadata expiration check: 1:07:26 ago on Mon 13 Feb 2023 09:28:19 PM UTC.
CVE-2022-0123    important/Sec. kernel-livepatch-6.1.12-17.42-1.0-4.amzn2023.x86_64
CVE-2022-3210    important/Sec. kernel-livepatch-6.1.12-17.42-1.0-3.amzn2023.x86_64
```

### 应用内核实时补丁
<a name="live-patching-apply"></a>

您可以使用 **DNF** 软件包管理器，就像应用常规更新那样来应用内核实时补丁。用于内核实时修补的 **DNF** 插件管理可用的内核实时补丁。

**提示**  
我们建议您使用 Kernel Live Patching 定期更新内核，以确保在系统重新启动之前，内核收到特定的安全补丁。还请检查是否有其他修复已可用于本机内核程序包，这些修复无法作为实时补丁部署，并在这些情况下[更新并重启](https://docs.amazonaws.cn/linux/al2023/ug/updating.html)到内核更新。

您可以选择应用特定的内核实时补丁，或者应用任何可用的内核实时补丁以及定期安全更新。

**应用特定内核实时补丁**

1. 使用 [查看可用的内核实时补丁](#live-patching-view-available) 中描述的命令之一获取内核实时补丁版本。

1. 为您的 AL2023 内核应用内核实时补丁。

   ```
   $ sudo dnf install kernel-livepatch-{{kernel_version}}-{{package_version}}.amzn2023.x86_64
   ```

   例如，以下命令为内核版本应用内核实时补 AL2023 丁 `6.1.12-17.42`

   ```
   $ sudo dnf install kernel-livepatch-6.1.12-17.42-1.0-4.amzn2023.x86_64
   ```

**应用任何可用的内核实时补丁以及定期安全更新**  
使用以下命令。

```
$ sudo dnf upgrade --security
```

省略 `--security` 选项将包含错误修复。

**重要**  
应用内核实时补丁后，内核版本不会更新。仅当重启实例后，版本才会更新为新版本。
内 AL2023 核会接收 3 个月的内核实时补丁。之后，不会为该内核版本发布新的内核实时补丁。
要想在三个月后继续收到内核实时补丁，您必须重启实例以移至新的内核版本。更新后，实例将在接下来的三个月内继续收到内核实时补丁。
要查看内核版本的支持窗口，请运行以下命令。  

  ```
  $ sudo dnf kernel-livepatch support
  The current version of the Linux kernel you are running will no longer receive live patches after 2025-07-22.
  ```

### 查看应用的内核实时补丁
<a name="live-patching-view"></a>

**查看应用的内核实时补丁**  
使用以下命令。

```
$ sudo kpatch list
Loaded patch modules:
livepatch_CVE_2022_36946 [enabled]

Installed patch modules:
livepatch_CVE_2022_36946 (6.1.57-29.131.amzn2023.x86_64)
livepatch_CVE_2022_36946 (6.1.57-30.131.amzn2023.x86_64)
```

该命令返回已加载和安装的安全更新内核实时补丁的列表。下面是示例输出。

**注意**  
单个内核实时补丁可以包含和安装多个实时补丁。

### 禁用内核实时修补
<a name="live-patching-disable"></a>

如果您不再需要使用内核实时修补，可以随时禁用它。
+ 要禁用 livepatches，可执行以下操作：

  1. 禁用插件：

     ```
     $ sudo dnf kernel-livepatch manual
     ```

  1. 禁用 kpatch 服务：

     ```
     $ sudo systemctl disable --now kpatch.service
     ```
+ 要完全移除 livepatch 工具，可执行以下操作：

  1. 移除插件：

     ```
     $ sudo dnf remove kpatch-dnf
     ```

  1. 移除 kpatch-runtime：

     ```
     $ sudo dnf remove kpatch-runtime
     ```

  1. 移除任何已安装的 livepatches：

     ```
     $ sudo dnf remove kernel-livepatch\*
     ```