動的にコンパイルされたLinuxカーネルモジュールがあります。スタートにどのように追加しますか?その中にはたくさんの.ko
ファイルがあります/lib/modules
。これらのモジュールをロードする優先順位をどのように設定できますか?
ベストアンサー1
ほとんどは最終的に起動中にロードされますが、起動時や他の時点では自動的にロードされません。これが発生する可能性がある3つのメカニズムがあります。
ユーザースペース要求:これには、initサービスからudev、コマンドラインまですべてが含まれます。起動時に特定のモジュールをロードしたい場合は、Initまたはudevがおそらく最も簡単な方法です。
ホットスワップ可能なデバイス:USBやPCIなどに接続すると、カーネルはそれを検出し、デバイスが自分自身を識別する方法に応じて適切なモジュールを要求します。
必須プロトコルまたはその他の実装:カーネルが何かを実行する必要があり(ファイルシステムの読み取りなど)、それを実行するための知識が不足していることがわかったら、モジュールを要求します。
最後の2つについては、「要求モジュール」というフレーズを使用しました。これは、Wolfgang Mauererによると、)ステートメントをkmod
実行しているユーザー空間デーモンを介してカーネルが実際にロードされるためです。/sbin/modprobe
Linuxカーネルアーキテクチャ2.6 カーネルには組み込み関数への呼び出しが約100request_module()
しかありません。
modprobe
インストールされたMODULE_ALIASのデータベースを使用します。これは、モジュールのソースコードに明示的に指定されるか、モジュールが提供するOEMデバイスIDのリストであるモジュールのMODULE_DEVICE_TABLEから派生します。