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

Linux kernel 当同一硬件存在多个驱动程序时,如何选择要在引导时加载的驱动程序的一个版本?,linux-kernel,linux-device-driver,embedded-linux,kernel-module,Linux Kernel,Linux Device Driver,Embedded Linux,Kernel Module,我正在使用嵌入式linux 有两个USB小工具驱动程序构建为 我做了depmod,然后在modprobe-l中,两个驱动程序都显示在列表中 kernel/drivers/usb/gadget/g_ether.ko kernel/drivers/usb/gadget/g_file_storage.ko 问题是,内核在启动时不会从结构上加载它们中的任何一个。 目前,我的解决方案是将引导脚本添加到/etc/init.detc/rcX.d,以强制将g_ether.ko作为默认驱动程序加载到引导中 有没

我正在使用嵌入式linux

有两个USB小工具驱动程序构建为

我做了
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驱动程序


有什么建议吗?

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

但有一种方法可以通过sysfs在用户空间绑定/解除绑定驱动程序。看看这个: