Modprobe - Linux命令 - Unix命令

名称

modprobe - 可加载模块的高级处理

概要

modprobe [-adnqv] [-C config ]模块[symbol = value ...]
modprobe [-adnqv] [-C config ] [-t type ]模式
modprobe -l [-C config ] [-t type ]模式
modprobe -c [-C config ]
modprobe -r [-dnv] [-C config ] [module ...]
modprobe -Vh

OPTIONS

-a , - 全部

加载所有匹配的模块,而不是在第一次成功加载后停止。

-c ,-- showconfig

显示当前使用的配置。

-C ,-- config config

使用文件配置而不是(可选的) /etc/modules.conf来指定配置。 环境变量MODULECONF也可用于从默认的/etc/modules.conf(或/etc/conf.modules (不建议使用))中选择(并覆盖)其他配置文件。

当设置环境变量UNAME_MACHINE时 ,modutils将使用它的值而不是uname()系统调用中的机器字段。 这主要是在32位用户空间中编译64位模块时使用,反之亦然,请将UNAME_MACHINE设置为模块的类型。 当前modutils不支持模块的完全交叉构建模式,它仅限于在主机体系结构的32位和64位版本之间进行选择。

-d ,-- debug

显示关于模块堆栈的内部表示的信息。

-h , - 帮助

显示选项摘要并立即退出。

-k ,-- autoclean

在加载的模块上设置'autoclean'。 内核在调用modprobe时用于满足缺少的功能(作为模块提供)。 -q选项的含义-k 。 这些选项将自动发送到insmod

-l ,-- list

列出匹配模块。

-n , - 显示

不要实际执行该操作,只显示将要完成的操作。

-q , - 安静

不要抱怨insmod无法安装模块。 像平常一样继续,但默默地用modprobe的其他可能性来测试。 该选项将自动发送到insmod

-r , - 删除

取消模块(堆栈)或自动清理,具体取决于命令行上是否提到了任何模块。

-s ,-- syslog

通过syslog报告而不是stderr。 该选项将自动发送到insmod

-t moduletype ; --type 模块类型

只考虑这种类型的模块。 modprobe只会查看其目录路径完全包含“ / moduletype / ”的模块。 moduletype可以包含多个目录名,例如“ -t drivers / net ”会列出xxx / drivers / net /及其子目录中的模块。

-v ,-- verbose

打印执行的所有命令。

-V,--version

显示modprobe的版本。

注意:

模块名称不能包含路径(不是'/'),也不能包含尾部的'.o'。 例如,slip是modprobe的有效模块名称,/lib/modules/2.2.19/net/slip和slip.o是无效的。 这适用于命令行和配置中的条目。

描述

modprobedepmod实用程序旨在使Linux模块化内核对所有用户,管理员和分发维护者更易于管理。

Modprobe使用由depmod创建的类似“Makefile”的依赖文件自动从预定义目录树中可用模块集中加载相关模块。

Modprobe用于加载单个模块,一堆依赖模块或所有标有指定标签的模块。

Modprobe将自动加载模块堆栈中所需的所有基本模块,如依赖文件modules.dep所述 。 如果其中一个模块的加载失败,则当前会话中加载的当前整个模块堆将自动卸载。

Modprobe有两种加载模块的方式。 一种方式(探测模式)将尝试从列表中加载模块(由模式定义)。 一旦一个模块加载成功, Modprobe立即停止加载。 这可以用来从列表中自动载入一个以太网驱动程序。
modprobe的另一种使用方法是从列表中加载所有模块。 请参阅下面的示例

使用-r选项,modprobe将自动卸载一堆模块,类似于“ rmmod -r ”的方式。 请注意,仅使用“ modprobe -r ”将清理未使用的自动加载模块,并在配置文件/etc/modules.conf中执行pre-和post-remove命令。

组合选项-l-t列出了特定类型的所有可用模块。

选项-c将打印当前使用的配置(默认+配置文件)。

组态

modprobe (和depmod )的行为可以通过(可选)配置文件/etc/modules.conf进行修改。
有关此文件可包含的更详细说明以及depmodmodprobe使用的缺省配置,请参阅modules.conf (5)。

请注意,如果模块被kerneld“autocleaned”,则不会执行pre-和post-remove命令! 相反,寻找持久模块存储的即将到来的支持。
如果你想使用安装前和安装后的功能,你必须关闭kerneld的autoclean,并在你的crontab中使用下面这行代码(这也用于kmod系统),每隔2分钟做一次autoclean :

* / 2 * * * * test -f / proc / modules && / sbin / modprobe -r

战略

这个想法是, modprobe将首先查看包含为当前版本的内核编译的模块的目录。 如果在那里找不到该模块, modprobe将查找内核版本通用的目录(例如2.0,2.2)。 如果仍然找到该模块,则modprobe将在包含默认版本的模块的目录中查找,等等。

当你安装一个新的linux时,这些模块应该被移动到与你正在安装的内核的版本(和版本)相关的目录中。 然后你应该从这个目录到“默认”目录做一个符号链接。

每次编译新内核时,命令“ make modules_install ”将创建一个新目录,但不会更改“默认”链接。

当你得到一个与内核分发无关的模块时,你应该把它放在/ lib / modules下的一个与版本无关的目录中。

这是默认策略,可以在/etc/modules.conf中重写。

例子

modprobe -t net

加载标记为“net”的目录中存储的其中一个模块。 每个模块都尝试,直到一个成功。

modprobe -a -t启动

存储在标记为“boot”的目录中的所有模块都将被加载。

modprobe滑

这将试图加载模块slhc.o,如果它以前没有加载,因为滑动模块需要在slhc模块中的功能。 这个依赖关系将在由depmod自动创建的文件modules.dep中进行描述。

modprobe -r滑动

这将卸载滑动模块。 它也会自动卸载slhc模块,除非它也被其他模块使用(例如ppp)。

也可以看看

depmod (8), lsmod (8), kerneld (8), ksyms (8), rmmod (8)。

安全模式

如果有效的uid不等于真实的uid,那么modprobe会以极度怀疑的态度对待它的输入。 最后一个参数始终被视为模块名称,即使它以' - '开头。 只能有一个模块名称,并且“变量=值”形式的选项是禁止的。 模块名称始终被视为字符串,不在安全模式下执行元扩展。 然而元扩展仍然适用于从配置文件读取的数据。

从内核调用modprobe时,euid可能不等于uid,对于内核> = 2.4.0-test11,这是正确的。 在理想的世界中, modprobe可以信任内核只传递有效参数给modprobe。 但是至少有一个本地根攻击发生,因为高级内核代码将未验证的参数直接从用户传递到modprobe。 所以modprobe不再信任内核输入。

当环境仅由这些字符串组成时, modprobe会自动设置安全模式

HOME = / TERM = linux PATH = / sbin:/ usr / sbin:/ bin:/ usr / bin

这在内核2.2到2.4.0-test11上检测内核的modprobe执行,即使uid == euid,它在早期的内核上执行也是如此。

登录命令

如果目录/ var / log / ksymoops存在并且modprobe使用可以加载或删除模块的选项运行,则modprobe将在/ var / log / ksymoops /`date +%Y%m%d中记录其命令并返回状态.log` 。 没有开关禁用这个自动日志记录,如果你不想让它发生,不要创建/ var / log / ksymoops 。 如果该目录存在,它应该由root拥有并且是644或600模式,并且您应该每天运行脚本insmod_ksymoops_clean

要求的实用程序

depmod (8), insmod (8)。

重要提示:使用man命令( %man )查看特定计算机上的命令使用方式。