温馨提示×

centos drivers自动更新设置

小樊
34
2025-12-31 09:09:31
栏目: 智能运维

CentOS 驱动自动更新设置

一、总体原则与适用范围

  • CentOS 中,绝大多数“驱动”以 内核模块内核相关包 的形式提供,随系统更新自动升级。生产环境建议启用仅安全更新,降低风险。
  • CentOS 7 使用 yum-cron 实现自动更新;CentOS 8 默认使用 DNF,也可安装并使用 yum-cron 兼容方式。
  • 如需自动更新第三方驱动(如 NVIDIA、部分 网卡驱动),应将其打包为 RPM 并纳入自有仓库,由系统自动更新流程统一分发与管理。

二、启用系统级自动更新

  • CentOS 7(yum-cron)

    1. 安装并启用服务
      • 安装:sudo yum install yum-cron -y
      • 开机自启并启动:sudo systemctl enable --now yum-cron
    2. 配置策略(/etc/yum/yum-cron.conf)
      • 仅安全更新(推荐生产):update_cmd = security
      • 下载并自动安装:download_updates = yesapply_updates = yes
      • 可选通知:update_messages = yes
      • 邮件告警(需本机 MTA):email_toemail_fromemail_host
    3. 重启生效:sudo systemctl restart yum-cron
    4. 验证:sudo systemctl status yum-cron;日志:/var/log/ 下相关日志。
  • CentOS 8(DNF 与 yum-cron)

    1. 使用 DNF 自动更新(推荐)
      • 安装自动更新组件:sudo dnf install dnf-automatic -y
      • 编辑 /etc/dnf/automatic.conf:将 apply_updates = yes
      • 启用并启动定时器:sudo systemctl enable --now dnf-automatic.timer
    2. 或使用 yum-cron(兼容方式)
      • 安装:sudo yum install yum-cron -y
      • 启用并启动:sudo systemctl enable --now yum-cron
      • 配置 /etc/yum/yum-cron.conf(同 CentOS 7)。

三、第三方驱动的自动更新

  • 将驱动制作成 RPM 包 并发布到内网仓库,纳入系统自动更新

    • 准备驱动源码与 .spec,使用 rpmbuild 构建 SRPM/RPM
    • 将 RPM 放入内网 YUM/DNF 仓库(createrepo 生成元数据)
    • 客户端通过 yum/dnf 安装并随系统更新自动升级
    • 示例(Intel i40e 网卡驱动):构建时确保安装匹配版本的 kernel-devel,否则模块编译失败。
  • DKMS 方式(适用于可 DKMS 化的内核模块)

    • 安装 DKMS:sudo yum install dkms -y
    • 驱动包应提供 DKMS 配置,在内核升级后自动重建模块
    • 典型场景:第三方模块随内核更新自动重编译,减少人工介入(如部分 NVIDIA 驱动方案)。

四、显卡驱动与内核更新的注意事项

  • NVIDIA 专有驱动与内核强绑定:内核更新后,原驱动可能失效(出现 nvidia-smi 无法通信)。
    • 建议方案:
      • 使用 DKMS 维护 NVIDIA 模块,内核升级后自动重建
      • 或采用 ELRepo 提供的 kmod-nvidia 包,随内核更新自动匹配新内核
      • 升级前准备:安装 gcc、kernel-devel、kernel-headers;必要时禁用 nouveau 并重建 initramfs
    • 验证:nvidia-smi 输出是否正常。

五、常用维护与回滚建议

  • 只下载不安装:将 apply_updates = nodownload_updates = yes,先评估变更再手动安装
  • 排除特定包:在 /etc/yum.conf[main] 段加入 exclude=包名(如内核相关包,谨慎使用)
  • 回滚:使用 yum history 查看并回滚最近事务(如 yum history undo
  • 变更窗口:将自动更新安排在业务低峰,并保留最近一次可用内核(如 /boot 保留多个内核,必要时在 GRUB 中选择旧内核启动)。

0