Linux设备驱动程序加载卸载方法insmod和modprobe命令
Linux设备驱动程序加载卸载⽅法insmod和modprobe命令linux加载/卸载驱动有两种⽅法。
注:在使⽤这个命令加载模块前先使⽤depmod -a命令⽣成modules.dep⽂件,该⽂件位于/lib/modules/$(uname -r)⽬录下;
modprobe命令智能地向内核中加载模块或者从内核中移除模块,可载⼊指定的个别模块,或是载⼊⼀组相依的模块。modprobe会根据depmod所产⽣的依赖关系,决定要载⼊哪些模块。若在载⼊过程中出错,modprobe会卸载整组的模块。
载⼊模块的命令:
(1) 载⼊指定的模块:modprobe drv.ko
(2) 载⼊全部模块:modprobe -a
卸载模块的命令:modprobe -r drv.ko复制和粘贴快捷键CTRL加什么
modprobe命令⽤于智能地向内核中加载模块或者从内核中移除模块。
modprobe可载⼊指定的个别模块,或是载⼊⼀组相依的模块。modprobe会根据depmod所产⽣的相依关系,决定要载⼊哪些模块。若在载⼊过程中发⽣错误,在modprobe会卸载整组的模块。
选项
-a或--all:载⼊全部的模块;
-c或--show-conf:显⽰所有模块的设置信息;
-d或--debug:使⽤排错模式;
-l或--list:显⽰可⽤的模块;
-r或--remove:模块闲置不⽤时,即⾃动卸载模块;
-t或--type:指定模块类型;
-v或--verbose:执⾏时显⽰详细的信息;
-V或--version:显⽰版本信息;
-help:显⽰帮助。
参数模块名:要加载或移除的模块名称。
实例
查看modules的配置⽂件:
modprobe -c
这⾥,可以查看modules的配置⽂件,⽐如模块的alias别名是什么等。会打印许多⾏信息,例如其中的⼀⾏会类似如下:alias symbol:ip_conntrack_unregister_notifier ip_conntrack
列出内核中所有已经或者未挂载的所有模块:
modprobe -l
这⾥,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实modprobe -l读取的模块列表就位于/lib/modules/`uname -r`⽬录中;其中uname -r是内核的版本,例如输出结果的其中⼀⾏是:
/lib/modules/2.6.18-348.6.1.el5/kernel/net/netfilter/xt_statistic.ko
挂载vfat模块:
modprobe vfat
这⾥,使⽤格式modprobe 模块名来挂载⼀个模块。挂载之后,⽤lsmod可以查看已经挂载的模块。模块名是不能带有后缀的,我们通过modprobe -l所看到的模块,都是带有.ko或.o后缀。
移除已经加载的模块:
表示变化快的四字词语modprobe -r 模块名
这⾥,移除已加载的模块,和rmmod功能相同。
汐怎么读2. insmod/rmmod
insmod需要指定模块的绝对路径,和modprobe不同,insmod并且不会把载⼊模块的依赖模块也载⼊进来。
⽤法:insmod drv.ko
rmmod只需要模块的名字即可实现模块的卸载,同样也不会把待卸载模块的依赖模块进⾏卸载。
⽤法:rmmod drv.ko
lsmod:显⽰已载⼊系统的模块
(install mole)
功能说明:载⼊模块 install loadable kernel module
语法:insmod [-fkmpsvxX][-o <;模块名称>][模块⽂件][符号名称 = 符号值]
参数:
-f  不检查⽬前kernel版本与模块编译时的kernel版本是否⼀致,强制将模块载⼊。
-k  将模块设置为⾃动卸除。
-m  输出模块的载⼊信息。
-o  <;模块名称>  指定模块的名称,可使⽤模块⽂件的⽂件名。
-p  测试模块是否能正确地载⼊kernel。如何发贴
-s  将所有信息记录在系统记录⽂件中。
-
v  执⾏时显⽰详细的信息。
-x  不要汇出模块的外部符号。
-X  汇出模块所有的外部符号,此为预设置。
使⽤说明:Linux有许多功能是通过模块的⽅式,在需要时才载⼊kernel。如此可使kernel较为精简,进⽽提⾼效率,以及保有较⼤的弹性。这类可载⼊的模块,通常是设备驱动程序。
insmod主要⽤于在Linux 2.4内核之前加载Linux内核模块命令。对于通过此命令加载的Linux内核模块,系统不仅不会⾃动解决内核模块之间的依赖关系,⽽且还要求将模块路径写详细。所以在Linux 2.6内核出现时,此命令已渐渐被遗忘。
在word中如何画横线加载RAID1阵列级别模块,如下所⽰:
[root@rhel5 boot]# insmod /lib/modules/2.6.
18-8.el5/kernel/drivers/md/ra1.ko
[root@rhel5 boot]# mod | raid1
raid1                  25153  0
从以上显⽰结果可知,RAID1模块已加载成功。只是在使⽤insmod命令加载模块时,需要使⽤绝对路径⽅能加载,且加载时⽆法⾃动解决依赖关系。
扩展阅读:insmod 和的区别
insmod 与 modprobe 都是载⼊ kernel module,不过⼀般差别于 modprobe 能够处理 module 载⼊的相依问题。
⽐⽅你要载⼊ a module,但是 a module 要求系统先载⼊ b module 时,直接⽤ insmod 挂⼊通常都会出现错误讯息,不过 modprobe 倒是能够知道先载⼊ b module  后才载⼊ a module,如此相依性就会满⾜。
不过 modprobe 并不是⼤神,不会厉害到知道 module 之间的相依性为何,该程式是读取 /lib/modules//modules.dep 档案得知相依性的。⽽该档案是透过程式所建⽴。
红包金额

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。