全部產品
Search
文件中心

Alibaba Cloud Linux:核心熱補丁操作說明

更新時間:Jul 17, 2024

您可以通過本文瞭解擷取Alibaba Cloud Linux核心熱補丁的方式,以及如何在Alibaba Cloud Linux執行個體內啟用、禁用核心熱補丁或禁用kpatch系統服務。

背景資訊

核心熱補丁的相關操作說明如下:

  • 如何擷取核心熱補丁以及如何查看熱補丁的具體資訊,請參見擷取核心熱補丁

  • 如果您需要在作業系統中啟用核心熱補丁,具體操作,請參見啟用核心熱補丁

  • 如果作業系統中已啟用的核心熱補丁存在問題,您可以禁用該補丁。具體操作,請參見禁用核心熱補丁

  • 如果作業系統中已啟用了核心熱補丁,但您需要在重啟伺服器時,使作業系統不自動載入所有的熱補丁的核心模組,您可以禁用kpatch系統服務。具體操作,請參見禁用kpatch系統服務

擷取核心熱補丁

每一個核心熱補丁均通過RPM包發布,您可以通過以下任一方式擷取熱補丁的安裝包:

  • Alibaba Cloud Linux CVE公告平台

    1. 訪問CVE公告平台。

      所有發行的熱補丁都將在CVE公告平台上公示,您可以訪問不同發行版本的CVE公告平台進行查看。

    2. 單擊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)列的內容為空白。

    3. 單擊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命令查詢相應的核心熱補丁安裝包。具體操作,請參見啟用核心熱補丁

啟用核心熱補丁

  1. 遠端連線需要熱補丁的Alibaba Cloud Linux執行個體。

    具體操作,請參見串連方式概述

  2. 運行以下命令,安裝kpatch工具。

    sudo yum -y install kpatch
  3. 安裝熱補丁。

    1. 運行以下命令,查看作業系統的核心版本資訊。

      sudo uname -r

      本樣本中,查詢結果如下所示。可以確認該作業系統的子版本號碼為5.al8

      5.10.23-5.al8.x86_64
    2. 使用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 
    3. 安裝指定的熱補丁。

      本樣本中,以kernel-hotfix-5928799-5.al8.x86_64為例,說明如何通過yum命令安裝熱補丁。

      說明

      通過yum安裝熱補丁時,不需要指定RPM包檔案的尾碼.rpm

      sudo yum -y install kernel-hotfix-5928799-5.al8.x86_64
  4. 運行以下命令,通過kpatch工具查看系統補丁的狀態。

    sudo kpatch list

    回顯結果如下所示,表示核心熱補丁安裝成功且已經生效。

    Loaded patch modules:
    kpatch_5928799 [enabled]
    
    Installed patch modules:
    kpatch_5928799 (5.10.23-5.al8.x86_64)

禁用核心熱補丁

如果您已啟用的熱補丁存在問題(例如熱補丁未生效),可以通過以下步驟禁用核心熱補丁以解決問題。本樣本將使用yum命令完成操作。

  1. 運行以下命令,查看可禁用的熱補丁包。

    sudo yum list installed | grep kernel-hotfix

    回顯結果樣本,如下所示:

    kernel-hotfix-5928799-5.al8.x86_64  1.0-20210720165816.al8            @alinux3-plus
  2. 運行以下命令,刪除存在問題的熱補丁包。

    本樣本中,以kernel-hotfix-5928799-5.al8.x86_64為例。

    sudo yum -y remove kernel-hotfix-5928799-5.al8.x86_64
  3. 運行以下命令,確認存在問題的熱補丁包已經被刪除。

    sudo kpatch list

    回顯結果如下所示,表示沒有已安裝並生效的熱補丁。

    Loaded patch modules:
    
    Installed patch modules:

禁用kpatch系統服務

如果您的熱補丁已安裝並且已生效,但您需要在重啟伺服器時,使作業系統不自動載入所有的熱補丁的核心模組,您可以通過以下操作步驟禁用kpatch系統服務。

  1. 運行以下命令,查看kpatch系統服務是否已啟動。

    sudo systemctl is-enabled kpatch.service

    回顯結果為enabled,表示kpatch系統服務已啟動。

  2. 運行以下命令,禁用kpatch系統服務。

    sudo systemctl disable kpatch.service

    回顯結果如下所示,表示已禁用kpatch系統服務。

    Removed symlink /etc/systemd/system/multi-user.target.wants/kpatch.service.
  3. 運行以下命令,查看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系統服務。