如何在Linux系统中插入USB鼠标时自动插入我的驱动程序?

时间:2014-08-11 09:40:27

标签: linux linux-kernel usb linux-device-driver

我知道在Linux系统中插入任何USB设备时,会加载特定的设备驱动程序。现在我想在插入USB鼠标时插入我的驱动程序。

我知道我可以使用两种方法完成此任务:使用depmod或使用udev概念。我在网上看过一些关于它的事情,但我没有得到确切的答案。任何人都可以建议哪种方法最适合在Linux内核树中进行更改?

3 个答案:

答案 0 :(得分:2)

感谢大家的帮助。

我遵循udev方法自动加载USB插件

以下是在插入热插拔设备上自动加载驱动程序的过程(我使用USB鼠标进行实验,以下程序正常工作)

  1. 运行以下命令

    cmd> udevadm info -a -p $(udevadm info -q path -n / dev / input / mouse)

    取代??在上面的命令中,用户需要根据其在/ dev中的条目添加设备ID(例如,根据设备标识,对于USB闪存驱动器:sdb1或sda1等)

  2. 从上述命令的输出中获取以下参数的值 KERNEL,ATTRS {idVendor},ATTRS {idProduct},ATTRS {serial}

  3. 转到/etc/dev/rule.d目录并添加规则

    cmd> sudo vim 40-usbmouse.rules  行动=="添加",SUBSYSTEM =="阻止",KERNEL ==" sd?1",ATTRS {idVendor} ==" 058f&# 34;,ATTRS {idProduct} ==" 6387",ATTRS {serial} ==" 4EPLXAXE",SYMLINK + =" usbpd",RUN + =" /usr/local/bin/InsertModule.sh"

    保存此文件。 以上规则是为USB鼠标定义的。 参数SYMLINK在/ dev目录中创建设备的链接,在RUN +中,您可以提供将在设备插入时执行的脚本位置。

    有关如何撰写规则的详细信息,请参阅以下链接

    <强> http://hackaday.com/2009/09/18/how-to-write-udev-rules/

  4. 现在,在定义规则后,用户需要重新启动udev,以便内核通知您的规则。 cmd&gt; sudo stop udev

    cmd&gt; sudo start udev

  5. 插入USB并验证您在规则中定义的脚本是否显示其效果。 对于鼠标用户可以使用以下命令

    cmd&gt; udevadm info -a -p $(udevadm info -q path -n / dev / input / mouse)

  6. P.S。:cmd代表命令shell(终端)。上述过程适用于任何USB设备。

答案 1 :(得分:1)

您可以在驱动程序中使用MODULE_SOFTDEP中定义的module.h宏,您可以在其中指定插入USB鼠标时加载的USB驱动程序的名称。这将自动加载您的驱动程序。 depmod方法是可行的方法。

答案 2 :(得分:1)

使用MODULE_DEVICE_TABLE宏。这将导出支持的设备表,以便您的hotplug工具(无论是udev还是其他)可以加载您的模块。我在此answer中描述了加载过程。

要查看示例用法,请参阅drivers/hid/usbhid/usbmouse.c。如果此驱动程序编译为模块,则每次连接任何USB鼠标时都会加载它。