カーネルのソースをダウンロードし、パッチを適用して再ビルドしたところ、insmod
を実行しようとすると、「[モジュール内の不明なシンボル]」とdmesg
が表示され、エラー「シンボルのバージョンについて同意しません...」。
このモジュールのソースを探し出してカーネルに対して再構築する必要がない場合、どういうわけかカーネルにこのモジュールを受け入れるように強制することは可能ですか?
これは危険だと思いますが、可能であれば危険を冒します。
insmod
はモジュールをロードするのに最適なツールではありません-代わりにmodprobe
を使用してください。 modprobe
のmanページ には、might競合するモジュールをロードする_--force
_オプションがあることがわかりますバージョン情報。
あなたが言ったように、これは危険であり、本質的に決して使用されるべきではありません。あなたのシステムが爆発した場合、あなたは破片を拾います。
同じカーネルバージョンを再構築してそのエラーが発生した場合、適用したパッチが、モジュールによって参照されるカーネル内の何かを変更した可能性があります。それは爆破することをほぼ保証します。そのモジュールのソースを見つけて、それを新しいカーネルに対して再度コンパイルして、正しい参照が得られるようにする必要があります。
また、コンパイルにまったく失敗する可能性があり、カーネルパッチが行った変更と一致するように変更する必要があります。
make cleanを実行し、モジュールディレクトリで再度makeしてから、insmodを実行すると、そのエラーは発生しません。または、カーネルヘッダーが見つからない場合は、お使いのディストリビューションに応じてインストールしてください。