从Linux内核中添加或者移除模块
命令语法格式
modprobe [-v] [-V] [-C config-file] [-n] [-i] [-q] [-b] [modulename] [module parameters…]
modprobe [-r] [-v] [-n] [-i] [modulename…]
modprobe [-c]
modprobe [–dump-modversions] [filename]
命令描述
命令modprobe智能地从Linux内核添加或删除模块:请注意,为方便起见,模块名称中的“_”和“-”之间没有区别(执行自动下划线转换)。 modprobe在模块目录/lib/modules/`uname -r`中查找所有模块和其他文件,除了/etc/modprobe.d目录中的可选配置文件(参见modprobe.d(5))。 modprobe还将以<module>.<option>的形式使用内核命令行中指定的模块选项,并以modprobe.blacklist=<module>的形式使用黑名单。
请注意,与2.4系列Linux内核(此工具不支持)不同,此版本的modprobe对模块本身没有任何作用:解析符号和理解参数的工作在内核中完成。因此,模块故障有时伴随着内核消息请参阅dmesg(8)。
命令modprobe需要一个最新的modules.dep.bin文件,该文件由与modprobe一起提供的相应depmod程序生成(请参阅depmod(8))。此文件列出了每个模块需要的其他模块(如果有),modprobe使用它来自动添加或删除这些依赖项。
如果在modulename之后给出任何参数,它们将被传递给内核(除了配置文件中列出的任何选项)。
命令支持的选项及含义
-a, –all
在命令行中插入所有模块名称。
-b, –use-blacklist
此选项使modprobe将配置文件(如果有)中的黑名单命令也应用于模块名称。 它通常由udev(7)使用。
-C, –config
此选项会覆盖默认配置目录(/etc/modprobe.d)。
此选项通过安装或删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。
-c, –showconfig
从config目录中转储有效配置并退出。
–dump-modversions
打印出模块所需的模块版本控制信息列表。发行版通常使用此选项,以便使用模块版本控制deps打包Linux内核模块。
-d, –dirname
模块的根目录,默认情况下“/”。
–first-time
通常,如果告知插入已存在的模块或删除不存在的模块,modprobe将返回成功(并且不执行任何操作)。 这是简单脚本的理想选择;然而,更复杂的脚本通常想知道modprobe是否真的做了一些事情:这个选项使modprobe失败,因为它实际上没有做任何事情。
–force-vermagic
每个模块都包含一个包含重要信息的小字符串,例如内核和编译器版本。 如果模块无法加载并且内核抱怨“version magic”不匹配,则可以使用此选项将其删除。 当然,这项检查是为了保护你,所以这个使用选项是危险的,除非您知道自己在做什么。
这适用于插入的任何模块:命令行上的模块(或别名)以及它所依赖的任何模块。
–force-modversion
在使用CONFIG_MODVERSIONS设置编译模块时,将创建一个部分,该部分详细说明模块使用(或由模块提供)的每个接口的版本。 如果模块无法加载并且内核抱怨模块不同意某个接口的版本,则可以使用“–force-modversion”来完全删除版本信息。 当然,这项检查是为了保护您的,所以使用此选项是危险的,除非您知道自己在做什么。
这适用于插入的任何模块:命令行上的模块(或别名)以及它所依赖的任何模块。
-f, –force
尝试从模块中删除任何可能阻止加载的版本信息:这与使用–force-vermagic和–force-modversion相同。 当然,这些检查是为了您的保护,所以使用此选项是危险的,除非您知道自己在做什么。
这适用于插入的任何模块:命令行上的模块(或别名)以及它所依赖的任何模块。
-i, –ignore-install, –ignore-remove
此选项使modprobe忽略命令行中指定的模块的配置文件(如果有)中的安装和删除命令(任何相关模块仍然受配置文件中为它们设置的命令的限制)。 当使用此选项时,无论是否仅使用–ignore-install或–ignore-remove中的一个或其他(而不是两个)更具体地进行请求,当前都将忽略安装和删除命令。 见modprobe.d(5)。
-n, –dry-run, –show
除了实际插入或删除模块(或运行安装或删除命令)之外,此选项可以执行所有操作。 结合-v,它可用于调试问题。 由于历史原因,–dry-run和–show实际上意味着相同的东西,并且可以互换。
-q, –quiet
使用此标志,如果您尝试删除或插入无法找到的模块(并且不是别名或安装/删除命令),modprobe将不会打印错误消息。 但是,它仍将以非零退出状态返回。 内核使用它来机会性地探测使用request_module可能存在的模块。
-R, –resolve-alias
打印与别名匹配的所有模块名称。 这对于调试模块别名问题很有用。
-r, –remove
此选项导致modprobe删除模块,而不是插入。 如果它所依赖的模块也未使用,modprobe也会尝试删除它们。 与插入不同,可以在命令行上指定多个模块(在删除模块时指定模块参数没有意义)。
通常没有理由删除模块,但有些错误的模块需要它。 您的发行版内核可能尚未构建为完全支持删除模块。
-S, –set-version
设置内核版本,而不是使用uname(2)来决定内核版本(它决定了在哪里找到模块)。
–show-depends
列出模块(或别名)的依赖关系,包括模块本身。 这会生成一个(可能为空)模块文件名集,每行一个,每个以“insmod”开头,通常由发行版使用,以确定生成initrd/initramfs映像时要包含哪些模块。 应用的安装命令以“install”为前缀。 它不运行任何安装命令。 请注意,modinfo(8)可用于从模块本身提取模块的依赖关系,但不知道别名或安装命令。
-s, –syslog
此选项会导致任何错误消息写入syslog机制(如LOG_DAEMON,级别为LOG_NOTICE),而不是标准错误。 当标准错误不可用时,也会自动启用此功能。
此选项通过安装或删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。
-v, –verbose
打印有关程序正在执行的操作的消息。 通常modprobe只在出现问题时才打印消息。
此选项通过安装或删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。
-V, –version
显示版本信息并退出。
相关环境变量
MODPROBE_OPTIONS
用于向modprobe命令传递参数
相关手册
modprobe.d(5), insmod(8), rmmod(8), lsmod(8), modinfo(8)
参考文献
- man 8 modprobe, Version 23-2
更新日志
- 06/28/2017 创建文章
- 10/03/2018 修改文章内容