Linux kernel 当同一硬件存在多个驱动程序时,如何选择要在引导时加载的驱动程序的一个版本?
我正在使用嵌入式linux 有两个USB小工具驱动程序构建为 我做了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作为默认驱动程序加载到引导中 有没
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在用户空间绑定/解除绑定驱动程序。看看这个: