玩过linux程序开发的人都知道,当一个驱动程序以模块化的模式编译之后,它并不是随着系统启动而直接活跃的,而是静静的躺在内核的某个角落里,此时是不可用的。应用程序想要调用该驱动,则必须先加载linux命令大全,然后才能使用。而且,使用完还存在一个卸载的过程。那么,这些个驱动模块,该如何加载?又该如何卸载?又能否通过某个命令来进行统一管理或者查看呢?下面我们就来逐一分析。
一般来说,insmod和modprobe这两个命令都可以完成驱动模块的加载过程。下面以hello.ko驱动模块为例来解释:
1、insmod命令
进入hello.ko驱动模块文件所在的目录,然后直接输入下面的命令即可:
insmod hello.ko
2、modprobe命令
其一:拷贝该 plugin_name.vim插件到你个人插件目录~/.vim/plugin/下,拷贝plugin_help.txt到你个人文档目录~/.vim/doc/下,若存在该插件syntax的vim支持文件则放到~/.vim/syntax/目录下,如果以上目录不存在到终端输入如下命令创建:。2. 内核驱动模块查看,支持内核驱动模块的内存拷贝。2.内核驱动模块查看,支持内核驱动模块的内存拷贝。
这里要说明一下,#uname -r#的意思是,在终端中输入uname -r后显示的内核版本及名称。例如我目前正在玩的mini2440开发板中,#uname -r#就是2.6.32.2-FriendlyARM,所以,编译好的驱动模块就必须放在/lib/module/2.6.32.2-FriendlyARM这个目录下。
然后执行以下命令即可:
depmod # 更新modules.dep和modules.dep.bb文件,记录模块的依赖关系
modprobe hello # 注意这里无需输入.ko后缀
3、二者对比
总结一下,如上所述,insmod和modprobe都可以用来载入kernel module,但是二者还是有差别的,主要体现在modprobe能够处理module载入的依赖性问题。
比方你要载入a module,而a module需要系统先载入b module,此时如果直接用insmod载入,通常都会出错,不过当你使用modprobe命令时,系统就能够分析出其中的依赖关系linux命令大全,于是会自动先载入b module然后再载入a module。
当然,modprobe 并不是大神,不可能真的是全自动分析,它只是读取了驱动模块安装目录下的modules.dep文件,从而分析出各个模块的依赖性的,而该文件则是通过depmod命令所建立,这就是上面为什么要先执行一下depmod命令然后再执行modprobe命令的原因了。当然,如果你不执行depmod命令,modprobe命令可能也可以执行成功,但是你本次载入的模块就没有与系统其他驱动模块建立依赖关系,无法形成一个有机的整体。
至于smartdrv.exe的加载方法,很简单,进入windows安装盘的win98安装目录,运行不带参数的smartdrv.exe就是了,不过需要说明一点的是这个程序要使用扩展内存,所以你必须事先加载himem.sys,建议你制作一张windows启动盘(直接执行format a:/s就可以了),然后将windows 98安装目录下的himem.sys和smartdrv.exe拷贝到软盘上,然后在软盘上边建一个config.sys,在其中加入这样一句:device=himem.sys ,以后用这张软盘启动就可以运行smartdrv.exe了。为了提供这样的功能,在window2000开始,微软加了一个特性,强制操作系统的加载程序首先从应用程序目录中加载模块,只有当加载程序无法在应用程序目录中找到文件,才搜索其他目录。模块加载函数(必须)当通过insmod或modprobe命令加载内核模块时,模块的加载函数会自动被内核执行,完成本模块的相关初始化工作。