

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AL2 上的核心即時修補
<a name="al2-live-patching"></a>

**重要**  
Amazon Linux 將於 2025-10-31 結束 AL2 核心 4.14 的即時修補。我們鼓勵客戶使用核心 5.10 做為 AL2 的預設核心 （請參閱 [AL2 支援的核心](https://docs.aws.amazon.com/linux/al2/ug/aml2-kernel.html))，或使用核心 6.1 和 6.12 移至 AL2023。  
Amazon Linux 將為 AL2 核心 5.10 提供即時修補程式，直到 AL2 在 2026-06-30 的生命週期結束為止。

適用於 AL2 的 Kernel Live Patching 可讓您將特定安全性漏洞和關鍵錯誤修補程式套用至執行中的 Linux 核心，而不會重新啟動或中斷執行中的應用程式。這可讓您受益於改善的服務和應用程式可用性，同時套用這些修正，直到系統可以重新啟動為止。

如需 AL2023 的 Kernel Live Patching 相關資訊，請參閱《Amazon Linux [2023 使用者指南》中的 AL2023 上的 Kernel Live Patching](https://docs.aws.amazon.com/linux/al2023/ug/live-patching.html)。 **

AWS 為 AL2 發行兩種類型的核心即時修補程式：
+ **安全性更新** – 包含 Linux 常見漏洞和入侵程式 (CVE) 的更新。這些更新通常會使用 Amazon Linux 安全建議分級評定為 *important (重要)* 或 *critical (嚴重)*。它們通常對應到通用漏洞評分系統 (CVSS) 分數的 7 及以上。在某些情況下， AWS 可能會在指派 CVE 之前提供更新。在這些情況下，修補程式可能會顯示為錯誤修正。
+ **錯誤修正** – 包含修正與 CVE 無關的重大錯誤和穩定性問題。

AWS 提供 AL2 核心版本的核心即時修補程式，最長可達發行後 3 個月。在 3 個月期間之後，您必須更新至更新的核心版本，才能繼續接收核心即時修補程式。

AL2 核心即時修補程式可在現有 AL2 儲存庫中以簽章的 RPM 套件的形式提供。這些修補程式可以使用現有的 **yum** 工作流程安裝在個別執行個體上，也可以使用 AWS Systems Manager 安裝在受管執行個體群組上。

在 AL2 上提供 Kernel Live Patching，無需額外費用。

**Topics**
+ [支援的組態和先決條件](#al2-live-patching-prereq)
+ [使用 Kernel Live Patching](#working-with-live-patching)
+ [限制](#al2-live-patching-limitations)
+ [常見問答集](#al2-live-patching-faq)

## 支援的組態和先決條件
<a name="al2-live-patching-prereq"></a>

執行 AL22 的 Amazon EC2 執行個體和[內部部署虛擬機器](amazon-linux-2-virtual-machine.md)支援 Kernel Live Patching。

若要在 AL2 上使用核心即時修補，您必須使用：
+ `x86_64` 架構上的核心版本 `4.14` 或 `5.10`
+ `ARM64` 架構上的核心版本 `5.10`

**政策要求**

<a name="aml-live-patching"></a>若要從 Amazon Linux 儲存庫下載套件，Amazon EC2 需要存取服務擁有的 Amazon S3 儲存貯體。如果您在環境中使用適用於 Amazon S3 的 Amazon 虛擬私有雲端 (VPC) 端點，則需要確保您的 VPC 端點政策允許存取這些公有儲存貯體。

下表說明對於 Kernel Live Patching，EC2 可能需要存取的每個 Amazon S3 儲存貯體。


| S3 儲存貯體 ARN | Description | 
| --- | --- | 
|  arn:aws:s3:::packages.region.amazonaws.com/\$1  |  含有 Amazon Linux AMI 套件的 Amazon S3 儲存貯體   | 
|  arn:aws:s3:::repo.region.amazonaws.com/\$1  |  含有 Amazon Linux AMI 儲存庫的 Amazon S3 儲存貯體  | 
|  arn:aws:s3:::amazonlinux.region.amazonaws.com/\$1  |  包含 AL2 儲存庫的 Amazon S3 儲存貯體  | 
|  arn:aws:s3:::amazonlinux-2-repos-region/\$1  |  包含 AL2 儲存庫的 Amazon S3 儲存貯體   | <a name="s3_live_patch_permissions"></a>

下方政策會說明如何限制存取屬於您組織的 Amazon S3 儲存貯體的身分和資源，並提供 Kernel Live Patching 所需的 Amazon S3 儲存貯體的存取權限。使用您組織的值取代 *region*、*principal-org-id* 以及 *resource-org-id*。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Sid": "AllowRequestsByOrgsIdentitiesToOrgsResources",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": "*",
      "Resource": "*",
      "Condition": {
        "StringEquals": {
          "aws:PrincipalOrgID": "principal-org-id",
          "aws:ResourceOrgID": "resource-org-id"
        }
      }
    },
    {
      "Sid": "AllowAccessToAmazonLinuxAMIRepositories",
      "Effect": "Allow",
      "Principal": {
        "AWS": "*"
      },
      "Action": [
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::packages.region.amazonaws.com/*",
        "arn:aws:s3:::repo.region.amazonaws.com/*",
        "arn:aws:s3:::amazonlinux.region.amazonaws.com/*",
        "arn:aws:s3:::amazonlinux-2-repos-region/*"
      ]
    }
  ]
}
```

------

## 使用 Kernel Live Patching
<a name="working-with-live-patching"></a>

您可以使用執行個體本身的命令列在個別執行個體上啟用和使用 Kernel Live Patching，也可以使用 AWS Systems Manager 在一組受管執行個體上啟用和使用 Kernel Live Patching。

下列各節說明如何透過命令列在個別執行個體上啟用並使用 Kernel Live Patching。

如需在一組受管執行個體上啟用和使用核心即時修補的詳細資訊，請參閱*AWS Systems Manager 《 使用者指南*》中的[在 AL2 執行個體上使用核心即時修補](https://docs.aws.amazon.com/systems-manager/latest/userguide/kernel-live-patching.html)。

**Topics**
+ [啟用 Kernel Live Patching](#al2-live-patching-enable)
+ [檢視可用的核心即時修補程式](#al2-live-patching-view-available)
+ [套用核心即時修補程式](#al2-live-patching-apply)
+ [檢視套用的核心即時修補程式](#al2-live-patching-view)
+ [停用核心即時修補](#al2-live-patching-disable)

### 啟用 Kernel Live Patching
<a name="al2-live-patching-enable"></a>

AL2 上的核心即時修補預設為停用。若要使用即時修補，您必須安裝 Kernel Live Patching 的 **yum** 外掛程式，並啟用即時修補功能。

**先決條件**  
Kernel Live Patching 需要 `binutils`。如果您未安裝 `binutils`，請使用下列命令進行安裝：

```
$ sudo yum install binutils
```

**啟用 Kernel Live Patching**

1. 核心即時修補程式適用於下列 AL2 核心版本：
   + `x86_64` 架構上的核心版本 `4.14` 或 `5.10`
   + `ARM64` 架構上的核心版本 `5.10`

   若要檢查您的核心版本，請執行下列命令。

   ```
   $ sudo yum list kernel
   ```

1. 如果您已經有支援的核心版本，請略過此步驟。如果您沒有支援的核心版本，請執行下列命令，將核心更新為最新版本，並重新啟動執行個體。

   ```
   $ sudo yum install -y kernel
   ```

   ```
   $ sudo reboot
   ```

1. 安裝 Kernel Live Patching 的 **yum** 外掛程式。

   ```
   $ sudo yum install -y yum-plugin-kernel-livepatch
   ```

1. 啟用 Kernel Live Patching 的 **yum** 外掛程式。

   ```
   $ sudo yum kernel-livepatch enable -y
   ```

   此命令也會從設定的軟體庫安裝最新版本的核心即時修補程式 RPM。

1. 若要確認核心即時修補的 **yum** 外掛程式是否成功安裝，請執行下列命令。

   ```
   $ rpm -qa | grep kernel-livepatch
   ```

   當您啟用 Kernel Live Patching 時，系統會自動套用空白的核心即時修補程式 RPM。如果 Kernel Live Patching 已順利啟用，此命令會傳回包含初始空白核心即時修補程式 RPM 的清單。以下為範例輸出。

   ```
   yum-plugin-kernel-livepatch-1.0-0.11.amzn2.noarch
   kernel-livepatch-5.10.102-99.473-1.0-0.amzn2.x86_64
   ```

1. 安裝 **kpatch** 套件。

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

1. 如果之前已安裝 **kpatch** 服務，請更新此服務。

   ```
   $ sudo yum update kpatch-runtime
   ```

1. 啟動 **kpatch** 服務。此服務會在初始化或開機時載入所有核心即時修補程式。

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

1. 在 AL2 Extras 程式庫中啟用核心即時修補主題。本主題包含核心即時修補程式。

   ```
   $ sudo amazon-linux-extras enable livepatch
   ```

### 檢視可用的核心即時修補程式
<a name="al2-live-patching-view-available"></a>

Amazon Linux 安全性警示會發佈至資訊 Amazon Linux 安全中心。如需 AL2 安全提醒的詳細資訊，包括核心即時修補程式的提醒，請參閱 [Amazon Linux 安全中心](https://alas.aws.amazon.com/alas2.html)。核心即時修補程式的字首為 `ALASLIVEPATCH`。Amazon Linux 安全中心可能不會列出解決錯誤的核心即時修補程式。

您也可以使用命令列來探索建議和 CVE 的可用核心即時修補程式。

**列出所有可用的核心即時修補程式以供建議使用**  
使用下列命令。

```
$ yum updateinfo list
```

下面顯示了範例輸出。

```
Loaded plugins: extras_suggestions, kernel-livepatch, langpacks, priorities, update-motd
ALAS2LIVEPATCH-2020-002 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64
ALAS2LIVEPATCH-2020-005 medium/Sec. kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64
updateinfo list done
```

**列出 CVE 的所有可用核心即時修補程式**  
使用下列命令。

```
$ yum updateinfo list cves
```

下面顯示了範例輸出。

```
Loaded plugins: extras_suggestions, kernel-livepatch, langpacks, priorities, update-motdamzn2-core/2/x86_64 | 2.4 kB 00:00:00 
CVE-2019-15918 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64
CVE-2019-20096 important/Sec. kernel-livepatch-5.10.102-99.473-1.0-3.amzn2.x86_64
CVE-2020-8648 medium/Sec. kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64
updateinfo list done
```

### 套用核心即時修補程式
<a name="al2-live-patching-apply"></a>

您可以使用 **yum** 套件管理員來套用核心即時修補程式，方法與套用定期更新相同。Kernel Live Patching 的 **yum** 外掛程式會管理可套用的核心即時修補程式。

**提示**  
我們建議您定期使用 Kernel Live Patching 更新核心，以確保其收到特定的重要和關鍵安全修正，直到系統可以重新啟動為止。也請檢查是否已為原生核心套件提供其他修正，該套件無法部署為即時修補程式，並針對這些情況[更新和重新啟動](https://docs.aws.amazon.com/linux/al2/ug/install-updates.html)核心更新。

您可以選擇套用特定的核心即時修補程式，或套用任何可用的核心即時修補程式，以及定期的安全性更新。

**套用特定核心即時修補程式**

1. 使用 [檢視可用的核心即時修補程式](#al2-live-patching-view-available) 中描述的其中一個命令取得核心即時修補程式版本。

1. 為您的 AL2 核心套用核心即時修補程式。

   ```
   $ sudo yum install kernel-livepatch-kernel_version.x86_64
   ```

   例如，下列命令會套用 AL2 核心版本 的核心即時修補程式`5.10.102-99.473`。

   ```
   $ sudo yum install kernel-livepatch-5.10.102-99.473-1.0-4.amzn2.x86_64
   ```

**套用任何可用的核心即時修補程式，以及您的定期安全性更新**  
使用下列命令。

```
$ sudo yum update --security
```

省略包含錯誤修正的 `--security` 選項。

**重要**  
套用核心即時修補程式後，核心版本不會更新。只有在執行個體重新啟動後，版本才會更新為新版本。
AL2 核心會在三個月內收到核心即時修補程式。三個月期間過後，該核心版本不會發行任何新的核心即時修補程式。若要在三個月後繼續接收核心即時修補程式，您必須重新啟動執行個體才能移至新的核心版本，然後才能在接下來的三個月內繼續接收核心即時修補程式。若要檢查核心版本的支援視窗，請執行 `yum kernel-livepatch supported`。

### 檢視套用的核心即時修補程式
<a name="al2-live-patching-view"></a>

**檢視套用的核心即時修補程式**  
使用下列命令。

```
$ kpatch list
```

此命令會傳回已載入及已安裝的安全性更新核心即時修補程式清單。下列為範例輸出。

```
Loaded patch modules:
livepatch_cifs_lease_buffer_len [enabled]
livepatch_CVE_2019_20096 [enabled]
livepatch_CVE_2020_8648 [enabled]
	
Installed patch modules:
livepatch_cifs_lease_buffer_len (5.10.102-99.473.amzn2.x86_64)
livepatch_CVE_2019_20096 (5.10.102-99.473.amzn2.x86_64)
livepatch_CVE_2020_8648 (5.10.102-99.473.amzn2.x86_64)
```

**注意**  
單一核心即時修補程式可包含並安裝多個即時修補程式。

### 停用核心即時修補
<a name="al2-live-patching-disable"></a>

如果您不再需要使用 Kernel Live Patching，您可以隨時停用它。

**停用 Kernel Live Patching**

1. 移除套用的核心即時修補程式 RPM 套件。

   ```
   $ sudo yum kernel-livepatch disable
   ```

1. 解除安裝 Kernel Live Patching 的 **yum** 外掛程式。

   ```
   $ sudo yum remove yum-plugin-kernel-livepatch
   ```

1. 重新啟動執行個體。

   ```
   $ sudo reboot
   ```

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

Kernel Live Patching 有以下限制：
+ 套用核心即時修補程式時，您無法執行休眠、使用進階偵錯工具 (例如 SystemTap、kprobes 和 eBPF 為基礎的工具)，或存取 Kernel Live Patching 基礎架構所使用的 ftrace 輸出檔案。
+ 
**注意**  
由於技術限制，即時修補無法解決某些問題。因此，這些修正不會在核心即時修補程式套件中運送，只會在原生核心套件更新中運送。您可以安裝原生核心套件[更新並重新啟動](https://docs.aws.amazon.com/linux/al2/ug/install-updates.html)系統，以照常啟用修補程式。

## 常見問答集
<a name="al2-live-patching-faq"></a>

如需 AL2 核心即時修補的常見問題，請參閱 [Amazon Linux 2 核心即時修補常見問答集](https://aws.amazon.com//amazon-linux-2/faqs/)。