8

出于非常特定的原因,我正在尝试使用内核中内置的几个模块来编译 Linux 2.6.32.6 内核。我在 NFS 上包含了根文件系统,试图通过 LAN PXE 引导我自己的自定义救援 Live-CD。在包含 ROOT_NFS 所需的依赖项和模块后,我尝试仅使用make bzImage. 当它运行时,我收到错误

make[4]: *** No rule to make target './linux-2.6.32.6/include/linux/netfilter/xt_CONNMARK.h', needed by './linux-2.6.32.6/usr/include/linux/netfilter/.install'. Stop.

现在我尝试在配置中禁用 Netfilter 模块,并尝试找到任何需要 Netfilter 的依赖项,但此错误仍然不断发生。

任何解决此错误的建议都会很棒。

4

1 回答 1

13

这很可能是因为您从源代码树中丢失了一些文件,因为它们是通过不区分大小写的文件系统传输的。Linux 源代码树中有大约 15 个不同时期的不同文件,它们的名称相同,但大小写不同。对于构建 Linux 内核的人来说,这通常不是问题,因为所有合理的文件系统都是区分大小写的。

对于那些好奇的人,这种方式的文件都在 netfilter 树中 - 例如参见v3.0 中的include/linux/netfilter/xt_CONNTRACK.hvs include/linux/netfilter/xt_conntrack.h.。

因此,这些文件确实存在,但您丢失了它们。获取一个新的源代码树,在区分大小写的文件系统上解压缩它,您将不再有此错误。或者,如果您害怕丢失对树的修改,则从“原始”源树或内核的 github 镜像复制文件- 它们很可能不会从您正在编译的版本中更改。

于 2013-11-11T18:58:14.240 回答