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/version 与 nvidia-smi 输出
二、通用备份方法(适用于大多数设备)
-
- 打包已安装的内核模块与依赖
- 备份当前运行内核的模块目录与依赖关系:
- 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
-
- 备份固件文件
- 固件通常位于 /lib/firmware,建议全量打包:
- tar czf /backup/drivers-$(date +%F)/firmware.tar.gz -C /lib/firmware .
-
- 备份 DKMS 注册信息(若使用 DKMS)
- DKMS 驱动会在 /usr/src/<模块名>-<版本>/ 与 /var/lib/dkms/ 维护注册与构建信息:
- tar czf /backup/drivers-$(date +%F)/dkms-registry.tar.gz /usr/src/-/ /var/lib/dkms/*
-
- 备份第三方驱动安装包与脚本
- 将已安装的驱动 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-/ 或安装时指定的目录)。
-
- 备份黑名单与内核启动参数(常见于禁用 nouveau 等场景)
- 建议保存相关配置:
- cp -a /etc/modprobe.d/blacklist*.conf /backup/drivers-$(date +%F)/
- cp -a /etc/default/grub /backup/drivers-$(date +%F)/grub.bak
-
- 生成恢复脚本(示例骨架,按需调整)
- 示例 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
-
- 校验与异地存放
- 生成校验值: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-smi、lsmod | grep nvidia、cat /proc/driver/nvidia/version
- 如需恢复 nouveau,删除黑名单并重建 initramfs 后重启。
四、恢复与验证步骤
- 恢复顺序建议
- 恢复固件与模块:tar xzf firmware.tar.gz -C /lib/firmware;tar 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/存储控制器、无线网卡 等特殊驱动,优先准备厂商提供的 官方驱动包与安装文档,并验证其在目标内核上的可用性。