内置驱动程序是否始终优先于可加载模块?

ata*_*xis 5 linux-device-driver linux-kernel

根据这个注释

当多个内置模块(尤其是驱动程序)提供相同的功能时,它们将按 Makefile 中列出的顺序指定的链接顺序确定优先级。

此外:

但是,该文件中的顺序是不确定的(取决于文件系统列出已安装模块的顺序)。这会导致混乱。

解决方案分为两部分。此补丁更新了 kbuild,使其生成并安装 module.order,其中包含根据 Makefile 排序的模块名称。

如果系统有多个驱动程序提供相同的功能,其中一些是内置的,另一些是可加载模块,会发生什么?

在这种情况下,哪一个优先?总是内置的吗?我怎样才能改变优先级(如果可能的话)?

我考虑过在modules.alias或modules.order中对它们重新排序,但我想这行不通,因为内置函数没有在那里列出 - 对吧?

ata*_*xis 3

我同时找到了答案。

长话短说:是的,内置驱动程序通常优先于可加载驱动程序。只因为它们是先注册的,并且在绑定时遵循“先到先得”的原则。