温馨提示×

centos drivers恢复方法

小樊
44
2025-12-05 20:07:15
栏目: 智能运维

CentOS 驱动恢复方法

一、快速排查与定位

  • 确认现象:如网卡/磁盘不见、图形界面异常、nvidia-smi 失败等,优先判断是内核升级后 initramfs 缺驱动还是专有驱动未随新内核加载
  • 查看内核与驱动日志:
    • dmesg | grep -i error(内核消息)
    • lspci | grep -i ethernet(确认网卡型号)
    • lsmod | grep <模块名>(是否加载驱动)
    • modinfo <模块名>(驱动版本与依赖)
  • 手动加载/卸载测试:modprobe <模块名> / modprobe -r <模块名>;必要时结合日志修正配置或重装驱动。

二、常见场景与恢复步骤

  • 场景A 内核升级后 initramfs 缺驱动导致无法挂载根或设备消失

    1. 确认缺失的模块(示例为存储控制器 mpt3sas):
      lsinitrd -k <旧内核版本> | grep mpt
      lsinitrd -k <新内核版本> | grep mpt(若为空则缺驱动)
    2. 将驱动加入 initramfs 并重建:
      • 方法一(永久生效):在 /etc/dracut.conf 中添加
        add_drivers+=“mpt3sas”
        然后重建:dracut -f /boot/initramfs-<新内核版本>.img <新内核版本>
      • 方法二(一次性):
        dracut --force --add-drivers mpt3sas --kver=<新内核版本>
    3. 重启验证。
  • 场景B NVIDIA 专有驱动在升级内核后失效(nvidia-smi 报错)

    1. 安装 DKMS(若未安装):yum install dkms
    2. 确认已安装的 NVIDIA 驱动版本目录:ls -l /usr/src/ | grep nvidia(如 nvidia-470.82.01
    3. 用 DKMS 为当前运行内核重建驱动:
      dkms install -m nvidia -v <版本号>
    4. 验证:nvidia-smi;若仍失败,检查并安装匹配当前内核的 kernel-devel/kernel-headers,再重建 DKMS 模块。
  • 场景C 网卡驱动缺失或异常(如 bnx2/bnx2x)

    1. 识别设备与驱动:lspci | grep -i ethernet;modinfo bnx2;ethtool -i <网卡名>
    2. 更新驱动(以 Broadcom NetXtreme II 为例):
      • 安装厂商驱动 RPM 源码包并重建 RPM:
        rpm -ivh netxtreme2-<版本>.src.rpm
        cd /usr/src/redhat/SPECS && rpmbuild -bb netxtreme2.spec
        cd …/RPMS/x86_64 && rpm -ivh netxtreme2-<版本>.x86_64.rpm
      • 切换驱动并验证:
        rmmod bnx2 && modprobe bnx2
        modinfo bnx2 或 ethtool -i <网卡名> 查看新版本
    3. 如为电源管理引发的异常,可在 grub.conf 内核行临时添加 acpi=off 测试(生产环境慎用)。

三、驱动备份与一键回滚

  • 备份关键配置与驱动信息:
    • 配置:/etc/modprobe.d、/etc/modules-load.d、/etc/dracut.conf、/etc/dracut.modules.d
    • 信息:lshw -C display | grep driver > driver_info.txt
  • 恢复步骤:
    • 还原配置:将备份目录拷回原路径
    • 重建 initramfs:dracut -f(必要时针对指定内核:dracut -f /boot/initramfs-<版本>.img <版本>)
    • 重启验证
  • 专有驱动回滚:优先使用 DKMS 重建旧版本(dkms install -m <驱动名> -v <旧版本>),或卸载新版本后重装旧版本。

四、注意事项与最小化应急

  • 内核头文件/开发包必须与当前运行内核版本完全一致
    • 查看:uname -r;rpm -qa | grep kernel
    • 安装:yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
  • 离线环境:用安装介质的 ISO 制作本地 yum 源,安装 gcc、kernel-devel 后再编译/安装驱动。
  • 最小化应急:
    • 临时切回旧内核启动(GRUB 菜单选择),再按上文重建 initramfs 或重装驱动;
    • 无法联网时,先恢复配置文件,再用本地源安装编译工具与依赖,最后重建驱动。

0