必须按逆序卸载nvidia-drm、nvidia-modeset、nvidia-uvm、nvidia主模块;手动删除/lib/modules/$(uname -r)下所有nvidia*.ko文件;清理xorg驱动、gl库、egl_vendor.d配置及initramfs;最后更新depmod并重启。

modprobe -r 顺序错了,模块根本卸不干净
直接 sudo modprobe -r nvidia 大概率失败,报错 Module nvidia is in use 或卸载后 lsmod | grep nvidia 仍有输出。这是因为 NVIDIA 驱动由多个强依赖模块组成,必须严格按逆序卸载:子模块先走,主模块最后。
正确顺序是:
sudo modprobe -r nvidia-drmsudo modprobe -r nvidia-modesetsudo modprobe -r nvidia-uvmsudo modprobe -r nvidia
漏掉任何一个(尤其是 nvidia-drm),nvidia 主模块就会被锁住。用 lsmod | grep nvidia 检查每步结果,确保逐个消失。
/lib/modules/$(uname -r)/ 下的 .ko 文件得手动删
包管理器(apt purge 或 yum remove)只清理软件包注册表,从不碰 /lib/modules/$(uname -r)/ 里的内核模块文件。残留的 nvidia*.ko 会在下次 modprobe 时自动加载,导致新驱动冲突、nvidia-smi 假死、甚至 Xorg 启动黑屏。
安全清理方式:
- 定位:
find /lib/modules/$(uname -r) -name "nvidia*.ko*" 2>/dev/null - 删除:
sudo find /lib/modules/$(uname -r) -name "nvidia*.ko*" -delete - 别忘了关联模块:
sudo rm -f /lib/modules/$(uname -r)/kernel/drivers/video/nv*.ko(尤其混合显卡场景)
删完立刻执行 sudo depmod -a,否则系统找不到模块依赖关系,后续加载会失败。
Xorg 驱动和 GL 库不清理,桌面照样崩
内核模块卸了,但用户态部分还在:X server 启动时仍会加载 /usr/lib/xorg/modules/drivers/nvidia_drv.so,结果就是黑屏、回退到 llvmpipe 软渲染、分辨率错乱。
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
必须同步清理这些路径:
sudo rm -f /usr/lib/xorg/modules/drivers/nvidia_drv.sosudo rm -rf /usr/lib/x86_64-linux-gnu/nvidia*sudo rm -f /usr/share/glvnd/egl_vendor.d/*nvidia*-
sudo rm -f /etc/X11/xorg.conf*(避免旧配置强制加载驱动)
清理后检查:ls /usr/lib/xorg/modules/drivers/ | grep -i nvidia 应无输出;glxinfo | grep "OpenGL renderer" 应显示 llvmpipe 或 mesa,而非 NVIDIA。
initramfs 和 PATH 不更新,重启等于白干
initramfs 镜像里可能打包了旧 nvidia.ko,重启后内核一上来就加载它,你前面所有操作全失效。Debian/Ubuntu 执行 sudo update-initramfs -u,RHEL/CentOS/Fedora 执行 sudo dracut -f。
另外,nvidia-smi 可能还在 PATH 里(比如 /usr/bin/nvidia-smi 是符号链接或残留二进制),但执行报错。用 which nvidia-smi 和 command -v nvidia-smi 查,有输出就删:sudo rm -f $(which nvidia-smi),再跑 sudo updatedb && locate nvidia-smi 确认扫干净。
最后一步:退出图形环境再重启。别在桌面里直接 reboot,先 sudo systemctl isolate multi-user.target,避免模块被 Xorg 或 GNOME 进程占用。
真正干净的卸载,不是“命令跑完就结束”,而是让系统连“NVIDIA”这三个字母都记不起来——内核不加载、X 不找、GL 不链、PATH 不见、initramfs 不带。少一步,下次装驱动时那个熟悉的 Unable to load the kernel module nvidia.ko 就会准时出现。










