我正在编写一个树外内核模块,简单地说我们可以认为它是A,并且我使用 KERNEL_MODULE_AUTOLOAD 在设备启动期间自动插入内核模块。 KERNEL_MODULE_AUTOLOAD 将自动插入内核模块,无顺序。但 A 应该按顺序安装在 B 内核模块之后。 所以请求帮助,是否有什么方法可以修改自动加载内核模块命令?
我认为实际上有两种方法,一种是添加模块依赖,但不知道如何添加?
另一种是在systemd-modules-load.service之后通过自己的systemd服务自动加载,而不是KERNEL_MODULE_AUTOLOAD。还没试过。
不知道yocto是否已经有修改自动加载内核模块顺序的机制?
模块加载顺序是一个有趣的问题!这里有一些让模块 A 在模块 B 之前加载的想法:
/etc/modules-load.d
中的项目可能是按外观顺序加载的。您可以使用 module-b.bb
中的任务依赖项来强制执行此列表的顺序:do_package[depends] += "module-a:do_package"
depmod
可以自动建立该依赖关系。否则,请尝试调用:request_module("module_a");
KERNEL_MODULE_AUTOLOAD
。您可以使用 Before=systemd-modules-load.service
编写另一个 .service 文件。您可以使用引导参数 modules_load=
,它可能会首先加载。