温馨提示×

centos驱动程序如何备份

小樊
36
2025-12-21 15:53:07
栏目: 智能运维

CentOS 驱动程序备份与恢复实用指南

一、备份思路与准备

  • 明确驱动来源:优先使用发行版仓库或 ELRepo 等渠道的 DKMS 驱动,便于跨内核自动重建;闭源驱动(如 NVIDIA 官方.run)需额外保存安装包与黑屏名单配置。
  • 准备恢复环境:记录当前的 内核版本 uname -r、系统版本 cat /etc/centos-release,并确认是否使用 UEFI/BIOS、磁盘是否为 LVM/Btrfs/ZFS,以便恢复时保持一致。
  • 建议的备份介质:外接 USB/NVMe 或网络存储,避免与系统盘同盘存放。

二、通用备份方法

  • 方法A 打包已安装的内核模块与固件

    • 适用:大多数内置/第三方内核模块(如 e1000e、r8169、ixgbe 等)。
    • 步骤:
      1. 查看并筛选第三方模块(排除内核自带模块)
        • 列出模块与包:
          • rpm -qf /lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000e/e1000e.ko
          • rpm -qa --qf ‘%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n’ | grep -E ‘kmod|dkms|kernel-module’
      2. 备份模块目录与固件
        • tar czf /backup/drivers-modules-$(uname -r).tar.gz
          /lib/modules/$(uname -r)/kernel/drivers /lib/firmware
      3. 备份当前内核的 initramfs(很多驱动在 initramfs 中)
        • cp /boot/initramfs-$(uname -r).img /backup/initramfs-$(uname -r).img.bak
      4. 备份黑名单与内核参数(如禁用 nouveau 的配置)
        • cp /etc/modprobe.d/blacklist*.conf /backup/modprobe.d-blacklist-$(date +%F).conf
        • cp /etc/default/grub /backup/grub-$(date +%F).bak
    • 说明:Linux 内核模块是普通文件,可直接打包备份;initramfs 用于早期用户态驱动加载,重装内核或切换驱动后需要重建。
  • 方法B 导出已安装的驱动包列表(便于重装)

    • 适用:使用 yum/dnf 安装的驱动包(含 kmod-*、dkms 包)。
    • 步骤:
      • 导出当前系统已安装包清单:
        • rpm -qa --qf ‘%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n’ | sort > /backup/pkglist-drivers-$(date +%F).txt
      • 仅导出与驱动相关的包(示例过滤关键字,可按需增删):
        • rpm -qa --qf ‘%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n’ | grep -Ei ‘kmod|dkms|driver|firmware’ | sort > /backup/pkglist-driver-related-$(date +%F).txt
    • 说明:重装系统后按清单一键重装,可快速恢复大多数驱动。
  • 方法C 针对 NVIDIA 专有驱动的备份

    • 适用:使用 NVIDIA-Linux-x86_64-*.run 安装的闭源驱动。
    • 步骤:
      1. 保存安装包(保留与你当前 内核/驱动版本 一致的 .run 文件)
        • cp /path/NVIDIA-Linux-x86_64-*.run /backup/
      2. 备份黑屏名单与内核参数(禁用 nouveau 的配置)
        • cp /etc/modprobe.d/blacklist-nouveau.conf /backup/ 2>/dev/null || true
        • cp /etc/default/grub /backup/grub-$(date +%F).bak
      3. 备份当前 initramfs(若已重建过以适配 NVIDIA)
        • cp /boot/initramfs-$(uname -r).img /backup/initramfs-$(uname -r)-nvidia.bak
    • 说明:NVIDIA 驱动安装常伴随黑名单与 initramfs 重建,恢复时可直接复用安装包与配置。

三、快速恢复步骤

  • 场景1 仅模块/固件备份的恢复

    • 将备份的模块与固件解压到新系统对应位置:
      • tar xzf /backup/drivers-modules-*.tar.gz -C /
    • 如备份了 initramfs,先替换或重建:
      • 替换:cp /backup/initramfs-$(uname -r).img /boot/
      • 或重建:dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
    • 恢复黑名单/内核参数并重建引导:
      • cp /backup/modprobe.d-blacklist-*.conf /etc/modprobe.d/
      • cp /backup/grub-*.bak /etc/default/grub
      • grub2-mkconfig -o /boot/grub2/grub.cfg
    • 重启验证:lsmod | grep <your_driver>;必要时 dmesg | grep -i <your_driver> 查看加载日志。
  • 场景2 使用包清单重装驱动

    • 按备份清单重装:
      • yum/dnf install $(cat /backup/pkglist-driver-related-*.txt)
    • 若为 DKMS 驱动,确认已注册到当前内核:
      • dkms status
    • 重建 initramfs 并重启:
      • dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
      • reboot
  • 场景3 NVIDIA 专有驱动恢复

    • 恢复黑名单/内核参数并重建引导(同上)。
    • 给运行级别设置文本模式并关闭图形:
      • systemctl set-default multi-user.target
      • systemctl isolate multi-user.target
    • 执行安装包(与你当前内核匹配的那个 .run 文件):
      • chmod +x /backup/NVIDIA-Linux-x86_64-*.run
      • /backup/NVIDIA-Linux-x86_64-*.run
    • 安装完成后恢复图形并重启:
      • systemctl set-default graphical.target
      • reboot

四、注意事项与验证

  • 驱动与内核强绑定:更换 内核版本 后,需重建 initramfs 并确认 DKMS 模块已为新内核编译;必要时重新运行 NVIDIA 安装程序。
  • 备份粒度建议:同时保留“模块/固件 + initramfs + 黑名单/grub + 安装包 + 包清单”,可覆盖大多数恢复场景。
  • 验证要点:
    • 模块是否加载:lsmod | grep
    • 设备是否就绪:lspci -k | grep -A3 <vendor|class>
    • 日志排查:dmesg | grep -i
    • 网络类驱动:ip link、ethtool -i
    • 存储/RAID:lsblk、lvs、pvs、cat /proc/mdstat
  • 不建议使用 Windows 驱动精灵 等 Windows 工具备份 Linux 驱动;Linux 驱动以内核模块与固件为主,应采用上述系统级方法。

0