modprobe

增加或删除内核模块


语法格式

modprobe [-afinqsSv] [-C conf] [-d dir] [-o module] [gnu-opts] [modules [args]]
modprobe -r [-insvw] [modules]
modprobe -l [modules]
modprobe -c
modprobe [-V|--version]

命令简介

modprobe命令主要用于增加或删除Linux内核模块。除了/etc/modprobe.conf配置文件和/etc/modprobe.d目录,modprobe还会检索/lib/modules/`uname -r`模块目录中的所有模块和文件。modprobe也支持内核命令行中“<module>.<option>”形式的模块选项。

在上述语法格式中,modules是模块的名字,按照惯例,模块名字中的下画线“_”与连字符“-”没有差别。args是选用的模块参数,如果指定了任何参数,则直接传递到系统内核。

modprobe期待使用由depmod命令生成的最新modules.dep文件,文件中列出了每个模块依赖的其他模块(如果存在)。modprobe将会根据这些信息自动增加或删除其依赖的模块。

命令选项

-a, --all  插入命令行中指定的所有模块。

-c, --showconfig  根据配置文件列出有效的系统模块配置。

-C conf, --config=conf  使用指定的配置文件conf而非默认的配置文件/etc/modprobe.conf或/etc/modprobe.d目录中的配置文件。

-d dir, --dirname=dir  指定模块所在的目录。默认的目录为/lib/modules/release。其中release是内核模块的版本。

-f, --force  尝试删除模块中的任何版本信息,以免其导致模块加载中断,其效果相当于同时指定了“--force-vermagic”与“--force-modversion”选项。这个选项适用于插入的任何模块,包括命令行指定的模块及其依赖的支持模块。当然,这些检测是一种保护措施,因此使用这个选项存在一定的风险。

-i, --ignore-install, --ignore-remove  对于命令行中指定的模块(包括其依赖的底层支持模块),忽略/etc/modprobe.conf等配置文件中的安装和删除命令(如果存在)。

-l, --list  列出匹配指定通配符参数的所有模块。如果未指定通配符参数,则假定通配符参数为星号“*”。

-n, --dry-run  除了实际插入或删除模块之外,执行其他任何处理动作。与“-v”选项组合使用,可用于诊断与调试问题。

-o mod, --name=mod  使用指定的模块名,尝试重新命名插入内核的模块名字。

-q, --quiet  当删除或插入的模块不存在时,modprobe通常会输出相关的错误信息。指定这个选项时,modprobe会忽略之。

-r, --remove  删除而非插入模块。如果依赖于指定模块的模块也是空置无用的,modprobe将会尝试一同删除。与插入模块不同,删除模块时可以在命令行上同时指定多个模块(删除模块时,指定模块的参数是没有意义的)。

-s, --syslog  把任何错误信息交由系统日志机制处理,而不是写到标准错误输出(控制台)。当无法写到标准错误输出时,自动启用系统日志机制。

-S, --set-version  设置内核版本,而不是使用uname(2)系统调用确定内核的版本。

-v, --verbose  显示命令的处理过程与动作。通常,仅当出现故障时,modprobe命令才会输出错误信息。

-w, --wait  这个选项只能与“-r”选项一起使用。用于封锁系统内核,等待指定模块的参考计数达到0。

--first-time  通常,如果准备插入的模块已经存在,或准备删除的模块已不存在,modprobe将会成功地返回,不做任何处理。指定这个选项之后,如果遇到上述情况,modprobe将会返回错误信息。

--force-modversion  在编译模块时,若已设置了CONFIG_MODVERSIONS变量,生成的模块将会包含其使用的每个接口的版本信息。如果模块无法加载,且系统内核输出模块的部分接口版本不一致的错误信息时,可以使用“--force-modversion”选项删除模块中的版本信息。这个选项适用于插入的任何模块,包括命令行指定的模块及其依赖的支持模块。当然,这种检测是一种保护措施,因此使用这个选项存在一定的风险。

--force-vermagic  每个模块都有一个小的字符串,其中包含重要的信息,如系统内核与编译器版本等。如果模块无法加载,系统内核输出“version magic”版本不匹配的错误信息时,可以使用这个选项删除模块中的版本信息。这个选项适用于插入的任何模块,包括命令行指定的模块及其依赖的支持模块。当然,这种检测是一种保护措施,因此,使用这个选项存在一定的风险。

应用实例

1. 列出当前系统内核中加载的所有模块。

$ modprobe –l

2. 根据配置文件列出有效的系统模块配置。

$ modprobe –c

索引:A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z