温馨提示×

centos驱动如何恢复

小樊
40
2025-12-23 14:38:45
栏目: 智能运维

CentOS 驱动恢复实用指南

一、先判断场景与进入救援环境

  • 判断症状:是内核升级后起不来(找不到磁盘/根文件系统)、网卡/显卡驱动丢失(如 nvidia-smi 报错)、还是新内核启动黑屏/卡登录
  • 进入救援:重启,在 GRUB 菜单按 e,在内核行末尾临时追加参数(如 singlenomodeset、或 systemd.unit=rescue.target)进入单用户/救援模式;必要时用安装介质进入 Rescue Mode
  • 优先回退内核:若新内核导致问题,临时切回旧内核启动,后续再修复驱动或 initramfs。

二、常见场景与对应恢复步骤

  • 内核升级后无法启动(initramfs 缺驱动,典型如存储控制器从 mpt2sas 到 mpt3sas)

    1. 查看旧/新内核模块与 initramfs 是否包含驱动:
      lsinitrd -k 3.10.0-327.el7.x86_64 | grep mpt[23]sas
      lsinitrd -k 4.4.46 | grep mpt[23]sas
    2. 将缺失驱动打入 initramfs(二选一):
      • 修改配置并重建:
        echo ‘add_drivers+=“mpt3sas”’ >> /etc/dracut.conf
        dracut -f /boot/initramfs-4.4.46.img 4.4.46
      • 直接强制加入驱动:
        dracut --force --add-drivers mpt3sas --kver=4.4.46
    3. 验证并重启:
      lsinitrd -k 4.4.46 | grep mpt[23]sas 有输出后再重启。
  • NVIDIA 驱动失效(nvidia-smi 报错无法通信,常见于内核升级)

    1. 切回旧内核启动(临时方案):
      grub2-set-default ‘CentOS Linux (3.10.0-693.el7.x86_64) 7 (Core)
      grub2-editenv list
      reboot
    2. 在新内核上重建 DKMS 模块(推荐):
      yum install -y dkms

      查看已存驱动版本目录:ls -l /usr/src/ | grep nvidia

      dkms install -m nvidia -v 470.82.01
    3. 若仍异常,按当前运行内核重装驱动(安装器需匹配内核头文件):
      bash NVIDIA-Linux-x86_64-440.82.run --no-opengl-files --kernel-source-path=$(uname -r)
    4. 如与 ACPI 冲突导致黑屏/卡登录,可在启动时临时加 acpi=off 进入系统后再调整驱动或重装。
  • 网卡驱动缺失(ifconfig 仅 lo,或 lspci 识别到网卡但无驱动)

    1. 确认硬件与驱动:
      lspci | grep -i ethernet
      ethtool -i eth0
    2. 无编译环境时,用 CentOS ISO 制作本地 YUM 源,安装 gcc 与对应 kernel-devel;或提取 RPM 手动安装依赖。
    3. 获取并编译安装官方驱动(以 Broadcom NetXtreme II BCM5709 为例):
      rpm -ivh netxtreme2-6.0.53-1.src.rpm
      cd /usr/src/redhat/SPECS && rpmbuild -bb netxtreme2.spec
      cd …/RPMS/x86_64 && rpm -ivh netxtreme2-6.0.53-1.x86_64.rpm
      rmmod bnx2 && modprobe bnx2
    4. 验证:ip a 能看到 eth0 即恢复。

三、有备份时的快速回滚

  • 备份内容:/etc/modprobe.d//etc/modules-load.d//etc/dracut.conf/etc/dracut.modules.d/,以及硬件驱动信息(如 lshw)。
  • 恢复步骤:
    • 还原配置文件:
      cp -r /path/to/backup/modprobe.d /etc/
      cp -r /path/to/backup/modules-load.d /etc/
      cp /path/to/backup/dracut.conf /etc/
      cp -r /path/to/backup/dracut.modules.d /etc/
    • 重建 initramfs 并重启:
      dracut -f
      reboot
  • 专有驱动(如 NVIDIA)可按备份的版本信息重装对应 kmod-nvidia 或执行 nvidia-xconfig 后重启。

四、预防与排查要点

  • 内核升级前备份关键配置,升级后在旧内核验证;必要时使用 DKMS 管理专有驱动模块,减少升级后重装。
  • 存储/网卡等关键驱动未进 initramfs 是常见根因,使用 lsinitrd 核验并按需加入 /etc/dracut.confadd_drivers 或执行 dracut 强制加入。
  • 遇到 ACPINVIDIA 冲突,优先尝试临时引导参数(如 acpi=off)进入系统,再调整驱动或重装;必要时回退内核到已验证版本。

0