YOCTO:图像中没有“/lib/modules”目录,modprobe 失败

YOCTO : No '/lib/modules' directory in image, modprobe fails

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

can't change directory to '/lib/modules': no such file or directory"

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

PS :我使用 yocto 项目 构建 Linux os 图像,我使用的是 3.14内核

如有任何帮助,我们将不胜感激!

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

IMAGE_INSTALL += "kernel-modules"

到你的图像配方。

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

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

更新 2:

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

对于 2) "I can't read it all":这就是为什么我明确地说 "grep for IMAGE_INSTALL" - 你不应该全部阅读,只要看看那个变量是否真的包含 "kernel-modules".

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

IMAGE_INSTALL += "kernel-modules"

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

CORE_IMAGE_EXTRA_INSTALL += " kernel-modules"

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