Yocto:修改自动加载内核模块命令

问题描述 投票:0回答:1

我正在编写一个树外内核模块,简单地说我们可以认为它是A,并且我使用 KERNEL_MODULE_AUTOLOAD 在设备启动期间自动插入内核模块。 KERNEL_MODULE_AUTOLOAD 将自动插入内核模块,无顺序。但 A 应该按顺序安装在 B 内核模块之后。 所以请求帮助,是否有什么方法可以修改自动加载内核模块命令?

我认为实际上有两种方法,一种是添加模块依赖,但不知道如何添加?

另一种是在systemd-modules-load.service之后通过自己的systemd服务自动加载,而不是KERNEL_MODULE_AUTOLOAD。还没试过。

不知道yocto是否已经有修改自动加载内核模块顺序的机制?

yocto
1个回答
0
投票

模块加载顺序是一个有趣的问题!这里有一些让模块 A 在模块 B 之前加载的想法:

  1. /etc/modules-load.d
    中的项目可能是按外观顺序加载的。您可以使用
    module-b.bb
    中的任务依赖项来强制执行此列表的顺序:
do_package[depends] += "module-a:do_package"
  1. 如果模块 B 在语义上依赖于模块 A,则显式依赖会更好。如果您在模块 B 中使用模块 A 符号,
    depmod
    可以自动建立该依赖关系。否则,请尝试调用:
request_module("module_a");
  1. 剩下的选项是使用自定义模块加载,而不是模块 B 的
    KERNEL_MODULE_AUTOLOAD
    。您可以使用
    Before=systemd-modules-load.service
    编写另一个 .service 文件。您可以使用引导参数
    modules_load=
    ,它可能会首先加载。
© www.soinside.com 2019 - 2024. All rights reserved.