问题
我有冲突的驱动程序:xpad
这是 Arch 的标准配置,并且xone
我安装的尿素尿率。两者都声称支持我的 Xbox One 无线控制器,尽管只有xone
驱动程序知道如何使用它。
$ modprobe -R usb:v045Ep02F9d0114dcFFdscFFdpFFicFFisc5Dip01in00
xpad
xone_dongle
AFAIU,罪魁祸首是驱动程序alias: usb:v045Ep*d*dc*dsc*dp*icFFisc5Dip01in*
中的xpad
包容性太强。
我只想要xone_dongle
上面的模式的加载。但我不想xpad
完全禁用驱动程序,因为我还使用有线 Xbox 360 控制器usb:v045Ep028Ed0114dcFFdscFFdpFFicFFisc5Dip01in00
,我仍然希望由 来处理它xpad
。我不需要它们同时工作,但至少如果我在干净启动后插入其中一个,则任何一个都可以工作。
尝试的解决方案
手册页的modprobe.d
状态:
关键字
blacklist
表示该特定模块的所有内部别名都将被忽略。
听起来如果我将其列入黑名单xpad
然后为其定义自己的别名,它应该按照我想要的方式工作:
/etc/modprobe.d/gamepad.conf
blacklist xpad
alias usb:v045Ep028Ed0114dcFFdscFFdpFFicFFisc5Dip01in00 xpad
但相反,它完全阻止xpad
驱动程序加载,即使别名是正确的。
另外,即使我已xpad
在配置中列入黑名单,modprobe -R
仍然可以找到无线适配器的模式。
无结论
有人可以解释一下这实际上是如何运作的吗?有错误吗modprobe
?modprobe.d
文档不完整吗?哪些方面modprobe
应该受到modprobe.d
配置的影响,哪些方面不应该受到影响?
答案1
如何modprobe
工作?modprobe
使用其加载和卸载 Linux 模块依赖关系自动从任何路径。接下来是-v
选项(详细程度),您可以看到它modprobe
到底做了什么。
在您的情况下,您必须卸载 Linux 模块,modprobe -rv module
然后必须使用该insmod
命令加载所需的模块而不需要其依赖项。
与 不同modprobe
,insmod
不会检查和加载任何依赖项(如果存在)。
要加载 Linux 模块,您必须设置内核模块的路径:
sudo insmod /path/to/kernel_module.ko