Localizando atributos do cartão SD montado

10

Meu cartão SD é montado automaticamente 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

Em dmesg:

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

Gostaria de conhecer alguns atributos - número de série, identificação do fabricante, etc., que eu pensava estar /sys/class. Eu procurei /sys/class/scsi_disk/3:0:0:0/sem sorte.

Onde eu encontraria essa informação? Estou usando a versão mais recente do Arch-linux.

Charles Pehlivanian
fonte

Respostas:

12

A maneira correta de fazer isso, no Arch Linux, mas agora em todos os sistemas que usam o udev , é o comando:

  sudo udevadm info -a -n /dev/sdb

no seu caso.

Editar:

Uma resposta ao seu comentário: acredito que você está enganado. A classe é uma visualização de um dispositivo independente dos detalhes de implementação de baixo nível. O exemplo clássico é um disco. É claro que você pode ter um disco SCSI ou um disco ATA, mas, no nível da classe , eles são a mesma coisa. A idéia da classe é permitir que os usuários criem código de espaço do usuário que seja independente de como eles estão conectados à rede, como eles funcionam, qual driver de dispositivo eles usam e assim por diante. De certa forma, a classe é o nível mais alto de abstração disponível como modelo para dispositivos.

Portanto, você está errado ao procurar por detalhes como o fornecedor do seu cartão SD (que, a propósito, deve estar em / sys / class / mmc_host , se houver alguma coisa) dentro de / sys / class .

MariusMatutiae
fonte
1
Ok, isso dá toda essa informação. Mas - eu /sys/classdeveria ser uma maneira de navegar /devsem toda a udevhierarquia específica do dispositivo (definida por )? Estou errado sobre isso?
Charles Pehlivanian
@CharlesPehlianian Veja o Edit na minha resposta
MariusMatutiae 5/14
Ok - eu estava com a impressão errada então. Obrigado!
Charles Pehlivanian
@CharlesPehlivanian: Você pode obter informações detalhadas via /sys/class; veja a resposta de @ Robert. Pode não ser o melhor caminho. No entanto, em alguns sistemas (por exemplo, Android), udevadmnão está disponível.
LarsH 23/10
6

O layout exato depende do driver, mas tente pesquisar /sysalgumas palavras-chave específicas do MMC (SD). Abaixo está um sistema embarcado baseado em 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

A entrada de blog de Bunnie nas travessuras dos cartões SD é um bom lugar para começar a rastrear o que significam esses números de identificação.

Robert Calhoun
fonte
Ótimo. No meu caso, com esta resposta, eu pude encontrar a maioria dos atributos de dispositivos SD e MMC. cid, csd, scr, data, fwrev, hwrev, manfid, nome, oemid, serial ...
agfe2
2

Não uso o Arch Linux, mas "usb-devices" lista os detalhes de todos os dispositivos USB que o sistema conhece e incluiu o seguinte para uma chave USB que eu conectei:

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
fonte
1
Obrigado, isso me dá o que eu estava pedindo, mas eu gostaria de entender /sys/classum pouco melhor, então gostaria de uma resposta com base nisso.
Charles Pehlivanian
1

Olhando para / sys / class / scsi_disk, descobri que (no meu sistema) esses são symkinks para discos reais. De fato, quando eu faço um "ls -la / sys / class / scsi_disk / ele mostra um link simbólico de 8: 0: 0: 0 para ../../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

Se eu mudar para: / 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 Ele tem vários arquivos que, suspeito, são do seu interesse, incluindo:

model = model of the drive
vendor = the drive vendor

Também pode ser interessante analisar / 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
fonte
Quando faço lsno seu /sys/devices/...diretório, como você indica, recebo um link simbólico de volta /sys/class/scsi_disk/8:0:0:0, onde foi iniciada a minha pergunta. Não vejo nenhum arquivo de modelo, fornecedor FUA, device, allow_restart, etc. Eu os procurei sem sorte.
Charles Pehlivanian