USBドライブを接続した後はどうなりますか?

USBドライブを接続した後はどうなりますか?

カーネル空間からユーザ空間へのUSBイベントフローは何ですか? USBドライブを接続すると、デスクトップにポップアップが表示されます。新しいUSBドライブを検出した後、それを取り付けてポップアップを表示するまでの一連のイベントは何ですか?

答え1

udevこれは最新のLinuxシステムで利用可能です。システムで開始されたデーモンプロセスは、カーネルイベントの一致規則をudev検索し/etc/udev/rules.dて実行します。 USBドライブを挿入すると、一致するルールを検索して実行する/lib/udev/rules.dイベントが発生します。udev

ルール自体がシステムの機能を決定します。最近、udevDBUSを介してアプリケーションに警告を送信するHALとの通信が行われています。このアプローチは、直接または次を介して渡すudev統合ソリューションを好むため、廃止されました。udevddbusdbusを送信

udevアクティビティを通じて監視できますudevadm monitor

答え2

私はまだこれについて完全に確信していませんので、塩を1粒ずつ受け入れ、さらに研究してください。

カーネルホットプラグサブシステムから始まります。デバイスが設定されたら、ホットプラグイベントを処理するように設定されたユーザースペースプログラム(設定されているecho hotplug_handler > /proc/sys/kernel/hotplug場合)を呼び出すか、kobject_uevent netlinkソケットを介してパケットを送信します。カーネルは、ホットプラグハンドラの起動時にいくつかの環境変数を設定します。カーネルがパケットを送信すると、キーと値のペアが含まれます。必要に応じて、環境を記録してハンドラに設定するスクリプトを設定できます(もちろん、本番システムではなくテスト設定)。

通常、udevはハンドラとして設定され、イベントの処理方法に関するいくつかのルールを設定します。そこから別のプログラムを起動して、他の操作(例:dbusメッセージの発行)を実行できます。これらの udev ルールは、特定の関心の分布に大きく依存します。

その中に多くの情報が含まれています。このスレッド誰かが文書を作成しようとしています。最初のメッセージが正しくないことに注意してください。

関連情報