2017-10-19 148 views
0

我想爲自己製作一個netfilter conntrack模塊。所以我將netfilter conntrack的所有源代碼從內核源代碼樹複製到我的外部目錄。編譯後可以insmod。然後,我將一些成員添加到結構nf_conn中,並且它已成功編譯。但是,它不能被insmod。系統給我的消息「不同意符號的版本....」。insmod自定義模塊失敗,顯示消息:不同意符號版本

任何人都可以幫助我嗎?

+0

我想擁有自己的conntrack模塊而不影響原始的內核過程。原來的conntrack模塊像以前一樣保存。 – river

+0

您已修改的結構'nf_conn'不僅可以由netfilter conntrack模塊使用,也可以在[其他模塊](http://elixir.free-electrons.com/linux/latest/ident/nf_conn)中使用。如果你的模塊使用這些模塊的函數,你也需要重新編譯它們。 (順便說一句,「不同意版本」消息中顯示的符號可能使用給定的結構)。 – Tsyvarev

+0

謝謝,我已經得到了解決方案。我回答自己。 – river

回答

0

只需將修改後的conntrack模塊的目錄中的Module.symvers文件複製到當前的開發模塊即可。對於相同的函數名稱,將使用它來代替內核源碼樹提供的名稱。

或者修改Makefile: OBJ-Y:= new_conntrack /來電/

它將利用從new_conntrack /新的CRC值。 https://www.kernel.org/doc/Documentation/kbuild/modules.txt

相關問題