分类: LINUX
2010-05-27 22:45:17
1、modprobe 命令是根据depmod -a的输出/lib/modules/version/modules.dep来加载全部的所需要模块。 2、 删除模块的命令是:modprobe -r filename 3、系统启动后,正常工作的模块都在/proc/modules文件中列 出。使用lsmod命今也可显示相同内容。 4、 在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。/etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。 insmod 与 modprobe 都是载入 kernel module,不过一般差别于 modprobe 能够处理 module 载入的相依问题。 比方你要载入 a module,但是 a module 要求系统先载入 b module 时,直接用 insmod 挂入通常都会出现错误讯息,不过 modprobe 倒是能够知道先载入 b module 后才载入 a module,如此相依性就会满足。 不过 modprobe 并不是大神,不会厉害到知道 module 之间的相依性为何,该程式是读取 /lib/modules/2.6.xx/modules.dep 档案得知相依性的。而该档案是透过 depmod 程式所建立。 modprobe: modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若 在载入过程中发生错误,在modprobe会卸载整组的模块。 -a或--all 载入全部的模块。 -c或--show-conf 显示所有模块的设置信息。 -d或 --debug 使用排错模式。 -l或--list 显示可用的模块。 -r, --remove //若在命令指定模块,则删除指定模块,否则,指定"自动清除"模式 -t或--type 指定模块类型。 -v或--verbose 执行时显示详细的信息。 -V或 --version 显示版本信息。 -help 显示帮助。 -C, --config configfile //指定配置文件.默认使用/etc/modules.conf文件为配置文件 modprobe -r ip_vs # 删除ip_vs模块 modprobe -l | grep ip_vs # 查看ip_vs模块是否编译进内核 lsmod -l | grep ip_vs # 查看ip_vs模块是否载入进内核 核心模组的载入与移除: insmod, modprobe, rmmod 好了,如果我想要自行手动载入模组,又该如何 是好?有很多方法啦,最简 单而且建议的,是使用 modprobe 这个指令来载入模组, 这是因为 modprobe 会主动的去搜寻 modules.dep 的内容,先克服了模组的相依性后, 才决定需要载入的模组有哪些,很方便。至于 insmod 则完全由使用者自行载入一个完整档名的模组, 并不会主动的分析模组相依性啊! [root@linux ~]# insmod [/full/path/module_name] [parameters] 范例一: 请尝试载入 /lib/modules/`uname -r`/kernel/fs/smbfs/smbfs.ko [root@linux ~]# insmod /lib/modules/`uname -r`/kernel/fs/smbfs/smbfs.ko [root@linux ~]# lsmod | grep smbfs smbfs 67897 0 对吧!他立刻就将该模组载入啰~这个需要加入完整档名啦!那如何移除这个模组呢? [root@linux ~]# rmmod [-fw] module_name 参数: -f :强制将该模组移除掉,不论是否正被使用; -w :若该模组正被使用,则 rmmod 会等待该模组被使用完毕后,才移除他! 范例: 范例一:将刚刚载入的 smbfs 模组移除! [root@linux ~]# rmmod smbfs 帅吧!移除掉了。不过,如前所述的, insmod 实在不怎么人性化,近年来, 我们都建议直接使用 modprobe 来处理模组载入的问题,这个指令的用法是: [root@linux ~]# modprobe [-lcf] module_name 参数: -c :列出目前系统所有的模组!(更详细的代号对应表) -l :列出目前在 /lib/modules/`uname -r`/kernel 当中的所有模组完整档名; -f :强制载入该模组; -r :类似 rmmod ,就是移除某个模组啰~ 范例: 范例一:载入 smbfs 模组 [root@linux ~]# modprobe smbfs # 很方便吧!不需要知道完整的模组档名,这是因为该完整档名已经记录到 # /lib/modules/`uname -r`/modules.dep 当中的缘故啊!如果要移除的话: [root@linux ~]# modprobe -r smbfs 使用 modprobe 真的是要比 insmod 方便很多!因为他是直接去搜寻 modules.dep 的纪录, 所以啰,当然可以克服模组的相依性问题,而且还不需要知道该模组的详细路径呢! 好方便! ^_^ |