/lib/modules/$(uname -r)/kernel/
目录 ,2. 备份整个模块目录:sudo cp -r /lib/modules/$(uname -r) /备份路径
,3. 备份配置文件:复制 /etc/modprobe.d/
和 /etc/modules
等目录 ,备份后建议压缩存储,重装系统时还原即可恢复驱动。手动备份驱动文件(推荐)
原理:直接复制内核驱动文件(.ko
)及配置文件,适用于所有Linux发行版。
步骤:
-
定位驱动文件
# 列出所有已加载驱动模块 lsmod | awk 'NR>1 {print $1}' > current_modules.txt # 查找模块路径(以e1000网卡驱动为例) modinfo e1000 | grep "filename:" | awk '{print $2}'
输出示例:
/lib/modules/$(uname -r)/kernel/drivers/net/ethernet/intel/e1000/e1000.ko
-
创建备份目录
sudo mkdir -p /backup/drivers/$(uname -r)
-
复制核心文件
# 备份.ko驱动模块 sudo cp /lib/modules/$(uname -r)/kernel/drivers/**/*.ko /backup/drivers/$(uname -r)/ # 备份模块依赖关系 sudo cp /lib/modules/$(uname -r)/modules.dep /backup/drivers/$(uname -r)/ # 备份设备配置文件(关键!) sudo cp /etc/modprobe.d/* /backup/drivers/$(uname -r)/
-
验证备份完整性
sha256sum /backup/drivers/$(uname -r)/*.ko > /backup/drivers/checksums.txt
使用dkms动态内核模块支持
适用场景:针对通过DKMS(Dynamic Kernel Module Support)安装的驱动(如NVIDIA显卡驱动)。
操作流程:
-
确认驱动支持DKMS:
dkms status # 输出示例:nvidia, 470.182.03, 5.15.0-86-generic, x86_64: installed
-
备份DKMS模块源码:
sudo cp -r /usr/src/<module_name>-<version> /backup/drivers/dkms/
-
导出配置信息:
dkms status > /backup/drivers/dkms_status.log
恢复命令:
sudo dkms install -m <module_name> -v <version>
自动化脚本备份(高危操作防护)
推荐工具:driver-backup
脚本(社区维护)
步骤:
-
下载脚本:
wget https://github.com/driver-backup-project/driver-backup/releases/latest/download/driver-backup.sh chmod +x driver-backup.sh
-
执行备份(自动打包当前内核所有驱动):
sudo ./driver-backup.sh -o /backup/drivers_$(date +%F).tar.gz
-
安全验证:
解压后检查/lib/modules/
目录结构是否完整,避免覆盖系统文件。
关键注意事项
-
内核版本绑定
备份的驱动仅适用于相同内核版本的系统,通过uname -r
记录内核号,恢复前需确认目标系统版本一致。 -
存储安全
- 将备份文件保存至外部设备或云存储(如使用
rsync
同步至NAS) - 加密敏感配置:
gpg -c /backup/drivers.tar.gz
- 将备份文件保存至外部设备或云存储(如使用
-
恢复流程
# 手动恢复示例 sudo cp -r /backup/drivers/$(uname -r)/* /lib/modules/$(uname -r)/ sudo depmod -a # 重建模块依赖 sudo modprobe <module_name> # 加载驱动
-
硬件兼容性
虚拟机驱动(如virtio)无需备份,重点备份显卡、网卡、RAID卡等专用硬件驱动。
为什么备份驱动至关重要?
- 系统升级风险:内核更新可能导致专有驱动失效(如NVIDIA驱动)
- 硬件故障应对:快速替换故障服务器网卡/存储控制器
- 合规审计:保留旧版驱动满足企业安全策略要求
专业提示:每季度或重大升级前备份一次,结合
cron
设置自动任务:0 3 * * 1 tar -zcf /backup/drivers_$(date +%F).tar.gz /lib/modules/$(uname -r)
引用说明:
- DKMS官方文档:https://github.com/dell/dkms
- Linux内核模块管理:https://www.kernel.org/doc/html/latest/admin-guide/modules.html
- 驱动备份脚本源码:https://github.com/driver-backup-project/driver-backup(GPLv3许可)
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/21612.html