当存在多个相同硬件的驱动程序时,如何选择要在引导时加载的一个版本的驱动程序?

时间:2015-04-17 13:12:10

标签: linux-kernel linux-device-driver embedded-linux kernel-module

我正在使用嵌入式Linux。

有两个USB小工具驱动程序构建为LKMg_ether.ko and g_file_storage.ko

我做了depmod,然后在modprobe -l中,两个驱动程序都显示在列表中。

kernel/drivers/usb/gadget/g_ether.ko
kernel/drivers/usb/gadget/g_file_storage.ko

问题是,内核在解剖学上没有加载其中任何一个。

当然,我的解决方案是将启动脚本添加到/etc/init.d etc/rcX.d,以强制g_ether.ko作为默认驱动程序在启动时加载。

还有其他(更好)的方法来制作g_ether.ko默认驱动程序吗?

一个可能的解决方案是,我使g_ether.ko成为静态驱动程序,并使g_file_storage.ko成为LKM,但我不知道如何关闭静态驱动程序以释放硬件以便另一个LKM可以加载驱动程序。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

用户可以选择将USB外围设备控制器用作以太网或存储设备。因此,没有用于自动客户端驱动程序加载的相关硬件事件。

但是有一种方法可以通过sysfs在用户空间中绑定/取消绑定驱动程序。看看这个:https://lwn.net/Articles/143397/