首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在docker容器中创建/构建内核模块

在docker容器中创建/构建内核模块
EN

Stack Overflow用户
提问于 2020-06-19 00:51:41
回答 2查看 4K关注 0票数 3

我目前的主机系统运行的是Mac OS和docker。我的Mac主机系统生成了一个docker容器。

衍生的停靠容器当前正在运行ubuntu:19.10

我正在尝试在docker容器中构建一个内核模块。

当我跑的时候

代码语言:javascript
复制
$> make

我得到..。

代码语言:javascript
复制
Building coolMod driver...
make -C /lib/modules/`uname -r`/build M=/home/foo/coolMod modules
make[1]: *** /lib/modules/4.19.76-linuxkit/build: No such file or directory.  Stop.
make: *** [Makefile:43: coolMod.ko] Error 2

docker容器没有内核标头。

当我尝试运行时:

代码语言:javascript
复制
$> apt install linux-headers-$(uname -r)
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-headers-4.19.76-linuxkit
E: Couldn't find any package by glob 'linux-headers-4.19.76-linuxkit'
E: Couldn't find any package by regex 'linux-headers-4.19.76-linuxkit'

如何安装内核头文件,以便在Docker容器中构建内核模块?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2021-11-26 13:53:50

也许为时已晚,但为了在容器中构建内核模块,您应该在特权模式下执行容器。

除了依赖kernel-devel和kernel-headers之外,内核还应该为您特定的内核版本构建,因此您应该创建一个卷来将host:/lib/modules链接到您的_container:/lib/modules。

一个好的起点应该是https://projectatomic.io/blog/2018/06/building-kernel-modules-with-podman/

票数 0
EN

Stack Overflow用户

发布于 2022-01-18 18:47:58

Docker容器没有自己的内核;它们使用Docker主机的内核。因此,当您运行uname命令时,您看到的结果就是底层Docker主机的结果。您可以通过比较Docker主机上的uname -a结果和Docker容器中的结果来验证这一点。

这很可能是makeapt install都失败的原因。

我不确定您正在尝试构建的特定模块,以及它是否具有任何其他依赖项。通常,如果Docker容器中有内核源代码,则可以在Docker容器中构建内核模块。尝试在您的apt install命令中使用特定版本的内核,而不是使用/依靠uname命令。然后是$ make -C <path_to_kernel_src> M=$PWD

请参考我刚刚发布的另一个问题的this答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62455239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档