CentOS驱动备份恢复
小樊
38
2025-12-15 17:37:03
CentOS 驱动备份与恢复实用指南
一、核心思路
- Linux 内核模块(驱动)本质是文件,位于 /lib/modules/$(uname -r)/ 与对应的 initramfs 镜像中。备份驱动=备份当前内核模块与 initramfs,并保留安装包或 DKMS 配置;恢复=在新系统或新内核上还原模块与镜像,必要时用 DKMS 重建或重新安装厂商驱动。
二、快速备份步骤
- 记录与导出当前内核与驱动清单
- 内核版本:uname -r
- 模块清单:lsmod > modules-$(uname -r).txt
- 第三方驱动包清单(推荐):rpm -qa --qf ‘%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n’ | grep -Ei ‘kmod|dkms|nvidia|elrepo|akmod’ > rpm-drivers-$(uname -r).txt
- 备份模块目录与 initramfs
- 模块目录:tar czf modules-$(uname -r).tgz -C /lib/modules/$(uname -r) .
- initramfs 镜像:先备份原镜像 mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak,再按需重建(见下文“恢复”)
- 备份黑屏名单与关键配置
- 黑名单:cp -a /etc/modprobe.d/blacklist.conf /backup/drivers/ 2>/dev/null || true*
- 显卡相关(如 NVIDIA):cp -a /etc/X11/xorg.conf /etc/modprobe.d/nvidia.conf /backup/drivers/ 2>/dev/null || true*
- 备份厂商驱动安装包与脚本
- 将 NVIDIA-Linux-*.run、ELRepo 的 kmod-*.rpm、或 DKMS 源码目录(如 /usr/src/nvidia-*)一并归档保存,便于离线恢复。
三、典型恢复场景与命令
- 场景A:同版本内核重装或系统救援后恢复
- 恢复模块:tar xzf modules-.tgz -C /lib/modules/
- 重建 initramfs(确保包含必要驱动,如 RAID/SCSI/显卡):dracut -f /boot/initramfs-.img
- 如曾定制黑名单或显卡配置,拷回并按需执行 dracut -f 再次生成镜像。
- 场景B:内核升级后驱动“掉”(如 nvidia-smi 失败)
- 优先用 DKMS 重建已注册模块(示例版本号以实际为准):dkms install -m nvidia -v 470.82.01
- 若未注册 DKMS,使用厂商安装包重装,或先安装 dkms 再重建:yum install -y dkms
- 场景C:initramfs 缺驱动导致无法识别磁盘/阵列
- 将驱动加入 initramfs:编辑 /etc/dracut.conf 增加 add_drivers+=“mpt3sas”,然后重建;或一次性命令:dracut --force --add-drivers mpt3sas --kver=
- 验证:lsinitrd -k | grep mpt,确认模块已打包进镜像后再重启。
- 场景D:全新系统离线恢复(无网络)
- 先准备本地仓库(ISO 或内网镜像),安装必要工具:yum install -y dkms gcc kernel-devel
- 恢复模块与配置后,按场景 A/B/C 重建 initramfs 或 DKMS 重建;显卡驱动可用本地 .run 安装包执行。
四、关键注意事项
- 驱动与内核强绑定:更换或升级内核后,旧驱动不会自动适配,需重建 initramfs 或用 DKMS 重建模块;NVIDIA 场景常见现象是 nvidia-smi 报错,可用 DKMS 快速恢复。
- 不要仅备份 /boot:很多驱动在 /lib/modules 与 initramfs 中;仅拷 vmlinuz/initramfs 不足以恢复驱动功能。
- 离线环境准备:提前下载 kmod-.rpm / akmod-.rpm / NVIDIA 驱动 .run / dkms,并准备本地 yum 源或安装介质,避免恢复时依赖缺失。
- 变更前后做验证:执行 lsinitrd -k | grep 检查模块是否进入 initramfs;执行 modinfo 与 lsmod 检查加载状态;显卡可用 nvidia-smi 验证。