2011-12-08 21 views
5

Me gustaría usar libudev para ver ciertos dispositivos. Específicamente, deseo monitorear el almacenamiento extraíble: Discos duros USB, llaves USB, tarjetas SD, etc. La API de libudev le permite encontrar un dispositivo si conoce el 'subsistema' y 'devtype' de dicho dispositivo. Probé los dispositivos en mi computadora y usé udevadm para encontrar que todos los tipos de almacenamiento tenían un subsistema de dispositivo de 'bloque' -> 'scsi', pero no tengo idea de qué tipo de dispositivos tienen estos dispositivos. ¿Hay una lista de devtypes y subsistemas que pueda usar como referencia en alguna parte, o un mejor método para buscar devtype?Cómo identificar dispositivos con udev

+0

¿Ha encontrado una referencia global para devtypes y subsistemas? –

Respuesta

5

Puede obtener la lista de subsistemas con ls /sys/class/ Aunque no estoy seguro acerca de los tipos de dispositivos. Supongo que puede obtener esto usando:

ls -l /sys/class/scsi_disk/ 
total 0 
lrwxrwxrwx 1 root root 0 2011-12-07 21:20 0:0:0:0 -> ../../devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0 
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/vendor 
ATA  
cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/model 
ST9500325AS 

Puede probar otros archivos en el directorio del dispositivo.

De hecho, creo que necesita:

cat /sys/devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0/device/type 
0 

cat /usr/include/scsi/scsi.h | grep TYPE_ 
#define TYPE_DISK   0x00 
#define TYPE_TAPE   0x01 
#define TYPE_PROCESSOR  0x03 /* HP scanners use this */ 
#define TYPE_WORM   0x04 /* Treated as ROM by our system */ 
#define TYPE_ROM   0x05 
#define TYPE_SCANNER  0x06 
#define TYPE_MOD   0x07 /* Magneto-optical disk - 
#define TYPE_MEDIUM_CHANGER 0x08 
#define TYPE_ENCLOSURE 0x0d /* Enclosure Services Device */ 
#define TYPE_NO_LUN   0x7f 
+0

¿No hay una referencia global por ahí? La información que proporcionaste es realmente útil, pero solo para SCSI. Mi lector de tarjetas es tipo block-> mmc ... etc. Encontré este enlace, pero esperaba que hubiera algo más universal: http://wiki.xfce.org/dev/thunar-volman-udev – Prismatic

+0

Por lo que yo Sé que no hay nombres consistentes. Cada subsistema se maneja de manera diferente. Sin embargo, hay algunos programas de ayuda en/lib/udev/que es posible que desee ver. –

Cuestiones relacionadas