在网上查了查,原来是现在的内核模块在插入卸载时都会要转到/lib/modules/内核版本号/
我们提供的服务有:做网站、成都做网站、微信公众号开发、网站优化、网站认证、富县ssl等。为1000+企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的富县网站制作公司
这个目录里。
所以只要建立这个目录并且把要使用的模块.ko文件复制到这个目录就行了。
最近在使用busybox
1.13.1时发现要卸载必须要完全匹配模块名才行,原来在老标本的使用模块文件名就能卸载,现在发现不行了。
驱动注册:
1、内核源码中 vim include/linux/platform_device.h 可看到驱动注册的相关函数,查找一下“platform_driver_register” 可看到:
注册驱动的函数:
extern int platform_driver_register(struct platform_driver *)
卸载驱动的函数:
extern void platform_driver_unregister(struct platform_driver *)
其中 platform_driver 类型的结构体 是非常重要的,该结构体在include/linux/platform_device.h 头文件中,里面的几个操作函数和一个对象会在编写的驱动C文件中调用,相关函数可参照例程中仿写。
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 模块名