【问题标题】:YOCTO : No '/lib/modules' directory in image, modprobe failsYOCTO:图像中没有“/lib/modules”目录,modprobe 失败
【发布时间】:2019-08-27 15:58:31
【问题描述】:

我正在尝试使用 modprobe 加载和卸载模块,但我遇到了问题。该命令因“modprobe:

而失败

无法将目录更改为“/lib/modules”:没有这样的文件或目录”

图像上实际上根本没有 /lib/modules 目录。

PS : 我使用 yocto 项目 构建 Linux 操作系统映像,我使用的是 3.14 内核

任何帮助将不胜感激!

【问题讨论】:

    标签: module embedded-linux yocto


    【解决方案1】:

    可能您只是没有安装任何模块。添加

    IMAGE_INSTALL += "内核模块"

    到您的图像配方。

    更新: 如果这没有将模块添加到图像中,您接下来要检查的步骤是:

    1. 检查是否实际构建了任何模块。并非所有内核配置实际上都这样做。一个简单的方法是查看包含您生成的包的 tmp/deploy/... 目录。
    2. 检查设置是否真正传播到 iamge。 bitbake -e 你的图片会告诉你,grep for IMAGE_INSTALL。

    更新 2:

    对于 1) 所有构建的内核模块都自动打包在以“kernel-module-”开头的包中。因此,如果没有带有该前缀和您期望的模块名称的包,那么它不是安装问题,而是您的内核或内核配置根本没有构建模块的问题。

    对于 2)“我无法全部阅读”:这就是为什么我明确地说“grep for IMAGE_INSTALL” - 你不应该全部阅读,只需查看该变量是否实际上包含“内核模块”。

    【讨论】:

    • 我将此添加到 local.conf 文件中并重建图像,但出现同样的问题!
    • 这对我没有帮助。在 tmp/deploy 下我可以找到生成的图像以及安装了哪些包而不是模块。除了 bitbake -e 的结果很长,我无法全部阅读
    【解决方案2】:

    好吧,我找到了解决方案: 其实

    IMAGE_INSTALL += "内核模块"

    不在 /lib 下添加模块文件夹。它不适用于 YOCTO PROJECT SUMO 版本。我添加了这个

    CORE_IMAGE_EXTRA_INSTALL += "内核模块"

    到我的 local.conf,现在 /lib/modules 被找到并且内核模块被打包

    【讨论】:

    • 不,还有一次你没能正确阅读。我特别写道:“添加到您的图像配方中”,它会立即起作用。只有通过 local.conf 才需要 CORE_IMAGE_EXTRA_INSTALL,它不是适用于所有图像的通用方式。因此,虽然我认为应该保留此答案以供参考,但它提出了一种可重复构建图像的错误方法,因为它依赖于 local.conf。
    • @LetoThe2nd 那是我的错。谢谢您的支持。我将再次尝试将 IMAGE_INSTALL += "kernel-modules" 添加到图像配方
    猜你喜欢
    • 2016-12-25
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2020-12-02
    • 2022-10-13
    • 2013-04-05
    • 1970-01-01
    相关资源
    最近更新 更多