阅读量:3
CentOS 驱动自动更新实践
一 总体策略与频率
- 优先通过系统软件源与内核自带的 kmod 驱动进行更新,使用包管理器执行系统更新即可覆盖大多数驱动(如显卡、芯片组、存储控制器等)。
- 第三方闭源驱动(如 NVIDIA)建议配合 DKMS 使用,以便在内核升级后自动重建模块;内核更新后需确保触发 DKMS 重建。
- 更新频率建议:系统层面定期检查,生产环境至少每月一次,关键服务器可每周检查;内核驱动可通过 ELRepo 等仓库获取更频繁的内核与驱动更新,生产环境建议每 6–12 个月评估升级,优先 LTS 版本;第三方驱动在重大版本或内核升级时同步更新。
二 使用包管理器自动更新驱动
- 对于 CentOS 7:执行
sudo yum update或sudo yum upgrade;对于 CentOS 8+:执行sudo dnf update或sudo dnf upgrade。这些命令会更新内核与内核模块(kmod),从而更新大多数驱动。 - 为后续内核升级准备编译环境:
sudo yum groupinstall "Development Tools"、sudo yum install kernel-devel kernel-headers。 - 安装并启用 DKMS:
sudo yum install dkms,用于第三方内核模块在内核升级后自动重建。 - 建议通过
yum-cron配置自动安全更新(生产环境优先安全补丁):sudo yum install yum-cron,启用并设置为仅安全更新或按计划执行。
三 第三方驱动与内核升级的自动化
- NVIDIA 专有驱动:优先使用厂商提供的安装程序或仓库方式安装,并在安装时勾选/启用 DKMS 选项,使驱动随内核升级自动编译;安装完成后可用
nvidia-smi验证。 - 通用流程要点:
- 安装编译依赖与头文件;2) 获取与当前 CentOS 版本/内核 匹配的驱动;3) 安装时启用 DKMS;4) 加载模块
sudo modprobe <驱动名>;5) 必要时在/etc/modules-load.d/配置开机加载;6)sudo reboot生效;7) 用lspci -k或厂商工具验证。
- 安装编译依赖与头文件;2) 获取与当前 CentOS 版本/内核 匹配的驱动;3) 安装时启用 DKMS;4) 加载模块
- 内核升级后的处理:重启进入新内核后,DKMS 会自动为已注册的第三方模块重建;如未生效,可手动触发
dkms autoinstall -k $(uname -r)并检查/var/lib/dkms状态。
四 自动更新脚本与定时任务示例
- 基础脚本(适配 yum/dnf,记录日志,仅在检测到更新时才升级,并提示是否重启):
#!/usr/bin/env bash
set -Eeuo pipefail
LOGFILE="/var/log/auto-update.log"
exec >>"$LOGFILE" 2>&1
echo "[$(date)] 开始系统更新"
# 读取发行版信息
if [[ -f /etc/os-release ]]; then
. /etc/os-release
else
echo "未找到 /etc/os-release"
exit 1
fi
needs_reboot=false
case "$ID" in
centos|rhel)
if command -v dnf >/dev/null 2>&1; then
if dnf check-update >/dev/null 2>&1; then
echo "[$(date)] 发现可用更新,开始 dnf upgrade..."
dnf upgrade -y
needs_reboot=true
else
echo "[$(date)] 无可用更新"
fi
else
if yum check-update >/dev/null 2>&1; then
echo "[$(date)] 发现可用更新,开始 yum upgrade..."
yum upgrade -y
needs_reboot=true
else
echo "[$(date)] 无可用更新"
fi
fi
;;
*)
echo "[$(date)] 暂不支持的系统: $ID"
exit 1
;;
esac
# 如升级了内核则提示重启
if $needs_reboot; then
echo "[$(date)] 检测到内核或关键组件更新,建议重启以完成驱动加载。"
# 如需无人值守重启,可取消下一行注释
# systemctl reboot
fi
echo "[$(date)] 更新完成"
- 定时任务(root 执行):每周日凌晨 2:00 运行
0 2 * * 0 /usr/local/bin/auto-update.sh - 建议:仅夜间维护窗口执行;为关键业务保留回滚方案(快照/备份、旧内核保留);必要时结合 Ansible 批量管控。
五 验证与回滚建议
- 验证:
- 内核与模块:
uname -r、lsmod | grep <驱动名> - 设备与驱动绑定:
lspci -k、lsusb -t - 厂商工具:如 NVIDIA 使用
nvidia-smi查看驱动与 GPU 状态
- 内核与模块:
- 回滚:
- 使用包管理器回滚:
sudo dnf history undo或sudo yum history undo - 重启后选择旧内核(GRUB)以规避新内核导致的驱动不兼容
- DKMS 模块异常时,可进入救援模式执行
dkms remove <模块>/<版本> --all后重装对应版本
- 使用包管理器回滚:
以上就是关于“centos drivers驱动自动更新”的相关介绍,筋斗云是国内较早的云主机应用的服务商,拥有10余年行业经验,提供丰富的云服务器、租用服务器等相关产品服务。云服务器资源弹性伸缩,主机vCPU、内存性能强悍、超高I/O速度、故障秒级恢复;电子化备案,提交快速,专业团队7×24小时服务支持!
简单好用、高性价比云服务器租用链接:https://www.jindouyun.cn/product/cvm