全部產品
Search
文件中心

:Linux執行個體中如何禁用或啟用包管理器進行核心升級

更新時間:Mar 13, 2025

在使用Linux執行個體的過程中,採用更新版本的核心可以實現效能提升、安全性漏洞修複以及新功能的支援。然而,如果您的業務需要特定的Linux核心版本,或者您不希望升級至更新版本的核心,則需要禁用包管理器對核心版本的升級。本文將為您提供在Linux執行個體中禁用或啟用包管理器升級核心的具體方法。

背景說明

升級Linux核心屬於高風險操作,可能導致硬體驅動不相容、安全模組(SELinux)失效以及執行個體啟動失敗等問題。因此,建議您在進行核心升級之前,充分瞭解相關升級內容,並確認核心升級的必要性。

前提條件

在進行核心升級之前,請確保已完成相關的相容性測試,並為執行個體建立快照,以確保業務資料的安全。

禁用或啟用包管理器更新核心

如果您不希望通過包管理器自動更新Linux執行個體核心,您可以通過配置包管理器來禁用核心的自動更新,相關操作如下。

Alibaba Cloud Linux/CentOS

  1. 使用Workbench工具以SSH協議登入Linux執行個體

  2. 運行如下命令,查看當前Linux系統核心版本資訊。

    sudo uname -r

    回顯資訊樣本如下,表明當前使用的核心版本為5.10.134-16.al8.x86_64

    5.10.134-16.al8.x86_64
  3. 運行如下命令,查看當前安裝的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
  4. 運行如下命令,開啟yum包管理器設定檔。

    sudo vi /etc/yum.conf
  5. i進入編輯模式,為設定檔新增如下內容。

    exclude = kernel*
    說明
    • 上述操作將會阻止所有核心更新,包括核心的安全更新。請根據自身需求進行選擇,以避免錯過重要的核心安全補丁,從而引發執行個體安全風險。

    • 如需重新啟用包管理器自動更新核心,請刪除或者注釋掉上述步驟5中添加的內容即可。

  6. Esc鍵,輸入:wq退出編輯模式。

  7. (可選)配置完成後,您可以運行如下命令,測試核心版本鎖定是否生效。

    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

  1. 使用Workbench工具以SSH協議登入Linux執行個體

  2. 運行如下命令,查看當前Linux系統核心版本資訊。

    sudo uname -r

    回顯資訊樣本如下,表明當前使用的核心版本為5.4.0-204-generic

    5.4.0-204-generic
  3. 運行如下命令,查看當前安裝的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
  4. 運行以下命令,鎖定Linux核心軟體包。

    sudo apt-mark hold linux-image-*
    說明
    • 上述操作將會阻止所有核心更新,包括核心的安全更新。請根據自身需求進行選擇,以避免錯過重要的核心安全補丁,從而引發執行個體安全風險。

    • 如需重新啟用包管理器自動更新核心,請運行如下命令。

      sudo apt-mark unhold linux-image-*

  5. (可選)運行以下命令,查看當前配置的鎖定版本軟體包列表。列表中存在的軟體包將不會被自動升級。

    sudo apt-mark showhold

Fedora

  1. 使用Workbench工具以SSH協議登入Linux執行個體

  2. 運行如下命令,查看當前Linux系統核心版本資訊。

    sudo uname -r

    回顯資訊樣本如下,表明當前使用的核心版本為6.10.10-200.fc40.x86_64

    6.10.10-200.fc40.x86_64
  3. 運行如下命令,查看當前安裝的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
  4. 運行如下命令,開啟dnf包管理器設定檔。

    sudo vi /etc/dnf/dnf.conf
  5. i進入編輯模式,為設定檔新增如下內容。

    exclude = kernel*
    說明
    • 上述操作將會阻止所有核心更新,包括核心的安全更新。請根據自身需求進行選擇,以避免錯過重要的核心安全補丁,從而引發執行個體安全風險。

    • 如需重新啟用包管理器自動更新核心,請刪除或者注釋掉上述步驟5中添加的內容即可。

  6. Esc鍵,輸入:wq退出編輯模式。

  7. (可選)配置完成後,您可以運行如下命令,測試核心版本鎖定是否生效。

    sudo dnf update --assumeno | grep kernel

    回顯資訊樣本如下,表明核心版本不會被升級。

    Operation aborted.
重要

上述鎖定核心軟體包的方法僅為一種常見的思路。若您的執行個體對Linux核心版本有特定要求,建議您結合自身實際情況,制定相應方案,以避免因核心版本升級而引發的問題。

常見問題

  • 問題現象:在Alibaba Cloud Linux/CentOS執行個體中升級核心時,提示“No package marked for Update”

  • 問題原因:該問題可能是在執行個體的/etc/yum.conf設定檔中,配置了禁止kernel升級的配置項,導致核心無法升級或升級失敗。

  • 解決方案

    • 使用Workbench工具以SSH協議登入Linux執行個體

    • 運行如下命令,開啟yum包管理器設定檔。

      sudo vi /etc/yum.conf
    • i進入編輯模式,刪除或者注釋掉上述添加的內容即可。

      # 如需注釋如下內容,請在該行行首增加一個#。
      exclude = kernel*
    • Esc鍵,輸入:wq退出編輯模式。

相關文檔

如需瞭解如何升級Linux核心,請參見升級Linux ECS執行個體核心