2017-10-19 1 views
0

私は自分用にnetfilter conntrackモジュールを作りたいと思います。だから私は、カーネルソースツリーから外部ディレクトリにnetfilter conntrackに関するすべてのソースコードをコピーします。それはコンパイルした後insmodすることができます。次に、いくつかのメンバをnf_conn構造体に追加し、正常にコンパイルします。しかし、それはinsmodすることはできません。システムは私に "シンボルのバージョンについて同意しません...."というメッセージを私に与えます。insmodカスタムモジュールがメッセージで失敗する:シンボルのバージョンについて同意しない

誰でも手伝ってもらえますか?

+0

私は自分のconntrackモジュールを元のカーネルのproceessに影響を与えずに使いたいと思っています。元のconntrackモジュールは以前と同じように保たれます。 – river

+0

あなたが変更した 'nf_conn'構造は、netfilter conntrackモジュールだけでなく、[other modules](http://elixir.free-electrons.com/linux/latest/ident/nf_conn)でも使われました。モジュールがこれらのモジュールの関数を使用する場合は、それらも再コンパイルする必要があります。 (BTW、 "バージョンに同意しない"というメッセージはおそらく指定された構造体を使用しています)。 – Tsyvarev

+0

ありがとう、私は解決策を持っている。私は自分自身に答えた。 – river

答えて

0

変更されたconntrackモジュールのディレクトリからModule.symversファイルを現在の開発モジュールにコピーするだけです。同じ関数名については、カーネルソースツリーによって提供されるものの代わりに使用されます。

またはMakefileの変更: OBJ-Y:= new_conntrack /発信者/

それはnew_conntrack /から新しいCRC値を使用します。 https://www.kernel.org/doc/Documentation/kbuild/modules.txt

関連する問題