排他モジュールは、ほとんどのカーネルバージョンでどのように機能しますか?

排他モジュールは、ほとんどのカーネルバージョンでどのように機能しますか?

最近私をいじめる質問がある。

ほとんどすべての排他モジュールはツリーの外にあるので(したがってカーネルバージョンではコンパイルされません)、そのモジュールがどのようにコンパイルされロードされているかを知りたいです。

多くの主要組織では、単一または何でもダウンロードを許可し、.tar.gz複数の.debカーネルバージョンで動作します。

ダウンロードしたモジュールはターゲットシステムに構築されていますか?

ソースコードを配布しますか?

ソースコードはどのカーネルモジュールバージョンを構築しているのか知っていますか?

または、ドライバが強制的にカーネルにロードされるか、バージョンfinit_module無視init_moduleマジックフラグを使用しますか?

それとも、後ろから何が起こっているのでしょうか?

よろしくお願いします。

ベストアンサー1

一般的なアプローチは、独自のコードとソースコードで提供される「shim」を含むオブジェクトファイルを提供することです。必要に応じて、適切なカーネルに合わせて再構築できます。インタフェースコードは、バージョン文字列を使用したシンボルの取得など、カーネル内のすべてのモジュールインタフェースを処理します。

たとえば、NVIDIAドライバはnv-kernel.oバイナリ形式でのみ使用でき、最終的にカーネルモジュールにラップされるファイルで構成されます。

おすすめ記事