zoukankan      html  css  js  c++  java
  • Linux中mod相关的命令 内核模块化 mod相关命令都是用来动态加载内核模块/驱动程序模块

    Linux中mod相关的命令 内核模块化   mod相关命令都是用来动态加载内核模块/驱动程序模块

    http://baike.baidu.com/link?url=lxiKxFvYm-UfJIxMjzMvMcGkzCwlxrj5L7YGKGd90hKX0iVU1Du5fa-6GvG0sw_hIoxwNh9rvwM9C2y3NN1RRa  鸟哥私房菜

    module-init-tools:Linux内核可加载模块管理工具

    rpm -ql module-init-tools
    /etc/depmod.d
    /etc/depmod.d/dist.conf
    /etc/modprobe.d
    /etc/modprobe.d/dist-alsa.conf
    /etc/modprobe.d/dist-oss.conf
    /etc/modprobe.d/dist.conf
    /etc/modprobe.d/local.conf
    /sbin/depmod
    /sbin/insmod
    /sbin/insmod.static
    /sbin/lsmod
    /sbin/modinfo
    /sbin/modprobe
    /sbin/rmmod
    /sbin/weak-modules

    其实跟程序的动态库的原理和作用一样,内核在用到的时候调用相应的内核模块,内核模块化

    Linux驱动程序有两种加载方式:一种是静态地编译进内核,内核启动时自动加载,另一种是编写为内核/驱动模块,使用insmod命令将模块动态加载到正在运行的内核,

    不需要时用rmmod命令将模块卸载。

    LVS的IPVS模块也是采用动态加载的方式

    命令有六个:modprobe(Linux 2.6新增)、depmod、insmod  、lsmod、rmmod、modinfo

    mod:module内核模块

    modprobe、insmod和depmod包含在一个名为modutils或mod-utils的工具包


    modprobe

    简介
    Linux命令:modprobe 。
    功能说明:自动处理可载入模块。
    语 法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值]。
    补充说明:modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。
    内容
    1、modprobe 命令是根据depmod -a的输出/lib/modules/kernel version/modules.dep来加载全部的所需要模块。
    2、删除模块的命令是:modprobe -r filename。
    3、系统启动后,正常工作的模块都在/proc/modules文件中列出使用lsmod命令也可显示相同内容
    4、在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。

    /etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。

    cat /lib/modules/version/modules.dep
    cat: /lib/modules/version/modules.dep: No such file or directory
    参数
    -a或--all  载入全部的模块。
    -c或--show-conf  显示所有模块的设置信息。
    -d或--debug  使用排错模式。
    -l或--list  显示可用的模块。
    -r或--remove  模块闲置不用时,即自动卸载模块。
    -t或--type  指定模块类型。
    -v或--verbose  执行时显示详细的信息。
    -V或--version  显示版本信息。
    -help  显示帮助。
    操作
    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   -r igb    删除igb模块

    使用模块选项有两个方法

    第一个  加载igb的时候到igb.conf文件里找

    echo "options igb max_vfs=7"  >>/etc/modprobe.d/igb.conf

    modprobe igb

    第二个  在命令里指定选项

    modprobe igb  max_vfs=7

    深度实践KVM P49

    depmod
    模块依赖程序

    /sbin/depmod -a 

    遍历文件/lib/modules/内核版本/modules.dep (模块依赖关系 该文件由depmod -a 命令建立的,保存了内核模块的依赖关系,使得在装入指定模块前装入那些事先需要装入的模块

    insmod  
    载入模块

    insmod  first_time.ko


    lsmod
    列出内核已加载的模块

    lsmod
    Module                   Size        Used by
    kvm                     337772   1  kvm_intel   kvm内核模块
    ipmi_si                  44687    1 acpi_ipmi
    ipmi_msghandler     38826   2 acpi_ipmi,ipmi_si

    rmmod
    卸载模块

    rmmod first_time.ko


    modinfo
    查看模块信息

    modinfo  first_time.ko




    [root@localhost huage]# lsmod               //列出当前系统已加载的模块
    Module                  Size  Used by
    usb_storage            39114  0
    cdrom                  34035  1 sr_mod
    。。。。。。
    。。。。。。
    。。。。。。
     

    [root@localhost huage]# lsmod |grep usb-storage

     


    [root@localhost huage]# modprobe -r usb_storage     //删除模块;删除模块时需要加‘-r’参数
    [root@localhost huage]# lsmod |grep usb


    [root@localhost huage]# modprobe usb-storage          //添加模块;添加模块时,直接加模块名就可以了
    [root@localhost huage]# lsmod |grep usb
    usb_storage            39114  0


    //使用modprobe命令添加或删除模块时,‘_’和‘-’没有区别,即下划线和中划线没有区别


    不要跟ldd命令搞混了,ldd是显示程序所用的动态库 load dynamic library

    Linux就这个范儿 第15章 七种武器

    http://www.cnblogs.com/MYSQLZOUQI/p/5335649.html
    modprobe、insmod和depmod包含在一个名为modutils或mod-utils的工具包内。这些工具帮助你自动或手动地装载模块。有的时候你想人为控制一个模块什么时候被装入,例如当装入某个模块会导致问题时,

    你不想让某个模块被kernel自动装入,你可以把这个模块列到黑名单中不让它跨进内核的大门


    在Linux 2.6之前,驱动模块是智能型的,它的加载是通过扫描总线寻找它识别的设备ID号来实现。
    Linux2.6把这部分功能做了梳理,化复杂为简单,硬件检测外部化。
    利用外部程序以及模块加载器来判断模块支持哪些设备。
    除了insmod与rmmod外,Linux 2.6加载命令还有modprobe。modprobe同时会加载当前模块所依赖的其他模块。
    在Red Hat Linux中,还可以使用PnP设备的检测程序kudzu来检测和配置硬件

  • 相关阅读:
    ubuntu12.04下设置IPv6
    ubuntu下vncserver配置
    ubuntu12.04安装gerrit代码审核服务器
    Linux + Eclipse 配置交叉编译环境
    进程间通信基础
    ubuntu下搭建git服务器
    udev
    rpcgen的简单讲解及例子程序
    rpc简介、原理、实例-缘于difx
    windows下常用开源软件
  • 原文地址:https://www.cnblogs.com/MYSQLZOUQI/p/5318809.html
Copyright © 2011-2022 走看看