在使用Linux執行個體的過程中,採用更新版本的核心可以實現效能提升、安全性漏洞修複以及新功能的支援。然而,如果您的業務需要特定的Linux核心版本,或者您不希望升級至更新版本的核心,則需要禁用包管理器對核心版本的升級。本文將為您提供在Linux執行個體中禁用或啟用包管理器升級核心的具體方法。
背景說明
升級Linux核心屬於高風險操作,可能導致硬體驅動不相容、安全模組(SELinux)失效以及執行個體啟動失敗等問題。因此,建議您在進行核心升級之前,充分瞭解相關升級內容,並確認核心升級的必要性。
前提條件
在進行核心升級之前,請確保已完成相關的相容性測試,並為執行個體建立快照,以確保業務資料的安全。
禁用或啟用包管理器更新核心
如果您不希望通過包管理器自動更新Linux執行個體核心,您可以通過配置包管理器來禁用核心的自動更新,相關操作如下。
Alibaba Cloud Linux/CentOS
運行如下命令,查看當前Linux系統核心版本資訊。
sudo uname -r回顯資訊樣本如下,表明當前使用的核心版本為
5.10.134-16.al8.x86_64。5.10.134-16.al8.x86_64運行如下命令,查看當前安裝的Linux核心軟體包的資訊。
sudo rpm -qa | grep kernel回顯結果樣本如下,表明當前核心軟體包名稱為
kernel-5.10.134-16.al8.x86_64。kernel-devel-5.10.134-18.al8.x86_64 kernel-core-5.10.134-16.al8.x86_64 kernel-modules-5.10.134-16.al8.x86_64 kernel-modules-extra-5.10.134-16.al8.x86_64 kernel-modules-internal-5.10.134-16.al8.x86_64 kernel-tools-libs-5.10.134-16.al8.x86_64 kernel-tools-5.10.134-16.al8.x86_64 kernel-5.10.134-16.al8.x86_64 kernel-devel-5.10.134-16.al8.x86_64 kernel-headers-5.10.134-16.al8.x86_64運行如下命令,開啟yum包管理器設定檔。
sudo vi /etc/yum.conf按
i進入編輯模式,為設定檔新增如下內容。exclude = kernel*說明上述操作將會阻止所有核心更新,包括核心的安全更新。請根據自身需求進行選擇,以避免錯過重要的核心安全補丁,從而引發執行個體安全風險。
如需重新啟用包管理器自動更新核心,請刪除或者注釋掉上述步驟5中添加的內容即可。
按
Esc鍵,輸入:wq退出編輯模式。(可選)配置完成後,您可以運行如下命令,測試核心版本鎖定是否生效。
sudo yum update --assumeno | grep kernel回顯資訊樣本如下,表明核心版本不會被升級。
kernel-core x86_64 5.10.134-18.al8 alinux3-plus 32 M kernel-modules x86_64 5.10.134-18.al8 alinux3-plus 23 M kernel-modules-extra x86_64 5.10.134-18.al8 alinux3-plus 1.5 M kernel-modules-internal x86_64 5.10.134-18.al8 alinux3-plus 1.0 M kernel-headers x86_64 5.10.134-18.al8 alinux3-plus 2.3 M kernel-tools x86_64 5.10.134-18.al8 alinux3-plus 1.1 M kernel-tools-libs x86_64 5.10.134-18.al8 alinux3-plus 947 k Operation aborted.
Ubuntu/Debian
運行如下命令,查看當前Linux系統核心版本資訊。
sudo uname -r回顯資訊樣本如下,表明當前使用的核心版本為
5.4.0-204-generic。5.4.0-204-generic運行如下命令,查看當前安裝的Linux核心軟體包的資訊。
sudo dpkg -l | grep linux-image回顯資訊如下,表明當前核心軟體包名稱為
linux-image-5.4.0-204-generic。ii linux-image-5.4.0-204-generic 5.4.0-204.224 amd64 Signed kernel image generic ii linux-image-5.4.0-42-generic 5.4.0-42.46 amd64 Signed kernel image generic ii linux-image-generic 5.4.0.204.200 amd64 Generic Linux kernel image運行以下命令,鎖定Linux核心軟體包。
sudo apt-mark hold linux-image-*說明上述操作將會阻止所有核心更新,包括核心的安全更新。請根據自身需求進行選擇,以避免錯過重要的核心安全補丁,從而引發執行個體安全風險。
如需重新啟用包管理器自動更新核心,請運行如下命令。
sudo apt-mark unhold linux-image-*
(可選)運行以下命令,查看當前配置的鎖定版本軟體包列表。列表中存在的軟體包將不會被自動升級。
sudo apt-mark showhold
Fedora
運行如下命令,查看當前Linux系統核心版本資訊。
sudo uname -r回顯資訊樣本如下,表明當前使用的核心版本為
6.10.10-200.fc40.x86_64。6.10.10-200.fc40.x86_64運行如下命令,查看當前安裝的Linux核心軟體包的資訊。
sudo rpm -qa | grep kernel回顯結果樣本如下,表明當前核心軟體包名稱為
kernel-6.10.10-200.fc40.x86_64。kernel-modules-core-6.8.5-301.fc40.x86_64 kernel-core-6.8.5-301.fc40.x86_64 kernel-modules-6.8.5-301.fc40.x86_64 libreport-plugin-kerneloops-2.17.15-1.fc40.x86_64 kernel-6.8.5-301.fc40.x86_64 kernel-devel-6.8.5-301.fc40.x86_64 kernel-headers-6.10.3-200.fc40.x86_64 abrt-addon-kerneloops-2.17.6-1.fc40.x86_64 kernel-modules-core-6.10.10-200.fc40.x86_64 kernel-core-6.10.10-200.fc40.x86_64 kernel-modules-6.10.10-200.fc40.x86_64 kernel-devel-6.10.10-200.fc40.x86_64 kernel-6.10.10-200.fc40.x86_64 kernel-tools-libs-6.8.5-301.fc40.x86_64 kernel-tools-6.8.5-301.fc40.x86_64運行如下命令,開啟
dnf包管理器設定檔。sudo vi /etc/dnf/dnf.conf按
i進入編輯模式,為設定檔新增如下內容。exclude = kernel*說明上述操作將會阻止所有核心更新,包括核心的安全更新。請根據自身需求進行選擇,以避免錯過重要的核心安全補丁,從而引發執行個體安全風險。
如需重新啟用包管理器自動更新核心,請刪除或者注釋掉上述步驟5中添加的內容即可。
按
Esc鍵,輸入:wq退出編輯模式。(可選)配置完成後,您可以運行如下命令,測試核心版本鎖定是否生效。
sudo dnf update --assumeno | grep kernel回顯資訊樣本如下,表明核心版本不會被升級。
Operation aborted.
上述鎖定核心軟體包的方法僅為一種常見的思路。若您的執行個體對Linux核心版本有特定要求,建議您結合自身實際情況,制定相應方案,以避免因核心版本升級而引發的問題。
常見問題
問題現象:在Alibaba Cloud Linux/CentOS執行個體中升級核心時,提示
“No package marked for Update”。問題原因:該問題可能是在執行個體的
/etc/yum.conf設定檔中,配置了禁止kernel升級的配置項,導致核心無法升級或升級失敗。解決方案:
運行如下命令,開啟yum包管理器設定檔。
sudo vi /etc/yum.conf按
i進入編輯模式,刪除或者注釋掉上述添加的內容即可。# 如需注釋如下內容,請在該行行首增加一個#。 exclude = kernel*按
Esc鍵,輸入:wq退出編輯模式。
相關文檔
如需瞭解如何升級Linux核心,請參見升級Linux ECS執行個體核心。