Linux:基于另一个模块加载模块

时间:2015-04-14 17:18:20

标签: linux linux-kernel kernel-module

是否可以动态加载(通过MOD_ALIAS()?)一个需要首先加载另一个模块的模块?

背景:我的系统上有一个USB-> I2C桥接器,并且连接到i2c端的是一个触摸屏。无论何时连接/断开USB电缆,启动i2c的内核模块都会自动加载/卸载。我正在寻找一种方法来加载/卸载相同事件的触摸屏驱动程序。

2 个答案:

答案 0 :(得分:1)

您正在谈论由depmod -A生成的模块依赖关系。实际的依赖关系信息存储在/lib/modules/version/modules.dep中。

如果/lib/modules/2.6.29/kernel/a.ko依赖于b.ko(在同一目录中),您可以添加以下行:

/lib/modules/2.6.29/kernel/a.ko: /lib/modules/2.6.29/kernel/b.ko

创建依赖项。

答案 1 :(得分:1)

  

你想要的是 modprobe.d

添加<module>.conf文件,其中<module>是动态加载的内核模块的名称。

在上述配置文件中定义installremove选项,以运行相关命令而不是modprobe(按所需顺序)。

如果您想在加载模块 alice 后自动加载模块 bob

# /etc/modprobe.d/alice.conf
install alice /sbin/modprobe --ignore-install alice;  /sbin/modprobe bob;"

--ignore-install阻止modprobe再次运行相同的安装命令。

同样在同一个conf文件中定义remove部分 有关详情,请查看 man page of modprobe.d