温馨提示×

CentOS驱动备份方法

小樊
53
2026-01-10 18:46:21
栏目: 智能运维

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

一、备份思路与准备

  • Linux(CentOS) 中,驱动多以 内核模块(.ko)内核模块依赖配置固件文件(/lib/firmware)DKMS 注册信息、以及 第三方驱动安装包与脚本 的形式存在。备份的核心是:保存“能复现当前驱动状态”的最小集合,并确保换内核或重装后仍可恢复。
  • 建议准备:
    • 一个可写的备份目录,如:/backup/drivers-$(date +%F)
    • 当前内核版本:uname -r
    • 已安装的第三方驱动清单:rpm -qa | grep -iE ‘nvidia|dkms|kmod|elrepo’(按实际硬件替换关键词)
    • 若涉及 NVIDIA GPU,记录当前驱动版本:cat /proc/driver/nvidia/versionnvidia-smi 输出

二、通用备份方法(适用于大多数设备)

    1. 打包已安装的内核模块与依赖
    • 备份当前运行内核的模块目录与依赖关系:
      • tar czf /backup/drivers-$(date +%F)/kernel-modules-$(uname -r).tar.gz -C /lib/modules/$(uname -r) .
      • depmod -n > /backup/drivers-$(date +%F)/modules.dep.list
    1. 备份固件文件
    • 固件通常位于 /lib/firmware,建议全量打包:
      • tar czf /backup/drivers-$(date +%F)/firmware.tar.gz -C /lib/firmware .
    1. 备份 DKMS 注册信息(若使用 DKMS)
    • DKMS 驱动会在 /usr/src/<模块名>-<版本>//var/lib/dkms/ 维护注册与构建信息:
      • tar czf /backup/drivers-$(date +%F)/dkms-registry.tar.gz /usr/src/-/ /var/lib/dkms/*
    1. 备份第三方驱动安装包与脚本
    • 将已安装的驱动 RPM 包保存(便于离线重装):
      • rpm -qa --qf ‘%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}.rpm\n’ | grep -iE ‘nvidia|dkms|kmod|elrepo’ | xargs -I{} cp /var/cache/yum/x86_64/7/*/packages/{} /backup/drivers-$(date +%F)/ 2>/dev/null || true
    • 若驱动是 .run 安装包或自带脚本,保留其安装包与解压目录(如 /usr/src/nvidia-/ 或安装时指定的目录)。
    1. 备份黑名单与内核启动参数(常见于禁用 nouveau 等场景)
    • 建议保存相关配置:
      • cp -a /etc/modprobe.d/blacklist*.conf /backup/drivers-$(date +%F)/
      • cp -a /etc/default/grub /backup/drivers-$(date +%F)/grub.bak
    1. 生成恢复脚本(示例骨架,按需调整)
    • 示例 restore.sh(放到备份目录根下):
      • #!/bin/bash set -e KVER=$(uname -r) tar xzf kernel-modules-$KVER.tar.gz -C /lib/modules/$KVER depmod -a $KVER tar xzf firmware.tar.gz -C /lib/firmware [ -d dkms-registry ] && tar xzf dkms-registry.tar.gz -C / echo “请手动安装备份目录中的 RPM 包,或执行对应 .run 安装程序,然后执行:depmod -a $KVER”
    • 赋予执行权限:chmod +x restore.sh
    1. 校验与异地存放
    • 生成校验值:sha256sum * > SHA256SUMS
    • 将备份目录同步到 NFS/对象存储/移动硬盘 等异地位置

三、NVIDIA 显卡驱动备份与恢复要点

  • 备份要点
    • 驱动版本与运行状态:
      • cat /proc/driver/nvidia/version > /backup/drivers-$(date +%F)/nvidia-version.txt
      • nvidia-smi -q > /backup/drivers-$(date +%F)/nvidia-smi.txt
    • 安装程序与缓存(若使用 .run 安装):
      • 保留 NVIDIA-Linux-x86_64-.run 与解压目录(如 /usr/src/nvidia-/
    • DKMS 信息(若通过 DKMS 安装):
      • 按第二部分步骤备份 /usr/src/nvidia-//var/lib/dkms/nvidia/
    • 黑名单与 initramfs(若曾禁用 nouveau):
      • 备份 /etc/modprobe.d/blacklist.conf* 与 /boot/initramfs-$(uname -r).img
  • 恢复要点
    • 安装编译依赖:yum -y install gcc kernel-devel kernel-headers
    • 禁用 nouveau(若需要):
      • echo -e “blacklist nouveau\noptions nouveau modeset=0” > /etc/modprobe.d/blacklist-nouveau.conf
      • mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
      • dracut -v /boot/initramfs-$(uname -r).img $(uname -r)
      • reboot
    • 安装方式二选一:
      • RPM 包方式:在备份目录中 *yum localinstall .rpm
      • .run 方式:sh NVIDIA-Linux-x86_64-.run
    • 验证:nvidia-smilsmod | grep nvidiacat /proc/driver/nvidia/version
    • 如需恢复 nouveau,删除黑名单并重建 initramfs 后重启。

四、恢复与验证步骤

  • 恢复顺序建议
    • 恢复固件与模块:tar xzf firmware.tar.gz -C /lib/firmwaretar xzf kernel-modules-$(uname -r).tar.gz -C /lib/modules/$(uname -r)depmod -a $(uname -r)
    • 恢复 DKMS:tar xzf dkms-registry.tar.gz -C /
    • 安装第三方驱动 RPM 或执行 .run 安装程序
    • 恢复黑名单/initramfs(如适用),然后重启
  • 验证清单
    • 模块加载:lsmod | grep <模块名>(如 nvidia、r8168、iwlwifi 等)
    • 设备识别:lspci -k | grep -iA3 <关键词>(如 vga、ethernet、wireless)
    • 功能验证:显卡用 nvidia-smi;网卡用 ip link;存储/阵列卡用 lspci/lsblk/dmesg | grep -i error

五、注意事项与建议

  • 驱动与 内核版本 强相关,跨内核恢复时可能需要重新编译或重装;使用 DKMS 可显著降低维护成本。
  • 若系统使用 Secure Boot,第三方内核模块可能需要签名或在恢复后执行 mokutil 注册,否则无法加载。
  • 备份时尽量同时保留“安装包 + 配置 + 版本信息”,便于离线或跨版本恢复。
  • 对于 RAID/存储控制器无线网卡 等特殊驱动,优先准备厂商提供的 官方驱动包与安装文档,并验证其在目标内核上的可用性。

0