首页 文章

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

提问于
浏览
4

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

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

3 回答

  • 1

    感谢你的帮助 .

    我遵循udev方法在USB插入时自动加载模块

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

    • 运行以下命令

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

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

    • 从上面的命令 KERNEL, ATTRS, ATTRS, ATTRS 的输出中获取以下参数的值

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

    cmd > sudo vim 40-usbmouse.rules ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd?1", ATTRS=="058f", ATTRS=="6387", ATTRS =="4EPLXAXE", SYMLINK+="usbpd", RUN+="/usr/local/bin/InsertModule.sh"

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

    有关如何编写规则的更多信息,请参阅以下链接

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

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

    cmd > sudo start udev

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

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

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

  • 1

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

  • 2

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

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

相关问题