银河麒麟系统彻底卸载手动安装的第三方内核模块需四步:一、用lsmod确认加载状态及依赖顺序;二、按逆序用modprobe -r逐个卸载子模块;三、find定位并删除.ko文件,再运行depmod -a更新依赖库;四、清理xorg驱动、gl库、egl厂商配置及initramfs。

你在银河麒麟系统里手动安装了第三方驱动模块(比如某厂商提供的 .ko 文件),现在想彻底移除它,但发现软件商店找不到、apt 也查不到——因为它是绕过包管理器直接加载的,必须用内核模块管理命令精准卸载。
确认模块是否正在运行并查清依赖链
按 Ctrl + Alt + T 打开终端,执行:
lsmod | grep -i 关键词(如:nvidia、rtl88x2bu、awus036ach)
若输出中包含该模块名,说明它已加载。此时不能直接 rmmod,必须先看谁在用它:
lsmod | grep 模块名(例如 lsmod | grep nvidia_uvm)→ 观察输出行首的数字列(Use Count),若大于 0,表示被其他模块引用。
重点看倒序依赖关系:比如 nvidia 依赖 nvidia-uvm、nvidia-modeset、nvidia-drm;必须先卸载子模块,否则会报错 【Module xxx is in use】。
按逆序强制卸载模块
方法一:逐个卸载(推荐,可控性强)
sudo modprobe -r 子模块名(如 nvidia-drm)→ sudo modprobe -r nvidia-modeset → sudo modprobe -r nvidia-uvm → 最后 sudo modprobe -r nvidia
方法二:一行卸载(仅限确认无其他模块交叉引用时使用)
sudo modprobe -r nvidia-drm nvidia-modeset nvidia-uvm nvidia
注意:顺序绝对不能颠倒,否则最后一步会失败。如果某一步提示“Operation not permitted”,说明该模块被锁定或正被进程占用,需先终止相关服务(如 sudo systemctl stop lightdm)或切换到字符终端(Ctrl+Alt+F3)再试。
删除磁盘上的驱动文件
第一步:定位模块文件位置
find /lib/modules/$(uname -r) -name "*关键词*.ko*" 2>/dev/null
第二步:确认路径无误后,执行安全删除
sudo find /lib/modules/$(uname -r) -name "*关键词*.ko*" -delete
第三步:重建模块依赖数据库
sudo depmod -a
这一步必须做,否则下次开机或 modprobe 其他模块时可能因依赖缺失而报错。删完不跑 depmod,系统仍会尝试加载已不存在的符号,导致后续模块加载失败。
清理用户态残留配置
① 删除 Xorg 驱动文件(防止图形界面启动时强行加载旧驱动)
sudo rm -f /usr/lib/xorg/modules/drivers/*关键词*_drv.so
② 清空 GL 库路径中对应架构的驱动文件
sudo rm -rf /usr/lib/x86_64-linux-gnu/*关键词**
③ 检查 EGL 厂商配置是否残留
ls /usr/share/glvnd/egl_vendor.d/ | grep -i 关键词
若有输出,用 sudo rm -f 删除对应 json 文件
④ 更新 initramfs(确保重启后内核镜像中也不含该模块)
sudo update-initramfs -u











