modprobe工具可以智能的添加和删除一个模块,之所以说它智能,是因为它能够通过配置的一些预定义的规则解析出模块之间的依赖关系,并且自动加载依赖的模块。
modprobe会从 /lib/modules/uname -r
目录中查找要加载的模块以及对应的依赖规则,除了这个目录以外,modprobe还有一个配置目录/etc/modprobe.d,这个配置目录中是用户可以自定义的一些modprobe行为。
(1)依赖关系配置
modprobe是从/lib/modules/uname -r
/modules.dep文件来查找依赖关系的,默认modprobe也是在/lib/modules/uname -r
/目录中查找模块进行加载的。
以我的机器为例,截取部分的依赖文件/lib/modules/3.13.0-19-generic/modules.dep:
kernel/drivers/gpio/gpio-adp5520.ko:
kernel/drivers/gpio/gpio-kempld.ko: kernel/drivers/mfd/kempld-core.ko
kernel/drivers/gpio/gpio-max730x.ko:
kernel/drivers/gpio/gpio-max7300.ko: kernel/drivers/gpio/gpio-max730x.ko
kernel/drivers/gpio/gpio-max7301.ko: kernel/drivers/gpio/gpio-max730x.ko
(2)modprobe.d配置
/etc/modprbe.d中定义的关键功能如下:
function | desc |
---|---|
alias wildcard modulename | 用来配置模块的别名 |
blacklist modulename | 忽略该模块的内部别名 |
install modulename command… | 使用modprobe加载模块时的替换命令,此时并不执行默认的加载操作,而是执行command |
remove modulename command… | 同install功能,只不过是在使用modprobe -r操作时会执行的command |
options modulename option… | 为模块添加option功能,也就相当于module参数 |
参考:
Manual page modprobe
Manual page modprobe.d