找不到模块别名 ftdi_sio

Module alias ftdi_sio not found

我想在docker容器中安装硬件环境。其中一个安装脚本使用 modinfo 实用程序检测 ftdi_sio 模块,但找不到这个特定部分。还有其他错误:

No FTDI driver present

我在这个容器中使用 docker 中心的 centos7 映像。这个 OS 有什么办法没有所有必要的驱动程序吗?如果有,如何在此映像中安装必要的组件?

感谢任何帮助

您无法从 Docker 容器安装 Linux 内核驱动程序,通常 Docker 的主要设计目标之一是向您隐藏底层硬件的详细信息。

如果您尝试使用 modinfo 之类的工具来检查您实际 运行 正在使用的系统并查看是否有某些特定的内核驱动程序或硬件可用,您需要运行 这些直接在主机上,而不是在 Docker 中。如果您正在尝试开发硬件驱动程序或接口,在虚拟机(具有自己的内核)中模拟它可能比尝试在 Docker.

中使用它更好。

(原则上您可以禁用足够多的 Docker 保护来执行此操作,但它会使您的容器设置非常紧密地绑定到您的主机设置并基本上消除所有隔离;你正在只有 Docker 的复杂性。)

One of the installation scripts uses modinfo utility to detect ftdi_sio module, but it can't find this particular part.

实际上,您可以做到这一点,因为 modinfo 不需要模块 运行。

modinfo找不到的原因是podman/docker正在使用主机的内核。 modinfo 使用 uname 系统调用获取当前 运行 内核的名称,然后将其用作查找模块的路径的一部分。由于内核是主机内核,路径可能只是偶然是正确的。

要使其正常工作,您必须明确地将内核名称传递给 modinfo 调用 -k。它在我的 podman 容器中的工作原理示例:

$ uname -a
Linux 43d87d63879d 5.9.8-arch1-1 #1 SMP PREEMPT Tue, 10 Nov 2020 22:44:11 +0000 x86_64 x86_64 x86_64 GNU/Linux
$ modinfo zfs
modinfo: ERROR: Module alias zfs not found.
$ modinfo -k 4.15.0-123-generic zfs
filename:       /lib/modules/4.15.0-123-generic/updates/dkms/zfs.ko
version:        0.7.5-1ubuntu16.10
license:        CDDL
author:         OpenZFS on Linux
description:    ZFS
srcversion:     EAC384B1885CDDD467439E9
[…]