Ubuntu
無效模組格式錯誤
在命令 make 我呼叫命令之後
sudo insmod example1.ko
,我是 insertig 密碼,然後我遇到了這樣的錯誤insmod error: could not insert module example1.ko: Invalid module format
。我的 ubuntu5.8.0-44-generic
版本是,我的 example1.ko 版本是5.8.0-38-generic
. 也許這些版本應該和我一樣?我一直在嘗試將我的 Makefile 從/lib/modules/($ shell uname -r)/build
to更改,/lib/modules/5.8.0.-38-generic/build
但仍然是同樣的錯誤。我不知道如何解決這個問題。我使用命令
dmesg
搜尋有關問題的更多資訊,但發現了一些錯誤example1: version magic '5.8.0-38-generic SMP mod_unload' should be '5.8.0-44-generic SMP mod_unload'
並且有更多的六行具有相同的問題和兩個錯誤
Failed to send host log message
。我的 Makefile 文件看起來是這樣的:
obj-m := example1.o default: make -C /lib/modules/5.8.0-44-generic/build M=$(PWD) modules clean make -C /lib/modules/5.8.0-44-generic/build M=$(PWD) clean
我跑了
make clean ; make
,但沒有效果。
對該問題的評論導致了我將在此處總結的解決方案。
OP想建構一個Linux核心模組;他們針對錯誤版本的核心原始碼建構它(即,針對與正在執行的核心不同的核心原始碼版本)。這由
dmesg
緩衝區的日誌指示。要解決該問題,您需要指向與要載入模組的核心相對應的核心源。您可以在命令行上顯式執行此操作:
$ make -C <path_to_kernel_src> M=$PWD
或者創建一個
Makefile
做同樣的事情。在嘗試針對正確的核心源進行建構之前,請務必清理以前建構中的任何現有工件。