在Linux操作系统上,modprobe命令可从Linux内核中添加和删除模块。
查看英文版
1 modprobe 运行系统环境
2 modprobe 描述
3 modprobe 语法
4 modprobe 例子
Unix&Linux
模块是一段代码,可扩展操作系统内核的功能,而无需重新启动。加载后,模块驻留在内存中,并且可以实例化多次;可以将它们视为类似于设备驱动程序。
modprobe使用depmod生成的依赖关系列表和硬件映射来将模块智能地加载或卸载到内核中。它分别使用较低级的程序insmod和rmmod进行实际的插入和删除。
虽然可以手动调用insmod和rmmod,但建议使用depmod加载和卸载模块,以确保在进行更改之前考虑任何模块间的依赖关系。
技术说明
modprobe搜索模块目录,
/ lib / modules /`uname -r`
除/etc/modprobe.d目录中的可选配置文件外,所有模块和其他文件均适用。modprobe还将使用内核命令行上指定的模块选项,格式为:
.
...以及以下形式的黑名单:
modprobe.blacklist =
现代版本的Linux modprobe(内核版本2.4.x)不会自行修改模块。解析符号和理解参数的工作在内核内部完成。因此,模块故障有时会伴随着内核消息-有关查看它们的更多信息,请参见dmesg。
modprobe需要由depmod实用程序生成的最新的modules.dep.bin文件(或备用人类可读modules.dep文件)。该文件列出了每个模块还需要哪些其他模块(如果有),并且modprobe使用它来自动添加或删除这些依赖项。
如果在modulename之后给出了任何参数,它们将被传递给内核(除了配置文件中列出的所有选项之外)。
查看英文版
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]
选件
-a,--all | 在命令行上插入所有模块名称。 |
-b,-- use-blacklist | 此选项使modprobe也将配置文件(如果有)中的黑名单命令应用于模块名称。(任何已列入黑名单的模块都不会自动加载。) |
-C,-- config |
此选项将覆盖默认配置目录(/etc/modprobe.d)。 此选项通过install或remove命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。 |
-c,-- showconfig | 从config目录中转储有效的配置并退出。 |
--dump-modversions | 打印出模块所需的模块版本信息列表。发行版通常使用此选项来使用模块版本控制部门打包Linux内核模块。 |
-d,--dirname | 可以找到模块的目录(默认为/ lib / modules /`uname -r`)。 |
--first-time | 通常,如果被告知插入一个已经存在的模块或删除一个不存在的模块,modprobe将成功(不执行任何操作)。这是简单脚本的理想选择。但是,更复杂的脚本通常想知道modprobe是否确实做了某些事情:此选项会使modprobe在实际上不做任何事情的情况下失败。 |
--force-vermagic |
每个模块都包含一个包含重要信息的小字符串,例如内核和编译器版本。如果模块无法加载,并且内核抱怨“版本魔术”不匹配,则可以使用此选项将其删除。这适用于插入的任何模块:命令行上的模块(或别名)及其依赖的任何模块。 进行此检查是为了保护您的安全,因此除非您知道自己在做什么,否则使用此选项很危险。 |
--force-modversion |
使用CONFIG_MODVERSIONS设置编译模块时,将创建一个部分,详细说明该模块使用(或提供)的每个接口的版本。如果模块无法加载,并且内核抱怨模块不同意某个接口的版本,则可以使用--force-modversion完全删除版本信息。这适用于插入的所有模块:命令行上的模块(或别名)及其依赖的任何模块。 进行此检查是为了保护您,因此除非您知道自己在做什么,否则使用此选项很危险。 |
-f,--force |
尝试从模块中剥离所有版本信息,否则可能会阻止其加载:这与同时使用--force-vermagic和--force-modversion相同。这适用于插入的任何模块:命令行上的模块(或别名)以及它所依赖的任何模块。 这些检查用于保护您,因此除非您知道自己在做什么,否则使用此选项很危险。 |
-i,-- ignore-install,-- ignore-remove | 此选项使modprobe忽略在命令行中指定的模块的配置文件(如果有)中的安装和删除命令(任何从属模块仍受配置文件中为其设置的命令的约束)。使用此选项时,无论是否仅使用--ignore-install或--ignore-remove中的一个或另一个(而不是全部)发出请求,当前都将忽略安装和删除命令。 |
-n,--dry-run,--show | 除了实际插入或删除模块(或运行安装或删除命令)以外,该选项可以执行所有操作。与-v结合使用,对于调试非常有用。由于历史原因,-- dry-run和--show实际上都表示同一件事,并且可以互换。 |
-q,--quiet | 使用此标志,如果尝试删除或插入找不到的模块(并且不是别名或install / remove命令),则modprobe不会显示错误消息。但是,它仍将以非零退出状态返回。内核使用它来机会性地探查使用request_module可能存在的模块。 |
-R,-- resolve-alias | 打印所有与别名匹配的模块名称。这对于调试模块别名问题很有用。 |
-r--remove |
此选项导致modprobe删除而不是插入模块。如果它依赖的模块也没有使用,modprobe也会尝试删除它们。与插入不同,可以在命令行上指定多个模块(删除模块时指定模块参数没有意义)。 通常没有理由删除模块,但是某些故障模块需要这样做。您的发行内核可能根本不支持删除模块。 |
-S,-- set-version | 设置内核版本,而不是使用uname来确定内核版本(这决定了在哪里找到模块)。 |
--show-depends | 列出模块(或别名)的依赖关系,包括模块本身。这将产生一组(可能为空)模块文件名,每行一个,每个文件名以“ insmod”开头,通常由发行版使用以确定在生成initrd / initramfs映像时要包括的模块。适用的安装命令以“ install”为前缀显示。它不运行任何安装命令。请注意,modinfo可用于从模块本身提取模块的依赖项,但不了解别名或安装命令。 |
-s,-- syslog |
此选项使所有错误消息都通过syslog机制(如级别为LOG_NOTICE的LOG_DAEMON)而不是标准错误。当stderr不可用时,也会自动启用它。此选项通过安装或删除命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。 |
-V,-- version | 显示modprobe的版本信息并退出。 |
-v,-- verbose |
详细模式;打印有关程序正在执行的消息。通常,modprobe仅在出现问题时才打印消息。 此选项通过install或remove命令传递给MODPROBE_OPTIONS环境变量中的其他modprobe命令。 |
查看英文版
以下一系列命令说明了使用modprobe的常用方法。每个命令都以sudo为前缀,因为它们需要root权限:
sudo ln -s /path/to/your-kernel-module.ko /lib/modules/`uname -r`
sudo depmod -a
sudo modprobe your-kernel-module
这些命令执行以下操作:
查看英文版
mail | mailcompat | merge | mesg | mii-tool | mkdir | mv | mkfs | mkswap | modinfo | more | mt | mach |
未知的网友