modprobeはudevが要求したドライバをどこからロードしますか?

modprobeはudevが要求したドライバをどこからロードしますか?

Linuxシステムが正常に実行されているシナリオを考えてみましょう。ユーザーが表示され、ホットスワップUSBストレージデバイス。

イベントの順序は次のとおりです。

ここに画像の説明を入力してください。

modprobeはドライバをどこからロードしますか?要求されたデバイスのドライバが/sys/bus/driversmodprobeロード後または以前に見つかりましたか?

/sys/ここで設定したいのは、上記の画像の項目と発生したイベントの関係です。

答え1

ueventメッセージにはデバイスに関する情報が含まれています(はい)。この情報には、PCIやUSBなどのバスに接続されているデバイスの登録済みベンダーとモデルIDが含まれています。 Udevはこれらのイベントを解析し、固定フォーマットモジュール名を設定してに渡しますmodprobemodprobe以下でカーネルをインストールしたときに生成され、固定フォーマットモジュール名を実際のドライバプログラムモジュールファイル名にマッピングする/lib/modules/VERSIONというファイルを見つけます。depmod.aliasバラよりドライバモジュールは自動的にロードおよびアンロードされますか?プロセスの詳細 - この回答はmodprobeカーネルから直接呼び出される最初のステップについて説明していますが、モジュールエイリアスがどのように機能するかはmodprobe変わりません。

また、見ることができますMichael Opdenackerの講演「udevを使ったホットプラグ」より多くの例があり、udevを使用したデバイス管理の他の側面について説明します。最初からLinuxガイド固定フォーマットモジュール名を定義する方法のセクションがあります。

modprobe呼び出してモジュールをロードするinit_moduleシステムコール。何らかの方法でsysfsと対話しません。モジュールがロードされると、カーネルはそのモジュールのエントリを生成します/sys/module。 sysfsの他の場所に表示されるすべての項目は、モジュールのコードによって異なります(たとえば、USBデバイスタイプドライバを持つモジュールは、以下に項目を追加するいくつかの一般的なUSBサポートコードを呼び出します/sys/bus/usb/drivers)。

関連情報