Encontrar atributos de la tarjeta SD montada

10

Mi tarjeta SD se monta automáticamente como / dev / sdb:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sr0     11:0    1  1024M  0 rom  
sda      8:0    0    80G  0 disk 
├─sda1   8:1    0    78G  0 part /
├─sda2   8:2    0     1K  0 part 
└─sda5   8:5    0     2G  0 part [SWAP]
sr1     11:1    1  1024M  0 rom  
sdb      8:16   1   7.4G  0 disk 
├─sdb1   8:17   1    56M  0 part /media/boot
└─sdb2   8:18   1   2.7G  0 part /media/af599925-1134-4b6e-8883-fb6a99cd58f1

En dmesg:

[ 1206.970596] sd 3:0:0:0: [sdb] Attached SCSI removable disk

Me gustaría conocer algunos atributos: número de serie, identificación del fabricante, etc. en los que pensé que estarían /sys/class. He buscado /sys/class/scsi_disk/3:0:0:0/sin suerte.

¿Dónde encontraría esta información? Estoy usando la última versión de Arch-linux.

Charles Pehlivanian
fuente

Respuestas:

12

La forma correcta de hacer esto, en Arch Linux pero ahora en todos los sistemas que usan udev , es el comando:

  sudo udevadm info -a -n /dev/sdb

en tu caso.

Editar:

Una respuesta a su comentario: creo que está equivocado. La clase es una vista de un dispositivo que es independiente de los detalles de implementación de bajo nivel. El ejemplo clásico es un disco. Por supuesto, puede tener un disco SCSI o un disco ATA, pero, a nivel de clase , son lo mismo. La idea de la clase es permitir a los usuarios crear código de espacio de usuario que sea independiente de cómo están conectados a la red, cómo funcionan, qué controlador de dispositivo usan, etc. En cierto modo, la clase es el nivel más alto de abstracción disponible como modelo para dispositivos.

Por lo tanto, está equivocado al buscar detalles como el proveedor de su tarjeta SD (que, por cierto, debe estar en / sys / class / mmc_host , si es que hay algo) dentro de / sys / class .

MariusMatutiae
fuente
1
Ok, esto da toda esa información. Pero, ¿aunque /sys/classse suponía que era una forma de navegar /devsin toda la udevjerarquía específica del dispositivo (establecida por )? ¿Estoy equivocado sobre eso?
Charles Pehlivanian
@CharlesPehlianian Vea la edición de mi respuesta
MariusMatutiae
Ok, estaba bajo la impresión equivocada entonces. ¡Gracias!
Charles Pehlivanian
@CharlesPehlivanian: Puede obtener esa información detallada a través de /sys/class; ver la respuesta de @ Robert. Puede que no sea la mejor manera. Sin embargo, en algunos sistemas (por ejemplo, Android), udevadmno está disponible.
LarsH
6

El diseño exacto depende del controlador, pero intente buscar /sysalgunas palabras clave específicas de MMC (SD). A continuación es de un sistema integrado basado en ARM:

$ find /sys -name "oemid"
/sys/class/mmc_host/mmc0/mmc0:aaaa/oemid
$ find /sys -name "cid"
/sys/class/mmc_host/mmc0/mmc0:aaaa/cid
$ find /sys -name "csd"
/sys/class/mmc_host/mmc0/mmc0:aaaa/csd

La entrada de blog de Bunnie sobre travesuras de tarjetas SD es un buen lugar para comenzar a rastrear lo que significan esos números de identificación.

Robert Calhoun
fuente
Excelente. En mi caso, con esta respuesta, pude encontrar la mayoría de los atributos de dispositivos SD y MMC. cid, csd, scr, fecha, fwrev, hwrev, manfid, nombre, oemid, serial ...
agfe2
2

No uso Arch Linux, pero "usb-devices" enumera los detalles de todos los dispositivos USB que conoce el sistema e incluye lo siguiente para una llave USB que conecté:

T:  Bus=03 Lev=02 Prnt=02 Port=02 Cnt=02 Dev#=  5 Spd=480 MxCh= 0
D:  Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs=  1
P:  Vendor=0781 ProdID=5567 Rev=01.26
S:  Manufacturer=SanDisk
S:  Product=Cruzer Blade
S:  SerialNumber=4C532000060624123092
C:  #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=200mA
I:  If#= 0 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=usb-storage
davidgo
fuente
1
Gracias, esto me da lo que estaba pidiendo, pero me gustaría entender /sys/classun poco mejor, así que me gustaría una respuesta basada en eso.
Charles Pehlivanian
1

Mirando / sys / class / scsi_disk descubrí que (en mi sistema) estos son enlaces simbólicos a discos reales. De hecho, cuando hago un "ls -la / sys / class / scsi_disk / muestra un enlace simbólico para 8: 0: 0: 0 a ../../devices/pci0000:00/0000:00:1c.4/0000 : 09: 00.0 / usb3 / 3-2 / 3-2.3 / 3-2.3: 1.0 / host8 / target8: 0: 0/8: 0: 0: 0 / scsi_disk / 8: 0: 0: 0

Si luego cambio a: / sys / devices / pci0000: 00/0000: 00: 1c.4 / 0000: 09: 00.0 / usb3 / 3-2 / 3-2.3 / 3-2.3: 1.0 / host8 / target8: 0: 0/8: 0: 0: 0 Tiene una serie de archivos que sospecho que son de su interés, incluidos:

model = model of the drive
vendor = the drive vendor

También podría ser interesante analizar / proc / scsi -

/proc/scsi/scsi          contains the description of each device and associated host
                         as scsi8 which lets me derive the "8" in the next bit.

/proc/scsi/usb-storage/8 contains the Vendor, Product and serial number
davidgo
fuente
Cuando lo haga lsen su /sys/devices/...directorio, como usted indica, me devuelve un enlace simbólico /sys/class/scsi_disk/8:0:0:0, que es donde comenzó mi pregunta. No veo ningún archivo para modelo, proveedor, solo FUA, device, allow_restart, etc. He buscado estos sin suerte.
Charles Pehlivanian