USB algılama akışını nasıl anlayabilirim?


14

Çekirdek alanından USB olaylarının Kullanıcı alanına akışını anlamak istiyorum (merakımdan, işlerin nasıl uygulandığını bilerek).

Daha açık olmak gerekirse, sistemime bir USB sürücü taktığımda pop-up'ın masaüstüme nasıl geldiğini ve sürücünün nasıl monte edildiğini bilmek istiyorum.

Ayrıca USB'mde bazı görüntülerin olup olmadığını nasıl öğrendiğini ve "evet" ise, GIMP'de veya başka bir yazılımda açmam gerekip gerekmediğini nasıl sorduğumu bilmek isterim?

Çok büyük ve geniş bir soru olduğunu biliyorum, ama lütfen arkasındaki tüm fikri nasıl anlayacağımı gösteren bazı işaretçilerle bana rehberlik edin.

Ben büyük kod taramalar yapmadım, ama ben doğru rehberlik eğer bunu yaparken hiçbir sorun var sizi temin ederim.

Yanıtlar:


16
  1. Aygıt takılı ve aygıtın donanım veri yolunu yöneten yazılım bir kesinti (veya donanım düzeyinde başka bir bildirim) alıyor ve veri yolu sürücüsü bağlı aygıtları numaralandırıyor veya aygıtı tanımlamak için diğer veriyoluna özgü donanım eylemlerini gerçekleştiriyor.
  2. Çekirdek , donanımın veri yolu / aygıt / vb. Tanımlayıcısını kullanarak / sbin / modprobe öğesini çağırarak yeni donanım için bir sürücü yüklemesini ister .
  3. Kullanıcı alanında, modprobe sürücü tarafından belirtilen eşleşen bir diğer adı bulmaya çalışır. ( /lib/modules/$(uname -r)/modules.aliasTam liste için bakınız .) Bunlar, donanım arayüzüne bağlı olarak farklı görünecektir. Örneğin, pci:v0000102Bd00002527sv*sd*bc*sc*i*bir PCI aygıt satıcısı 102B, aygıt 2527 ve alt tedarikçi vb usb:v2040p4982d*dc*dsc*dp*ic*isc*ip*. Veya USB için herhangi bir şey için:.
  4. aygıt sürücüsü yüklendikten sonra (veya zaten sürücüsü olan yeni bir aygıt başlatıldığında), çekirdekteki sürücü udevkullanıcı aygıtına yüklenen aygıt için bir bildirim gönderir .
  5. udevbildirimi /lib/udev/rules.d/ve içindeki kurallar listesiyle eşleştirir /etc/udev/rules.d. Buradan, davranış kurallara göre son derece uzmanlaşmıştır.
  6. Bir USB disk durumunda, 80-udisks.rulesdosya muhtemelen çalışmak için en iyi yerdir. Bu kurallar , bir diskin türünü ve içeriğini araştırmak için blkid ve diğer yardımcılar gibi şeyleri kullanacak ve ENV{UDISKS_PRESENTATION_HIDE}="1"bir nedenden ötürü diski yok saymak gibi her türlü yapılandırma değerini dolduracaktır . Ayrıntılar için bkz. "Man 7 udisks".
  7. Udisks-cin cihazları görünmesi için saatler Udev veritabanı ve DBus üzerinde cihazların bir keşfedilebilir liste olarak hediye onlara bunları. (Bkz. "Udisks --enumerate".)
  8. Udksks'te çeşitli eylemler yapılandırılır ve bu eylemlere izin verme ilkesi ilke dosyasında görülebilir /usr/share/polkit-1/actions/org.freedesktop.udisks.policy. (Kimler monte edebilir, takabilir, vb.)
  9. Cihazlarda ilgilendi Hizmetler gelen DBus olayları dinleyecek udisks ve belirli şartları yerine getirdikleri görünce eylemleri. Örneğin, GNOME'un Nautilus (yoluyla gvfs hacim monitörü) (yoluyla cihazlar için Automounting talep edecek udisks yukarıda belirtilen politikasını, kontrol edecektir).
  10. Bir dosya sistemi kurulduktan sonra, aynı dinleme hizmetleri daha fazla işlem gerçekleştirecektir. Örneğin, Nautilus bir dosya sisteminde ortak fotoğraf depolama dizini bulunduğunda F-Spot'u açmak isteyip istemediğinizi soracaktır DCIM.

1
Belki bunun önyükleme sırasında nasıl farklı olduğunu biliyorsunuz (sadece 1. adımın farklı olduğunu varsayıyorum)? Bir aygıt önyükleme sırasında neden algılanamadı, ancak manuel yeniden taktıktan sonra doğru şekilde yüklendi?
naktinis
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.