Znajdowanie atrybutów zamontowanej karty SD

10

Moja karta SD jest automatycznie montowana jako / 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

W dmesg:

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

Chciałbym poznać kilka atrybutów - numer seryjny, identyfikator producenta itp., W których myślałem, że będą /sys/class. Szukałem /sys/class/scsi_disk/3:0:0:0/bez powodzenia.

Gdzie znajdę te informacje? Korzystam z najnowszej wersji Arch-linux.

Charles Pehlivanian
źródło

Odpowiedzi:

12

Właściwym sposobem na to, w Arch Linux, ale do tej pory we wszystkich systemach korzystających z udev , jest polecenie:

  sudo udevadm info -a -n /dev/sdb

w Twoim przypadku.

Edytować:

Odpowiedź na twój komentarz: Uważam, że się mylisz. Klasa jest widok z urządzeniem, które jest niezależne od szczegółów implementacji niskopoziomowych. Klasycznym przykładem jest dysk. Oczywiście możesz mieć dysk SCSI lub dysk ATA, ale na poziomie klasy są one tym samym. Ideą tej klasy jest umożliwienie użytkownikom budowania kodu przestrzeni użytkownika, który jest niezależny od tego, jak są podłączeni do sieci, jak działają, jakiego sterownika urządzenia używają i tak dalej. W pewnym sensie klasa jest najwyższym poziomem abstrakcji dostępnym jako model dla urządzeń.

Dlatego mylicie się, szukając takich szczegółów, jak dostawca karty SD (który, nawiasem mówiąc, powinien znajdować się w / sys / class / mmc_host , jeśli w ogóle) w / sys / class .

MariusMatutiae
źródło
1
Ok, to daje wszystkie te informacje. Ale - chociaż /sys/classmiałem być sposobem na nawigację /devbez wszystkich specyficznych dla urządzenia (ustawionych przez udev) hieracrchy? Czy się mylę?
Charles Pehlivanian
@CharlesPehlianian Zobacz edycję mojej odpowiedzi
MariusMatutiae
Ok - wtedy miałem złe wrażenie. Dzięki!
Charles Pehlivanian
@CharlesPehlivanian: Możesz uzyskać szczegółowe informacje za pośrednictwem /sys/class; patrz odpowiedź @ Roberta. To może nie być najlepszy sposób. Jednak w niektórych systemach (np. Android) udevadmnie jest dostępny.
LarsH
6

Dokładny układ zależy od sterownika, ale spróbuj wyszukać /sysniektóre słowa kluczowe specyficzne dla MMC (SD). Poniżej z wbudowanego systemu opartego na 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

Wpis na blogu Bunnie o shenanigansach na karcie SD jest dobrym miejscem do rozpoczęcia śledzenia wstecznego, co oznaczają te numery ID.

Robert Calhoun
źródło
Świetny. W moim przypadku dzięki tej odpowiedzi mogłem znaleźć większość atrybutów urządzeń SD i MMC. cid, csd, scr, date, fwrev, hwrev, manfid, name, oemid, serial ...
agfe2
2

Nie używam Arch Linux, ale „urządzenia USB” wymienia szczegółowe informacje o wszystkich urządzeniach USB, o których wie system, i zawierają następujące informacje o kluczu USB, który podłączyłem:

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
źródło
1
Dzięki, to daje mi to, o co prosiłem, ale chciałbym zrozumieć /sys/classtrochę lepiej, więc chciałbym odpowiedzieć na podstawie tego.
Charles Pehlivanian
1

Patrząc na / sys / class / scsi_disk odkryłem, że (w moim systemie), że są to symkinki do rzeczywistych dysków. Rzeczywiście, kiedy robię "ls -la / sys / class / scsi_disk /, pokazuje dowiązanie symboliczne dla 8: 0: 0: 0 do ../../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

Jeśli następnie przejdę do: / 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 Zawiera wiele plików, które, jak podejrzewam, są interesujące, w tym -

model = model of the drive
vendor = the drive vendor

Interesujące może być także parsowanie / 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
źródło
Kiedy to zrobisz lsw twoim /sys/devices/...katalogu, jak wskazujesz, dostaję dowiązanie symboliczne z powrotem do miejsca /sys/class/scsi_disk/8:0:0:0, gdzie zaczęło się moje pytanie. Nie widzę żadnych plików tylko dla modelu, dostawcy FUA, device, allow_restart, itp. Przeszukałem je bez powodzenia.
Charles Pehlivanian