【发布时间】:2016-07-14 09:38:57
【问题描述】:
我正在尝试为 Ubuntu 服务器构建最新的 linux 加密驱动程序。 Ubuntu 服务器安装了运行内核、附加组件和头文件。但是,加密模块的源代码来自 Torvald 的 GitHub(而不是 Ubuntu)。
我也在使用内核文档Building External Modules。 我克隆了最新的内核:
git clone --depth=1 https://github.com/torvalds/linux.git
然后:
cd linux
下一步:
$ make -C /usr/src/linux-headers-4.2.0-34 M=$PWD crypto
make: Entering directory '/usr/src/linux-headers-4.2.0-34'
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing.
Run 'make oldconfig && make prepare' on kernel src to fix it.
make: Nothing to be done for 'crypto'.
make: Leaving directory '/usr/src/linux-headers-4.2.0-34'
还有:
$ find /usr/src -name 'autoconf.h'
/usr/src/linux-headers-4.2.0-34-generic/include/generated/autoconf.h
$ find /usr/src -name 'auto.conf'
/usr/src/linux-headers-4.2.0-34-generic/include/config/auto.conf
还有这个:
$ find /usr/src -type d -name 'build'
/usr/src/linux-headers-4.2.0-34/tools/build
/usr/src/linux-headers-4.2.0-34-generic/include/config/build
尝试使用build 目录会导致以下结果:
$ make -C /usr/src/linux-headers-4.2.0-34/tools/build M=$PWD crypto
make: Entering directory '/usr/src/linux-headers-4.2.0-34/tools/build'
make: *** No rule to make target 'crypto'. Stop.
make: Leaving directory '/usr/src/linux-headers-4.2.0-34/tools/build'
我显然遗漏了一些明显的东西。这并不奇怪,因为我对 kbuild 几乎一无所知。我在/usr/src 有一个现有配置和源,我在$PWD/crypto 有新文件。我不清楚为什么要为现有配置生成新配置。
如何针对其他人提供的正在运行的内核更新内核加密模块?
【问题讨论】:
-
这里:
make -C /usr/src/linux-headers-4.2.0-34 M=$PWD crypto- 而不是crypto应该是modules。 -
谢谢@Tsyvarev。这导致了同样的问题:
ERROR: Kernel configuration is invalid.它增加了一个新问题:cc1: fatal error: can’t open ‘kernel/bounds.s’ for writing: Permission denied compilation terminated.跨度> -
通常情况下,Linux内核应该在构建之前进行配置。没有
kernel/bounds.s通常表示这个问题。使用make menuconfig、make oldconfig或任何其他配置目标。 -
谢谢@Tsyvarev。我猜Ubuntu已经配置了它,我只需要连接现有的配置。
can’t open ‘kernel/bounds.s’- 看看Kbuild,这是开发人员有时会想出的愚蠢黑客之一。以下是关于聪明的评论:“我们使用内部 kbuild 规则来避免来自 make 的“是最新的”消息”。因此,为了避免 “是最新的” 消息,他们将其换成 “无法打开 'kernel/bounds.s' 进行写入......”跨度> -
您没有在问题帖子中写下您拥有
wired in the existing configuration。你是怎么做到的?通过复制.config文件?
标签: linux ubuntu build linux-kernel kernel-module