modprobe

来源:互联网 发布:解压缩软件下载免费版 编辑:程序博客网 时间:2024/05/17 18:02
        Linux有许多功能是通过模块的方式,在需要时才载入kernel。如此可使kernel较为精简,进而提高效率,以及保有较大的弹性。这类可载入的模块,通常是设备驱动程序。在此介绍一下linux中关于模块的命令。        Linux操作系统的核心具有模块化的特性,因此在编译核心时,无需把全部的功能都放入核心。你可以将这些功能编译成一个个单独的模块,待需要时再分别载入。      modprobe                    功能说明:自动处理可载入模块。           语  法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]。           补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。                   注意:                       1、modprobe 命令是根据depmod -a的输出/lib/modules/version/modules.dep来加载全部的所需要模块。                       2、删除模块的命令是:modprobe -r filename。                       3、系统启动后,正常工作的模块都在/proc/modules文件中列出。使用lsmod命令也可显示相同内容。                  参数:                       -a或--all  载入全部的模块。                       -c或--show-conf  显示所有模块的设置信息。                       -d或--debug  使用排错模式。                       -l或--list  显示可用的模块。                       -r或--remove  模块闲置不用时,即自动卸载模块。/////////                       -t或--type  指定模块类型。                       -v或--verbose  执行时显示详细的信息。                       -V或--version  显示版本信息。                       -help  显示帮助。  insmod         功能说明:载入模块。         与modprobe的区别: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 程式所建立。  depmod        功能说明:分析可载入模块的相依性,也就是检查系统中各模块之间的依赖关系。                语   法:depmod [-adeisvV][-m <文件>][--help][模块名称]        补充说明:depmod可检测模块的相依性,供modprobe在安装模块时使用。depmod会把依赖关系信息存于/lib/modules/2.6.18-1.2798/modules.dep中,modprobe查看/lib/module/version/modules.dep得知模块的依赖关系。            参 数:                      -a或--all  分析所有可用的模块。                      -d或debug  执行排错模式。                      -e  输出无法参照的符号。                      -i  不检查符号表的版本。                      -m<文件>或system-map<文件>  使用指定的符号表文件。                      -s或--system-log  在系统记录中记录错误。                      -v或--verbose  执行时显示详细的信息。                      -V或--version  显示版本信息。                      --help  显示帮助。    lsmod                 功能说明:显示已载入系统的模块                  注    意:执行lsmod指令,会列出所有已载入系统的模块。Linux操作系统的核心具有模块化的特性,因此在编译核心时,无需把全部的功能都放入核心。你可以将这些功能编译成一个个单独的模块,待需要时再分别载入。                 chengxiaoke@chengxiaoke-X550JD:/etc/modprobe.d$ lsmod                 Module                  Size  Used by                 joydev                 17393  0                  ctr                    13049  2                  ccm                    17773  2                  snd_hda_codec_hdmi     47548  1                  snd_hda_codec_conexant    23109  1                  snd_hda_codec_generic    69011  1 snd_hda_codec_conexant                 模块名称                大小   此模块是否被其他模块使用   rmmod         功能说明:删除不必要的模块                 注意:insmod与rmmod的问题时,你必须自行找到模块的完整文件名才行。所以,我们一般使用modprobe.                  例子1:尝试载入cifs.ko这个文件系统模块                      #insmod /lib/modules/$(uname -r)/kernel/fs/cifs/cifs.ko                      记住,一定要是完整的文件名。                          例子2:加载cifs模块                      #modprobe cifs                      很方便,因为我们根本不用知道完整的模块文件名   modinfo                  功能说明:显示kernel模块的对象文件,以显示该模块的相关信息。         chengxiaoke@chengxiaoke-X550JD:/etc/modprobe.d$ modinfo psmouse         filename:       /lib/modules/3.16.0-45-generic/kernel/drivers/input/mouse/psmouse.ko         license:        GPL         description:    PS/2 mouse driver         author:         Vojtech Pavlik <vojtech@suse.cz>         srcversion:     BCAB9733C70708FABCA838B         alias:          serio:ty05pr*id*ex*         alias:          serio:ty01pr*id*ex*         depends:                 intree:         Y         vermagic:       3.16.0-45-generic SMP mod_unload modversions          signer:         Magrathea: Glacier signing key         sig_key:        C1:A3:1E:DB:9F:C4:C6:4E:2D:95:A7:FF:18:A6:73:D1:8C:AB:15:A6         sig_hashalgo:   sha512         parm:           proto:Highest protocol extension to probe (bare, imps, exps, any). Useful for KVM switches. (proto_abbrev)         parm:           resolution:Resolution, in dpi. (uint)         parm:           rate:Report rate, in reports per second. (uint)         parm:           smartscroll:Logitech Smartscroll autorepeat, 1 = enabled (default), 0 = disabled. (bool)         parm:           resetafter:Reset device after so many bad packets (0 = never). (uint)         parm:           resync_time:How long can mouse stay idle before forcing resync (in seconds, 0 = never). (uint)        重要知识,我们得知道内核与内核模块放在哪里。        内核:/boot/vmlinuz或/boot/vmlinuz-version;        内核解压缩所需RAMDisk:/boot/initrd(/boot/initrd-version);        内核模块:/lib/modules/version/kernel或/lib/modules/$(uname -r)/kernel;        内核源码:/usr/src/linux 或 /usr/src/kernels;        如果内核顺利被加载了,会有以下几个信息记录:        内核版本:/proc/version        系统内核功能:/proc/sys/kernel        假如我有个新硬件,偏偏我的系统不支持,要这样做:重新编译内核,并加入最新的硬件驱动程序源码;将该硬件的驱动程序编译成为模块,在启动时加载该模块。        内核模块的额外参数配置:/etc/modprobe.conf 。  如果你想修改某些模块的额外参数设置,就在这个文件内。  #vi /etc/modprobe.conf        .ko文件是模块化的驱动文件     .ko 是内核模块文件,是内核加载的某个模块,一般是驱动程序。        sudo modprobe -r psmouse  关闭触摸板        sudo modprobe psmouse    打开触摸板,即将psmouse模块载入kerne。    ////00005526        内核与内核模块:   http://blog.chinaunix.net/uid-28216282-id-3380616.html          Linux下hello.ko内核模块制作的全过程 :  http://blog.csdn.net/jiankangshiye/article/details/6665179
0 0