先按逆序卸载子模块:sudo modprobe -r nvidia-drm nvidia-modeset nvidia-uvm nvidia;再手动删除/lib/modules/$(uname -r)下残留的nvidia*.ko文件;清空Xorg驱动、GL库及egl_vendor.d配置;最后更新depmod、initramfs并重启。
直接 rmmod 失败或卸载后 lsmod | grep xxx 仍有输出,大概率是模块被其他模块引用。比如 nvidia 依赖 nvidia-modeset、nvidia-drm,必须按逆序卸载:
sudo modprobe -r nvidia-drm nvidia-modeset nvidia-uvm nvidiaModule xxx is in use,用 lsmod | grep xxx 看谁在用,或 lsof +D /dev/nvidia* 查进程包管理器只管软件包层面,不碰 /lib/modules/$(uname -r)/ 下的 .ko 文件。残留驱动文件会导致下次 modprobe 自动加载旧版,引发冲突。
find /lib/modules/$(uname -r) -name "nvidia*.ko*" 2>/dev/null
sudo find /lib/modules/$(uname -r) -name "nvidia*.ko*" -delete
drm_kms_helper 或 i915 等关联模块(尤其 Intel/NVIDIA 混合场景)sudo depmod -a,否则 modprobe 可能找不到依赖关系用户态驱动(如 nvidia_drv.so)不随内核模块卸载而消失,X server 启动时仍会加载它,导致黑屏或降级回 llvmpipe。
ls /usr/lib/xorg/modules/drivers/ | grep -i nvidia
sudo rm -f /usr/lib/xorg/modules/drivers/nvidia_drv.so
sudo rm -rf /usr/lib/x86_64-linux-gnu/nvidia*
glvnd,确认 /usr/share/glvnd/egl_vendor.d/ 下无 NVIDIA 相关 json卸载脚本可能删了二进制但没更新系统环境,常见于 NVIDIA 官方 .run 包。
nvidia-smi 是否真消失:which nvidia-smi 和 command -v nvidia-smi
which 有输出但执行报错,说明 PATH 没刷新或链接断裂,可 sudo updatedb && locate nvidia-smi 全盘搜sudo update-initramfs -u(Debian/Ubuntu)或 sudo dracut -f(RHEL/Fedora)sudo systemctl isolate multi-user.target 退出图形环境再操作,避免模块被占用