回答:
これはudev、最新のLinuxシステムで渡されます。udevシステムで起動デーモンがで検索します/etc/udev/rules.dと/lib/udev/rules.d、カーネルイベントのマッチングルールを実行します。USBドライブを挿入すると、イベントがトリガーさudevれ、一致するルールが検索されて実行されます。
ルール自体がシステムの動作を決定します。近年、udevHALと通信し、DBUS経由でアプリケーションに警告します。現在、このアプローチは時代遅れであり、統一されたudevソリューションを支持しています。これは、直接またはdbus-sendを介したudevd通信を伴うと思われます。dbus
あなたはの活動を監視することができますudev経由しますudevadm monitor。
私はまだこれに完全に自信がないので、一粒の塩とより多くの研究でそれを取ります。
カーネルホットプラグサブシステムから始まります。デバイスがセットアップされた後、ホットプラグイベントを処理するためにセットアップされたユーザースペースプログラム(で設定された場合)を呼び出すかecho hotplug_handler > /proc/sys/kernel/hotplug、kobject_uevent netlinkソケットを介してデータパケットを送信します。カーネルがhotplugハンドラーを起動すると、いくつかの環境変数が設定されます。カーネルがデータパケットを送信するとき、キー=値のペアが含まれます。必要に応じて、環境をログに記録するスクリプトをセットアップし、ハンドラーとしてセットアップすることができます(もちろん、運用システムではなく、テストセットアップです)。
通常、udevはハンドラーとしてセットアップされ、イベントの処理方法に関するいくつかのルールがセットアップされます。そこから、他のことを行う他のプログラムを起動できます(dbusメッセージの発行など)。これらのudevルールは、関心のある特定の分布に大きく依存しています。
このスレッドには、誰かがドキュメントを作成しようとする多くの情報があります。最初のメッセージは正確ではないことに注意してください。読み続けます。
udevは、netlinkソケットでueventをリッスンします。(古い方法には、シリアル化/同時実行性の問題がありました。)