我正在尝试使用内置于内核中的几个模块来编译Linux 2.6.32.6内核,这是出于非常具体的原因。我在NFS上包含了根文件系统,试图通过局域网PXE引导我自己的自定义救援Live-CD。在包含ROOT_NFS所需的依赖项和模块之后,我尝试使用make bzImage
编译Linux内核。当这个运行时我得到错误
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的依赖项,但此错误仍然存在。
任何解决此错误的建议都会很棒。
答案 0 :(得分:12)
这很可能是因为您通过不区分大小写的文件系统传输,从源树中丢失了一些文件。 Linux源代码树中大约有15个不同的文件来自不同的时间,它们的名称相同,但大写不同。对于构建Linux内核的人来说,这通常不是问题,因为所有合理的文件系统都区分大小写。
对于那些好奇的人来说,这种方式的文件都在netfilter树中 - 例如,请参阅v3.0中的include/linux/netfilter/xt_CONNTRACK.h
与include/linux/netfilter/xt_conntrack.h
。
所以,这些文件确实存在,但你丢失了。获取一个新的源代码树,将其解压缩到区分大小写的文件系统上,您将不再拥有此错误。或者,从" pristine"复制文件。源树或github mirror of the kernel如果您害怕丢失对树的修改 - 它们很可能不会从您正在编译的版本中的版本更改。