Bir USB sürücü takıldığında ne olur?


21

USB olaylarının çekirdek alanından kullanıcı alanına akışı nedir? Bir USB sürücüyü taktığımda masaüstümde bir açılır pencere alıyorum - yeni USB sürücüyü algılamaktan kurmaya ve bu açılır pencereyi göstermeye kadar giden olayların sırası nedir?

Yanıtlar:


6

Bu udevmodern Linux sistemlerinde verilmektedir. udevSistemle başladı cin arayacaktır /etc/udev/rules.dve /lib/udev/rules.dve çekirdek olayları için eşleme kuralları çalışacaktır. Bir USB sürücü takılması olayı tetikler,udev eşleşen bir kuralı arar ve yürütür.

Kuralların kendileri, sisteminizin ne yaptığını belirleyecektir. Son yıllarda, udevDBUS üzerinden uygulamaları uyaracak olan HAL ile iletişim kurdu. Bu yaklaşım artık doğrudan ya da dbus-gönderme yoluyla iletişim udeviçereceğini düşündüğüm birleşik bir çözüm lehine modası geçmiş durumda .udevddbus

Sen faaliyetlerini izleyebilirsiniz udevaracılığı udevadm monitor.


2

Bu konuda henüz tam olarak emin değilim, bu yüzden bir tuz ve daha fazla araştırma ile alın.

Çekirdek hotplug alt sistemi ile başlar. Bir aygıt ayarlandıktan sonra, hotplug olaylarını ele almak için hangi kullanıcı alanı programı ayarlanmışsa onu arar (eğer ayarlandıysa)echo hotplug_handler > /proc/sys/kernel/hotplug ) veya kobject_uevent netlink soketi üzerinden bir veri paketi gönderir. Çekirdek hotplug işleyicisini başlattığında, bazı ortam değişkenleri ayarlar. Çekirdek bir veri paketi gönderdiğinde, anahtar = değer çiftleri içerir. İsterseniz, sadece çevreyi kaydeden ve işleyici olarak ayarlayan bir komut dosyası oluşturabilirsiniz (üretim sisteminizde değil, elbette - bir test kurulumu).

Genellikle, udev işleyici olarak kurulur ve olayların nasıl işleneceği ile ilgili çeşitli kurallara sahip olacaktır. Oradan başka şeyler yapan başka programlar başlatabilir (dbus mesajları sorunu gibi). Bu udev kuralları, özel ilgi dağılımına büyük ölçüde bağlıdır.

Bu konuda , birilerinin bazı dökümanları yazmaya çalıştığı birçok bilgi var - ilk mesajın doğru olmadığını unutmayın; Okumaya devam et.


2
Bir zamanlar bu doğruydu, ama uzun zamandır değil: modern udevbir netlink soketindeki canlıları dinliyor. (Eski şekilde seri hale getirme / eşzamanlılık sorunları vardı.)
ephemient

Linux'un bu bölümünde ( udev , hotplug ) yeni olduğum için, burada tanımladığınız her satır hakkında fikir sahibi olmak isterim. Bu yüzden çekirdek hotplug alt sistemi ile başlayan başlar lütfen .
Sen

@ephemient: Cevabınız için teşekkürler. Lütfen olayların sırasını açıklar mısınız?
Sen
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.