在 CentOS 系统中,驱动“丢失”通常由内核升级、系统更新、硬件变更或驱动未持久化等原因导致。以下是常见原因及对应的排查与解决方法:
一、常见原因
1. 内核升级导致驱动失效(最常见)
- CentOS 更新内核后,原有驱动(尤其是第三方驱动,如 NVIDIA、网卡、RAID 驱动)未重新编译或安装
- 旧内核下正常,新内核下驱动不可用
表现
- 新内核无法启动或启动后设备不可用
lsmod 中找不到对应模块
modprobe xxx 失败
解决
- 重启选择 旧内核(GRUB 菜单)
- 或在新内核下重新安装驱动(如
akmod / dkms 方式)
2. 驱动未使用 DKMS / akmod(未自动重建)
- 驱动未注册到 DKMS
- 内核升级后不会自动重新编译
解决
dkms status
3. initramfs 中未包含驱动
- 某些驱动需要在 initramfs 中加载(如磁盘、RAID、网卡 PXE 启动)
解决
dracut -f
4. 驱动被误删或未安装
- 手动删除
/lib/modules/$(uname -r)/
- 系统最小化安装,缺失
kernel-modules
解决
yum install kernel-modules
5. 硬件变更
解决
lspci
6. Secure Boot 阻止第三方驱动加载
解决
7. 驱动被黑名单(blacklist)
检查
ls /etc/modprobe.d/
grep blacklist /etc/modprobe.d/*
解决
- 删除或注释 blacklist 行
- 重新生成 initramfs
二、快速排查步骤(推荐)
1. 查看当前内核
uname -r
2. 查看驱动是否加载
lsmod | grep xxx
3. 查看驱动是否存在
find /lib/modules/$(uname -r) -name "*xxx*"
4. 查看硬件是否被识别
lspci -k
5. 查看系统日志
dmesg | grep -i error
journalctl -xe
三、典型场景示例
示例 1:NVIDIA 驱动丢失
nvidia-smi
✅ 解决:
- 内核升级后未重装 NVIDIA
- 使用
dkms 重装或切换旧内核
示例 2:网卡驱动消失
ip a
✅ 解决:
- 查看
lspci -k
- 安装对应
kmod-xxx 或厂商驱动
四、如何防止驱动再次丢失
✅ 最佳实践
- 使用 DKMS / akmod 安装驱动
- 内核升级后 先测试再重启
- 保留 旧内核
- 重要驱动写入文档(版本、来源)
如果你愿意,可以告诉我:
- CentOS 版本(7 / 8 / Stream)
- 具体是 哪种驱动丢失(网卡 / GPU / 磁盘 / 其他)
- 报错信息或截图
我可以给你精确到命令级别的解决方案。