发布于2026-07-02 阅读(0)
扫一扫,手机访问
搞Linux驱动卸载,最头疼的不是命令记不住,而是你以为删干净了,结果一重启,老驱动又幽灵般冒出来。这个问题在NVIDIA驱动上尤其典型——因为涉及的东西实在太散:内核模块、用户态库、Xorg驱动、GL调度器,甚至initramfs里都可能藏着旧模块。今天这篇就专门拆解每个环节,把清理的每一步掰开揉碎,确保系统彻底忘掉那个驱动曾经存在过。

直接rmmod失败,或者卸载后lsmod | grep xxx依然有输出,大概率是模块被其他模块引用着。比如nvidia依赖nvidia-modeset、nvidia-drm,必须按逆序卸载:
sudo modprobe -r nvidia-drm nvidia-modeset nvidia-uvm nvidiaModule xxx is in uselsmod | grep xxx看看谁在用,或者lsof +D /dev/nvidia*查具体进程——杀死占用进程后再卸载包管理器只管软件包层面的文件,/lib/modules/$(uname -r)/下的.ko文件它是不碰的。这些残留驱动文件会带来一个经典问题:下次modprobe自动加载旧版,跟新版冲突,系统直接给你脸色看。
find /lib/modules/$(uname -r) -name "nvidia*.ko*" 2>/dev/nullsudo find /lib/modules/$(uname -r) -name "nvidia*.ko*" -deletedrm_kms_helper或i915sudo depmod -a,不然依赖关系缓存还指着旧模块,下次加载照样报错用户态驱动(比如nvidia_drv.so)不会随内核模块卸载而自动消失。X server启动时仍会加载它,结果要么黑屏,要么降级到llvmpipe软件渲染,性能一落千丈。
ls /usr/lib/xorg/modules/drivers/ | grep -i nvidiasudo rm -f /usr/lib/xorg/modules/drivers/nvidia_drv.sosudo 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,RHEL/Fedora执行sudo dracut -fsudo systemctl isolate multi-user.target退出图形环境再操作,避免模块被占用真正干净的卸载,不是“删完就完”,而是让系统彻底忘记那个驱动存在过——内核镜像、用户态库、Xorg插件、GL调度器、initramfs镜像,缺一不可。尤其是混合安装(apt + .run)的场景,漏掉任意一环,下次启动时它就可能悄悄复活。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
4
5
6
7
8
9