Linux实例中如何禁用或启用包管理器进行内核升级

更新时间:2025-03-12 07:27:18

在使用Linux实例的过程中,采用更新版本的内核可以实现性能提升、安全漏洞修复以及新功能的支持。然而,如果您的业务需要特定的Linux内核版本,或者您不希望升级至更新版本的内核,则需要禁用包管理器对内核版本的升级。本文将为您提供在Linux实例中禁用或启用包管理器升级内核的具体方法。

背景说明

升级Linux内核属于高风险操作,可能导致硬件驱动不兼容、安全模块(SELinux)失效以及实例启动失败等问题。因此,建议您在进行内核升级之前,充分了解相关升级内容,并确认内核升级的必要性。

前提条件

在进行内核升级之前,请确保已完成相关的兼容性测试,并为实例创建快照,以确保业务数据的安全。

禁用或启用包管理器更新内核

如果您不希望通过包管理器自动更新Linux实例内核,您可以通过配置包管理器来禁用内核的自动更新,相关操作如下。

Alibaba Cloud Linux/CentOS
Ubuntu/Debian
Fedora
  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.
  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
  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实例内核

  • 本页导读 (1)
  • 背景说明
  • 前提条件
  • 禁用或启用包管理器更新内核
  • 常见问题
  • 相关文档
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等