デバイスを接続せずにLinuxデバイスドライバーをインストールする方法はありますか?
ドライバーコードに完全にアクセスできます。Linuxカーネル2.6.35を使用しています。
私はinsmodとmodprobeを試しましたが無駄になりました。私はカスタムドライバーに取り組んでいます(私はそれを書きませんでした)が、ドキュメントはありません。
デバイスを接続せずにLinuxデバイスドライバーをインストールする方法はありますか?
ドライバーコードに完全にアクセスできます。Linuxカーネル2.6.35を使用しています。
私はinsmodとmodprobeを試しましたが無駄になりました。私はカスタムドライバーに取り組んでいます(私はそれを書きませんでした)が、ドキュメントはありません。
デバイスのインスタンスがシステムに存在しない場合、適切に作成されたデバイス ドライバーはインストールされません (ホットプラグ可能なデバイスは例外である可能性があります)。Unix の一部のバージョンでは、ドライバーのprobe()関数がデバイスが存在するかどうかをチェックします。Linux では、プローブ機能が _init() ルーチンに組み込まれることがよくあります。ハードウェアが検出されない場合、ドライバーはそれ自体を登録せず、モジュールの場合はアンロードされる状態を返す必要があります。
ドライバー コードをメモリに格納する必要がある場合は、それをロード可能なモジュールとしてビルドするのではなく、Linux ドライバーをメモリ常駐カーネルの一部として選択します。ドライバをローダブル モジュールとしてビルドするには、menuconfig
プログラムで「M」を入力します。ドライバをカーネルに組み込むには、スペース バーを使用してドライバを選択します。この違いを示すために 、選択には*
ではなくアスタリスクが付けられます。M
(このmenuconfig
ダイアログのテキストはKconfig
ファイルから取得されます。この構成ダイアログの生成物は、オブジェクト ファイルのコンパイルを制御するために s.config
で使用される構成シンボルを含むMakefile
ファイルです。前の例では、このドライバーが Linux カーネルに組み込まれていることを前提としています。ソース コード ツリー. ソース コード ファイルしかない場合は、このドライバがソース ツリーのどこに収まるかを決定する必要があります. その後、手動で a を編集しMakefile
て、その適切なサブディレクトリでドライバを無条件にコンパイルできる場合がありますまたは、このドライバーの構成変数を使用してKconfig
およびファイルをカスタマイズします)。Makefile
ドライバーのすべてのコードを常駐させるには、いくつかの小さなコード変更を行う必要があります。通常、初期化コードとデータは、「通常の」テキストとデータとは別のテキストとデータ セクションに配置され、カーネルの起動が完了すると、このメモリ セクションは解放されます。ドライバー コードとデータが解放されないようにするには、宣言内 のセクション指定子__init
とセクション指定子を削除します。__exit
もちろん、このデバイス ドライバーを組み込むには、新しいカーネル バイナリをビルドする必要があります。.config
ドライバーを追加する前に、以前のビルドのファイルを使用するようにしてください。