如何在linux中临时交换驱动程序?

时间:2017-09-06 20:13:50

标签: linux linux-kernel kernel drivers

我已经制作了一个新的树外Linux内核模块,当我的用户空间热插拔工具usb检测到udev键盘时,该模块应该被加载。

问题是虽然我的模块已成功加载(手动使用insmod)并且我的驱动程序已准备好响应事件,但默认的usbhid驱动程序已经加载,当然,很好,因为它允许我使用系统,因为我的驱动程序仍在开发中。因此,当我rmmod usbhid时,我认为我的系统切换到我的实验驱动程序(很难说,因为未检测到usb人机界面)。

因此,即使usbhid正在运行,是否可以临时切换驱动程序或(甚至更好)测试实验驱动程序?

1 个答案:

答案 0 :(得分:0)

解决方法可能是通过SSH或使用USB passtrough的虚拟机执行这些命令。

当我想快速尝试一些模块时,我会写一个像:

这样的shell

rmmod usbhid; insmod my_module; sleep 15; rmmod my_module; modprobe usb_hid

在这种情况下输入问题的另一个快速解决方法是使用另一种输入方法而不是USB HID设备:PS / 2,或虚拟,如kdeconnect或synergy的远程键盘。

如果您正在进行一些严格的内核开发,我认为虚拟机是更好的设置,因为如果出现任何问题,它将避免崩溃。

除了这些变通方法之外,您可能会对this answer感兴趣以获得更永久的设置。