温馨提示×

centos驱动程序恢复技巧

小樊
38
2025-12-07 19:24:24
栏目: 智能运维

CentOS 驱动程序恢复技巧

一、快速定位与通用恢复流程

  • 确认问题范围:显卡可用 nvidia-smilspci | grep -i nvidia;网卡可用 lspci | grep -i ethernetip a
  • 查看当前运行内核与驱动模块:uname -rlsmod | grep nvidia(或对应模块名)。
  • 检查是否因内核升级导致驱动失效:驱动存在但接口不可用,常见于 NVIDIA 驱动与升级后的内核未重建关联。
  • 优先尝试 DKMS 重建驱动内核模块(适用于已安装过 NVIDIA 驱动的情况):
    1. 安装 DKMS:yum install -y dkms
    2. 确认驱动版本目录:ls /usr/src | grep nvidia(如 nvidia-470.82.01);
    3. 重建模块:dkms install -m nvidia -v 470.82.01
    4. 验证:nvidia-smi
  • 若 DKMS 未注册或目录缺失,需按发行版方式重装驱动(见下文 NVIDIA 与网卡专节)。

二、NVIDIA 显卡驱动恢复

  • 场景 A:升级内核后 nvidia-smi 报错 “couldn’t communicate with the NVIDIA driver”
    • 安装 DKMS 并按上节步骤重建;若成功,nvidia-smi 恢复。
  • 场景 B:新装或重装后仍然失败,常见于 nouveau 未禁用
    • 禁用 nouveau:编辑 /usr/lib/modprobe.d/dist-blacklist.conf,新增
      • blacklist nouveau
      • options nouveau modeset=0
    • 备份并重建 initramfs:mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
      dracut /boot/initramfs-$(uname -r).img $(uname -r)
    • 重启并验证:lsmod | grep nouveau(应无输出),再执行 nvidia-smi
  • 场景 C:驱动安装失败或版本不匹配(缺少与当前内核一致的头文件/开发包)
    • 安装匹配的开发包:yum install -y kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    • 若提示找不到对应版本,先 yum update kernel -y && reboot,再安装对应 kernel-devel/headers
    • 之后重装驱动(可用官方 run 文件或发行版仓库方式)。
  • 场景 D:使用发行版仓库(如 ELRepo)更便于维护
    • 导入 GPG 并启用源:rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org && yum install -y elrepo-release
    • 安装检测工具与驱动:yum install -y nvidia-detect kmod-nvidia
    • 生成 X 配置并重启:nvidia-xconfig && reboot

三、网卡驱动恢复

  • 场景 A:系统仅见 lo,无 eth0/ens/eno 等接口
    • 确认网卡型号:lspci | grep -i ethernet
    • 离线环境可用 CentOS ISO 制作本地 YUM 源,安装编译工具与内核源码:yum install -y gcc make 与对应 kernel-devel/headers
    • 获取并编译安装官方驱动(以 Broadcom BCM5709 为例):
      • 安装源码 RPM:rpm -ivh netxtreme2-.src.rpm
      • 进入 /usr/src/redhat/SPECS 执行 rpmbuild -bb netxtreme2.spec
      • 安装生成的 RPM:rpm -ivh …/RPMS/x86_64/netxtreme2-.x86_64.rpm
      • 切换驱动:rmmod bnx2 && modprobe bnx2
      • 验证:modinfo bnx2ethtool -i ethX
  • 场景 B:特定驱动版本存在稳定性问题(如 BCM5709 + bnx2 某些版本)
    • 升级到厂商提供的修复版本(如 6.0.53 及以上),或按厂商指引调整启动参数(如个别环境尝试 acpi=off 的思路,需谨慎评估生产风险)。

四、驱动备份与一键回滚

  • 备份关键配置与驱动信息:
    • 模块与加载配置:/etc/modprobe.d//etc/modules-load.d/
    • initramfs 配置:/etc/dracut.conf/etc/dracut.modules.d/
    • 硬件驱动信息:lshw -C display | grep driver > driver_info.txt
  • 回滚步骤:
    • 恢复配置:cp -r backup/modprobe.d /etc/modprobe.dcp -r backup/modules-load.d /etc/modules-load.d
    • 恢复 dracut 并重建镜像:cp backup/dracut.conf /etc/dracut.conf && cp -r backup/dracut.modules.d /etc/dracut.modules.d && dracut -f
    • 重启系统使回滚生效。

五、排错清单与实用命令

  • 查看日志与模块加载:
    • 系统日志:journalctl -xe
    • 内核消息:dmesg | grep -i nvidiadmesg | grep -i eth
    • 模块信息:modinfo <模块名>lsmod | grep <模块名>
  • 版本与工具:
    • 当前内核:uname -r
    • 硬件识别:lspci
    • 编译器与头文件:gcc -vyum list installed | grep kernel-devel
  • 常见修复动作:
    • 重建 initramfs:dracut -f
    • 临时切换运行级别(便于安装/排错):systemctl set-default multi-user.target
    • 安装/卸载 NVIDIA:run 文件 –uninstallyum remove kmod-nvidia-*。

0