Linux 的 modprobe 命令用于从 Linux kernel 中装载和卸载模块。modprobe 可载入指定的个别模块,或是载入一组相依的模块。modprobe 会根据 depmod 所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在 modprobe 会卸载整组的模块。需要注意的是为了方便,模块名中的 -
和 _
是没有区别的。
modprobe 命令会查找 /lib/modules/'uname -r'
目录中的模块和文件 (uname -r 是内核版本),但是不会查找 /etc/modprobe.conf
和 /etc/modprobe.d/
目录下配置所排除的内容。
modprobe 命令不会修改模块内容,解析模块内容和使用模块参数是在内核中进行的,所以如果模块装载失败,内核会将失败的日志通过 dmesg 打印出来。
使用
modprobe [-acdlrtvV][--help][ 模块文件 ][ 符号名称 = 符号值 ]
-a 或 --all 载入全部的模块。
-c 或 --show-conf 显示所有模块的设置信息。
-d 或 --debug 使用排错模式。
-r 或 --remove 模块闲置不用时,即自动卸载模块。
-t 或 --type 指定模块类型。
-v 或 --verbose 执行时显示详细的信息。
-V 或 --version 显示版本信息。
-help 显示帮助。
使用 lsmod 显示当前装载的模块
lsmod
显示模块具体信息
modinfo nvidia
禁用内核模块
对内核模块来说,黑名单是指禁止某个模块装入的机制。当对应的硬件不存在或者装入某个模块会导致问题时很有用。
在 /etc/modprobe.d/ 中创建 .conf 文件,然后在文件中使用 blacklist 关键字屏蔽不需要的模块。比如
blacklist nvidia
使用 blacklist 命令会屏蔽一个模块使其不会自动装入,但是如果其他非屏蔽模块需要该模块,系统依然会装入。如果要避免这个行为,可以让 modprobe 使用 install 命令,在 /etc/modprobe.d/blacklist.conf
文件中:
install MODULE /bin/false
使其直接返回导入失败,就可以屏蔽其模块,以及所有依赖的模块。