您可以通過本文瞭解擷取Alibaba Cloud Linux核心熱補丁的方式,以及如何在Alibaba Cloud Linux執行個體內啟用、禁用核心熱補丁或禁用kpatch系統服務。
背景資訊
核心熱補丁的相關操作說明如下:
如何擷取核心熱補丁以及如何查看熱補丁的具體資訊,請參見擷取核心熱補丁。
如果您需要在作業系統中啟用核心熱補丁,具體操作,請參見啟用核心熱補丁。
如果作業系統中已啟用的核心熱補丁存在問題,您可以禁用該補丁。具體操作,請參見禁用核心熱補丁。
如果作業系統中已啟用了核心熱補丁,但您需要在重啟伺服器時,使作業系統不自動載入所有的熱補丁的核心模組,您可以禁用kpatch系統服務。具體操作,請參見禁用kpatch系統服務。
擷取核心熱補丁
每一個核心熱補丁均通過RPM包發布,您可以通過以下任一方式擷取熱補丁的安裝包:
Alibaba Cloud Linux CVE公告平台
訪問CVE公告平台。
所有發行的熱補丁都將在CVE公告平台上公示,您可以訪問不同發行版本的CVE公告平台進行查看。
單擊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)列的內容為空白。
單擊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命令查詢相應的核心熱補丁安裝包。具體操作,請參見啟用核心熱補丁。
啟用核心熱補丁
遠端連線需要熱補丁的Alibaba Cloud Linux執行個體。
具體操作,請參見串連方式概述。
運行以下命令,安裝kpatch工具。
sudo yum -y install kpatch
安裝熱補丁。
運行以下命令,查看作業系統的核心版本資訊。
sudo uname -r
本樣本中,查詢結果如下所示。可以確認該作業系統的子版本號碼為
5.al8
。5.10.23-5.al8.x86_64
使用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
安裝指定的熱補丁。
本樣本中,以
kernel-hotfix-5928799-5.al8.x86_64
為例,說明如何通過yum命令安裝熱補丁。說明通過yum安裝熱補丁時,不需要指定RPM包檔案的尾碼
.rpm
。sudo yum -y install kernel-hotfix-5928799-5.al8.x86_64
運行以下命令,通過kpatch工具查看系統補丁的狀態。
sudo kpatch list
回顯結果如下所示,表示核心熱補丁安裝成功且已經生效。
Loaded patch modules: kpatch_5928799 [enabled] Installed patch modules: kpatch_5928799 (5.10.23-5.al8.x86_64)
禁用核心熱補丁
如果您已啟用的熱補丁存在問題(例如熱補丁未生效),可以通過以下步驟禁用核心熱補丁以解決問題。本樣本將使用yum命令完成操作。
運行以下命令,查看可禁用的熱補丁包。
sudo yum list installed | grep kernel-hotfix
回顯結果樣本,如下所示:
kernel-hotfix-5928799-5.al8.x86_64 1.0-20210720165816.al8 @alinux3-plus
運行以下命令,刪除存在問題的熱補丁包。
本樣本中,以
kernel-hotfix-5928799-5.al8.x86_64
為例。sudo yum -y remove kernel-hotfix-5928799-5.al8.x86_64
運行以下命令,確認存在問題的熱補丁包已經被刪除。
sudo kpatch list
回顯結果如下所示,表示沒有已安裝並生效的熱補丁。
Loaded patch modules: Installed patch modules:
禁用kpatch系統服務
如果您的熱補丁已安裝並且已生效,但您需要在重啟伺服器時,使作業系統不自動載入所有的熱補丁的核心模組,您可以通過以下操作步驟禁用kpatch系統服務。
運行以下命令,查看kpatch系統服務是否已啟動。
sudo systemctl is-enabled kpatch.service
回顯結果為
enabled
,表示kpatch系統服務已啟動。運行以下命令,禁用kpatch系統服務。
sudo systemctl disable kpatch.service
回顯結果如下所示,表示已禁用kpatch系統服務。
Removed symlink /etc/systemd/system/multi-user.target.wants/kpatch.service.
運行以下命令,查看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系統服務。