8

いくつかのモジュールがカーネルに組み込まれた Linux 2.6.32.6 カーネルをコンパイルしようとしていますが、これは非常に特殊な理由からです。LAN 経由で独自のカスタム レスキュー Live-CD を PXE ブートしようとして、NFS にルート ファイル システムを含めました。ROOT_NFS に必要な依存関係とモジュールをインクルードした後、Linux カーネルだけをコンパイルしてみます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 ツリーにあります -たとえばinclude/linux/netfilter/xt_CONNTRACK.hvs. in v3.0 を参照してください。include/linux/netfilter/xt_conntrack.h

したがって、それらのファイルは存在しますが、それらを失いました。新しいソース ツリーを取得し、大文字と小文字を区別するファイル システムで展開すると、このエラーは発生しなくなります。または、ツリーへの変更が失われることを恐れている場合は、「元の」ソース ツリーまたはカーネルの github ミラーからファイルをコピーします。ほとんどの場合、コンパイルしているバージョンのリリースから変更されていません。

于 2013-11-11T18:58:14.240 に答える