2013-05-29 61 views
3

,但是獲取消息「模塊許可證」未指定'taints kernel「我正在嘗試運行內核模塊。這個模塊似乎可以在各種Linux機器上正常工作,但是,當我嘗試在特定的機器上運行它(即內核版本爲2.6的CentOS)時,模塊無法啓動,聲稱我沒有設置模塊許可證,結果,不允許我使用各種必需的內核API。雖然設置了MODULE_LICENSE

我在我的主源文件(包含module_init和module_exit的文件)的底部設置了MODULE_LICENSE(「GPL」),並且就我能找到的所有示例而言,這就夠了。我應該注意到我的項目有多個文件。

我很難過,所以任何幫助將不勝感激。

+0

您已經在每臺機器上重新編譯了模塊,不是嗎? – Armali

+0

是的,我將它編譯在兩臺獨立的機器上。我已經想出瞭解決方案,請參閱下文。 –

回答

2

好啦,我已經想通了,我做錯了什麼。我試圖爲模塊的編譯啓用-Werror標誌。在這一過程中,我添加了以下行生成文件:

CFLAGS_MODULE = -Werror

我以爲這搞砸了一些關於內核模塊的許可。刪除這條線使模塊再次工作。如果你遇到這樣的問題,確保你沒有搞亂makefile中的環境變量。

+0

我的make文件中沒有任何這樣的標誌,但儘管在我的模塊中有MODULE_LICENSE,但仍然看到相同的錯誤。 –

3

首先,驗證許可證信息是否存在於模塊對象文件中。

objdump的-sj.modinfo yourModule.ko

1

我剛剛遇到了同樣的問題,這是我固定在開始寫MODULE_LICENSE("GPL")後才(在包括之後)該模塊的makefile文件指的是每 C文件的。

相關問題