ドライバモジュールは自動的にロードおよびアンロードされますか?

ドライバモジュールは自動的にロードおよびアンロードされますか?

Ubuntu 14.04で外部ワイヤレスアダプタを接続しなくても、モジュールがrt2800usbまだ表示されることがわかりましたlsmod

  1. ドライバモジュールはいつ自動的にロードされますか?デバイスがコンピュータに接続されたときですか、それともオペレーティングシステムが起動したときですか?

  2. ドライバモジュールはいつ自動的に削除されますか?デバイスがコンピュータから取り外されたとき、またはオペレーティングシステムがシャットダウンしたときですか?

ベストアンサー1

カーネルが新しいデバイスを検出すると、このプログラムを実行します。modprobeデバイスを識別する名前を渡します。ほとんどのデバイスは、ベンダーとモデル登録番号で識別されます。PCIまたはUSBアイデンティティ表示。プログラムmodprobeはモジュールエイリアステーブルを参照して、特定のデバイスのドライバを含むファイル名を見つけます。ファイルシステムや暗号化アルゴリズムなどの非ハードウェアデバイス用のドライバにも同様の原則が適用されます。詳細については、次を参照してください。/lib/modules/VERSION/modules.aliasDebian 再起動後にシリアル PCI カードが検出されない

modprobeが要求したドライバを含むモジュールファイル()を確認すると、.koモジュールファイルがカーネルにロードされます。モジュールコードは次のとおりです。動的ローディングカーネルを入力します。モジュールが正常にロードされると、リストに表示されますlsmod

カーネルが新しいホットプラグ対応ハードウェアを検出すると(たとえば、USB周辺機器を接続している場合)、モジュールは自動的にロードされます。さらに、オペレーティングシステムは、起動時に存在する周辺機器用のドライバをロードするために、起動時にシステム内のすべてのハードウェアを列挙します。

modprobeまたは、コマンドを使用してモジュールのロードを手動で要求することもできますinsmod。ほとんどのディストリビューションには、にリストされているモジュールをロードするための起動スクリプトが含まれています/etc/modules。モジュールをロードする別の方法は、モジュールの依存関係である場合です。モジュールAがモジュールBに依存している場合、modprobe AAがロードされる前にBがロードされます。

モジュールがロードされると、ドライバを使用しているすべてのデバイスが切断されても、明示的にアンロードされるまでロードされたままになります。ずっと前に未使用のモジュールを自動的にアンロードするメカニズムがありましたが、私の記憶が正しい場合はudevが登場したときに削除されました。私は自動モジュールのアンロードが一般的な機能ではないと思います。なぜなら、これを要求する傾向があるシステムは、ほとんど(ドライバコード規模で)多くのメモリを備えたデスクトップPCだからです。

おすすめ記事