Linux无法卸载驱动模块

Linux无法卸载驱动模块,第1张

在网上查了查,原来是现在的内核模块在插入卸载时都会要转到/lib/modules/内核版本号/ 这个目录里。

所以只要建立这个目录并且把要使用的模块.ko文件复制到这个目录就行了。

最近在使用busybox 1.13.1时发现要卸载必须要完全匹配模块名才行,原来在老标本的使用模块文件名就能卸载,现在发现不行了。

1、进入stmmac驱动源码目录,执行make uninstall命令;

2、执行make clean命令,清理掉编译的临时文件;

3、执行make distclean命令,清理掉编译的模块文件;

4、执行make mrproper命令,清理掉编译的配置文件;

5、最后,执行make uninstall_modules命令,卸载掉stmmac驱动模块。

Linux下大部分驱动都是以模块方式加载到内核的,所以要删除一个驱动,主要从模块下手。所以首先要学会如何查看已经加载的模块:

lsmod

第一列是模块的名字,根据模块名字往往可以猜出哪个模块是你要删除的驱动。如果对硬件不熟悉的话就要试着通过其他命令来找相关的信息。

比如我要删除无线网卡的驱动,那么我可以用:

lspci | grep less

lspci命令会列出所有PCI设备,而grep会找出返回结果中包含less的行。无线是Wireless,所以返回结果就会包含有我的无线网卡的信息,比如:

02:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8192E Wireless LAN Controller (rev 01)

可以看出型号是RTL8192E,这个时候再用lsmod命令,查看有没有与8192相关的模块名就可以了。

找到模块名字后(比如我的无线网卡叫做r8192e_pci)就可以用如下命令卸载模块:

rmmod 模块名

对于我的无线网卡就是rmmod r8192e_pci。这时候驱动就已经成功被卸载了,但是是临时的,重启又会重新加载,如果要永久卸载这个驱动的话还需要改一点东西。

在Ubuntu下进入/etc/modprobe.d目录下(其他发行版会有些差别),编辑blacklist.conf文件,加入一行(一般加在最下面):

blacklist 模块名

这样就将你要删的驱动加入了黑名单,以后就再也见不到它啦!: )


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8556565.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-18
下一篇 2023-04-18

发表评论

登录后才能评论

评论列表(0条)

保存