最近私をいじめる質問がある。
ほとんどすべての排他モジュールはツリーの外にあるので(したがってカーネルバージョンではコンパイルされません)、そのモジュールがどのようにコンパイルされロードされているかを知りたいです。
多くの主要組織では、単一または何でもダウンロードを許可し、.tar.gz
複数の.deb
カーネルバージョンで動作します。
ダウンロードしたモジュールはターゲットシステムに構築されていますか?
ソースコードを配布しますか?
ソースコードはどのカーネルモジュールバージョンを構築しているのか知っていますか?
または、ドライバが強制的にカーネルにロードされるか、バージョンfinit_module
無視init_module
マジックフラグを使用しますか?
それとも、後ろから何が起こっているのでしょうか?
よろしくお願いします。
ベストアンサー1
一般的なアプローチは、独自のコードとソースコードで提供される「shim」を含むオブジェクトファイルを提供することです。必要に応じて、適切なカーネルに合わせて再構築できます。インタフェースコードは、バージョン文字列を使用したシンボルの取得など、カーネル内のすべてのモジュールインタフェースを処理します。
たとえば、NVIDIAドライバはnv-kernel.o
バイナリ形式でのみ使用でき、最終的にカーネルモジュールにラップされるファイルで構成されます。