Ubuntu

無效模組格式錯誤

  • March 1, 2021

在命令 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做同樣的事情。

在嘗試針對正確的核心源進行建構之前,請務必清理以前建構中的任何現有工件。

引用自:https://unix.stackexchange.com/questions/636728