実行するカーネルと同じバージョンのカーネルに対してカーネル モジュールをビルドする必要があります。したがって、ダウンロードしたカーネル 4.3 ソースがある場合は、それをコンパイルする必要があります カーネルのバージョンを確認し、カーネルをロードする前にそのバージョンで起動してください。
2 つの解決策があります:
<オール>zypper install kernel-source
でインストールできます)。 SLES または他のディストリビューションの同等のコマンド)make -C /lib/modules/$(uname -r)/build M=$PWD modules,"$(uname -r)" は、現在実行しているカーネル バージョンに対してコンパイルしていることを示しているため、insmod を実行できるはずです。ヘッダーを変更していない場合は、現在のカーネルのモジュール。
あなたのテキストから、「確認のため、カーネル ディレクトリからプロジェクト ディレクトリにいくつかのファイルをコピーしました。それに変更を加え、さらにいくつかのコードを挿入しました。」
カーネル ソースに変更を加えた場合は、新しいカーネルを再コンパイルし、新しく更新されたカーネルで起動する必要がある場合があります。その後、変更されたヘッダーでカーネル モジュールをコンパイルできるはずです。
ここでの問題は、カーネル モジュールが他のカーネル モジュールのエクスポートされたシンボルを使用していることです。この場合、Linux InfiniBand RDMA スタックのエクスポートされたメソッドまたはシンボルのように見えます。
シンボル バージョンの問題を解決するには、Module.symvers
をコピーします。
/usr/src/ofa-kernel
ディレクトリに移動し、現在の作業ディレクトリに貼り付けます。次に、モジュールを再度作成します。今度は insmod
注:Module.symvers ファイルには、kernelmodule でエクスポートされたすべてのシンボルの情報が含まれています。したがって、それを作業ディレクトリにコピーすることで、kbuild が使用されているエクスポートされたシンボルについて詳しく知ることができます。
Module.symvers が見つからないか空の場合は、create_Module.symvers.sh
を使用して作成します