DPDK 编译在 WSL2 Docker 桌面容器内失败
DPDK Compilation fails inside WSL2 Docker Desktop's containers
我无法在 docker 容器内编译 DPDK,运行 在 WSL2 下作为 VM(以及 windows 10 作为主机)。
背景
尝试在 wsl-container 中本地编译 DPDK,一些 DPDK 库曾经构建在远程本机 linux 机器上。
Docker文件运行编译安装了kernel headers
、GNU toolchain
等各种依赖。分布是 CentOS7
.
容器由 Docker Desktop
管理
版本在这里是无用的信息。
问题
跨 DPDK 版本的类似问题。
在 DPDK 20.11 中,使用 meason
构建系统,文件 kernel/linux/meason.build
:
../kernel/linux/meson.build:23:1: ERROR: Problem encountered: Cannot compile kernel modules as requested - are kernel headers installed?
如果我编译 DPDK 的不同 DPDK 版本或使用其他构建系统 (makefile) 构建,我会得到相同错误的变体。
内部 /lib/modules
没有带有 WSL2“uname -r”输出的条目。
虽然WSL2有/lib/modules/5.4.72-microsoft-standard-WSL2
(作为一个软link),这个软link并没有出现在容器中
解决方案是将此行添加到 Dockerfile
*:
RUN ln -s /lib/modules/$(ls /lib/modules/) /lib/modules/$(uname -r)
*(假设在 /lib/modules
上只找到一个条目,并且该条目存在 /usr/src/kernels
。)
另一个解决方案(我没有测试)是 运行 容器:
docker run --name test -v /usr/src/kernels:/usr/src/kernels and -v /lib/modules/:lib/modules -dt image-name
假设您的主机已经安装了内核头文件并且可以找到它们(即找到 /usr/src/kernels/XXX/
并且 /lib/modules/XXX/build
softlink 没有损坏)
我无法在 docker 容器内编译 DPDK,运行 在 WSL2 下作为 VM(以及 windows 10 作为主机)。
背景
尝试在 wsl-container 中本地编译 DPDK,一些 DPDK 库曾经构建在远程本机 linux 机器上。
Docker文件运行编译安装了kernel headers
、GNU toolchain
等各种依赖。分布是 CentOS7
.
容器由 Docker Desktop
管理版本在这里是无用的信息。
问题
跨 DPDK 版本的类似问题。
在 DPDK 20.11 中,使用 meason
构建系统,文件 kernel/linux/meason.build
:
../kernel/linux/meson.build:23:1: ERROR: Problem encountered: Cannot compile kernel modules as requested - are kernel headers installed?
如果我编译 DPDK 的不同 DPDK 版本或使用其他构建系统 (makefile) 构建,我会得到相同错误的变体。
内部 /lib/modules
没有带有 WSL2“uname -r”输出的条目。
虽然WSL2有/lib/modules/5.4.72-microsoft-standard-WSL2
(作为一个软link),这个软link并没有出现在容器中
解决方案是将此行添加到 Dockerfile
*:
RUN ln -s /lib/modules/$(ls /lib/modules/) /lib/modules/$(uname -r)
*(假设在 /lib/modules
上只找到一个条目,并且该条目存在 /usr/src/kernels
。)
另一个解决方案(我没有测试)是 运行 容器:
docker run --name test -v /usr/src/kernels:/usr/src/kernels and -v /lib/modules/:lib/modules -dt image-name
假设您的主机已经安装了内核头文件并且可以找到它们(即找到 /usr/src/kernels/XXX/
并且 /lib/modules/XXX/build
softlink 没有损坏)