回答:
これはudev
、最新のLinuxシステムで渡されます。udev
システムで起動デーモンがで検索します/etc/udev/rules.d
と/lib/udev/rules.d
、カーネルイベントのマッチングルールを実行します。USBドライブを挿入すると、イベントがトリガーさudev
れ、一致するルールが検索されて実行されます。
ルール自体がシステムの動作を決定します。近年、udev
HALと通信し、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をリッスンします。(古い方法には、シリアル化/同時実行性の問題がありました。)