web-dev-qa-db-ja.com

「シンボルのバージョンに同意しない」カーネルモジュールをロードすることが可能

カーネルのソースをダウンロードし、パッチを適用して再ビルドしたところ、insmodを実行しようとすると、「[モジュール内の不明なシンボル]」とdmesgが表示され、エラー「シンボルのバージョンについて同意しません...」。

このモジュールのソースを探し出してカーネルに対して再構築する必要がない場合、どういうわけかカーネルにこのモジュールを受け入れるように強制することは可能ですか?

これは危険だと思いますが、可能であれば危険を冒します。

4
Shum

insmodはモジュールをロードするのに最適なツールではありません-代わりにmodprobeを使用してください。 modprobeのmanページ には、might競合するモジュールをロードする_--force_オプションがあることがわかりますバージョン情報。

あなたが言ったように、これは危険であり、本質的に決して使用されるべきではありません。あなたのシステムが爆発した場合、あなたは破片を拾います。

5
Mat

同じカーネルバージョンを再構築してそのエラーが発生した場合、適用したパッチが、モジュールによって参照されるカーネル内の何かを変更した可能性があります。それは爆破することをほぼ保証します。そのモジュールのソースを見つけて、それを新しいカーネルに対して再度コンパイルして、正しい参照が得られるようにする必要があります。

また、コンパイルにまったく失敗する可能性があり、カーネルパッチが行った変更と一致するように変更する必要があります。

1
Caleb

make cleanを実行し、モジュールディレクトリで再度makeしてから、insmodを実行すると、そのエラーは発生しません。または、カーネルヘッダーが見つからない場合は、お使いのディストリビューションに応じてインストールしてください。

0
Devendra Naga