Apa yang terjadi ketika USB drive dicolokkan?


21

Apa aliran acara USB dari ruang kernel ke ruang pengguna? Saya mendapatkan popup pada desktop saya ketika saya mencolokkan drive USB - apa urutan peristiwa yang mengarah dari mendeteksi drive USB baru untuk memasangnya dan menunjukkan popup itu?

Jawaban:


6

Ini diserahkan oleh udevpada sistem Linux modern. The udevdaemon dimulai dengan sistem akan mencari di /etc/udev/rules.ddan /lib/udev/rules.ddan akan menjalankan aturan yang cocok untuk acara kernel. Memasukkan drive USB akan memicu suatu peristiwa, udevakan mencari aturan yang cocok dan akan menjalankannya.

Aturan itu sendiri akan menentukan apa yang sistem Anda lakukan. Dalam beberapa tahun terakhir, udevtelah dikomunikasikan ke HAL, yang akan mengingatkan aplikasi melalui DBUS. Pendekatan ini sekarang sudah usang dalam mendukung udevsolusi terpadu , yang saya anggap akan melibatkan udevdberkomunikasi dbussecara langsung, atau melalui dbus-send .

Anda dapat memonitor aktivitas udevvia udevadm monitor.


2

Saya belum sepenuhnya yakin dengan ini, jadi bawa dengan sebutir garam dan lebih banyak penelitian.

Dimulai dengan subsistem kernel hotplug. Setelah suatu perangkat diatur, ia akan memanggil program apa pun yang pengguna atur untuk mengatur acara hotplug (jika ada echo hotplug_handler > /proc/sys/kernel/hotplug), atau mengirim paket data melalui soket netlink kobject_uevent. Ketika kernel meluncurkan handler hotplug, ia mengatur beberapa variabel lingkungan. Ketika kernel mengirimkan datapacket, itu termasuk pasangan kunci = nilai. Jika Anda mau, Anda dapat mengatur skrip yang hanya mencatat lingkungan dan mengaturnya sebagai pawang (bukan pada sistem produksi Anda, tentu saja - pengaturan uji).

Biasanya, udev diset sebagai handler, dan akan memiliki beberapa aturan pengaturan tentang cara menangani peristiwa. Dari sana, ia dapat meluncurkan program lain yang melakukan hal-hal lain (seperti mengeluarkan pesan dbus). Aturan udev ini sangat tergantung pada distribusi minat tertentu.

Ada banyak informasi di utas ini di mana seseorang mencoba menulis beberapa dokumentasi - perhatikan pesan pertama tidak akurat; terus membaca.


2
Sekali waktu ini akurat, tetapi tidak untuk waktu yang lama sekarang: udevmendengarkan modern untuk uevents pada soket netlink. (Cara lama memiliki masalah serialisasi / konkurensi.)
ephemient

Karena saya baru mengenal bagian Linux ini ( udev , hotplug ), saya ingin memiliki ide di setiap baris yang telah Anda jelaskan di sini. Jadi bisa tolong jelaskan mulai dengan subsistem kernel hotplug .
Sen

@ephemient: Terima kasih atas jawabannya. Bisakah Anda jelaskan urutan kejadiannya?
Sen
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.