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?
Ini diserahkan oleh udev
pada sistem Linux modern. The udev
daemon dimulai dengan sistem akan mencari di /etc/udev/rules.d
dan /lib/udev/rules.d
dan akan menjalankan aturan yang cocok untuk acara kernel. Memasukkan drive USB akan memicu suatu peristiwa, udev
akan mencari aturan yang cocok dan akan menjalankannya.
Aturan itu sendiri akan menentukan apa yang sistem Anda lakukan. Dalam beberapa tahun terakhir, udev
telah dikomunikasikan ke HAL, yang akan mengingatkan aplikasi melalui DBUS. Pendekatan ini sekarang sudah usang dalam mendukung udev
solusi terpadu , yang saya anggap akan melibatkan udevd
berkomunikasi dbus
secara langsung, atau melalui dbus-send .
Anda dapat memonitor aktivitas udev
via udevadm monitor
.
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.
udev
mendengarkan modern untuk uevents pada soket netlink. (Cara lama memiliki masalah serialisasi / konkurensi.)