insmodはモジュールを挿入できません。モジュール形式が正しくありません。

insmodはモジュールを挿入できません。モジュール形式が正しくありません。

mcp251xfd用のLinuxカーネルドライバをビルドしてインストールしようとしています。ビルドは成功したようですが(.koファイルを取得します)、insmodを呼び出してインストールすると、次の結果が表示されます。

insmod: ERROR: could not insert module mcp251xfd.ko: Invalid module format

インターネット検索で最も一般的なアドバイスは、ビルドしたい正確なカーネルバージョンにまったく同じソースコードを使用するようです。したがって uname -a は以下を返します。

Linux fedora 5.11.3-300.fc34.x86_64 #1 SMP Thu Mar 4 19:03:18 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux.

そのため、バージョン5.11.3用のカーネルソースをダウンロードし、make oldconfigを実行し、ドライバを含むように.configファイルを編集し、make prepareを実行してドライバソースディレクトリに移動して、次のように呼び出しました。

make -C ~/linux-5.11.3 -M=`pwd` modules

これは mcp251xfd.ko ファイルを生成するため、成功しました。 insmodの直後にエラーが表示されます。 dmesg を呼び出すと、次のものが返されます。

mcp251xfd: version magic '5.11.3 SMP mod_unload ' should be '5.11.3-300.fc34.x86_64 SMP mod_unload '

それで、次に何をすべきかわかりません。 5.11.3 正しいバージョンですか?

私の.configファイルに「CONFIG_BUILD_SALT = "5.11.3-300.fc34.x86_64」と表示されていることを確認しました。したがって、私のシステムのバージョン番号と一致しているようです。 ?「ソルト」バージョン番号を使用しますか?

ベストアンサー1

回避策は、Makefile(LinuxソースツリーのMakefile)を開き、次の行を変更することです。

EXTRAVERSION = -300.fc34.x86_64

インストールされているオペレーティングシステムのuname -rテキストと一致します。

おすすめ記事