Поиск атрибутов смонтированной SD-карты

10

Моя SD-карта автоматически монтируется как / 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

В dmesg:

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

Я хотел бы знать несколько атрибутов - серийный номер, идентификатор производителя и т. Д., Которые, как я думал, будут в /sys/class. Я искал /sys/class/scsi_disk/3:0:0:0/без всякой удачи.

Где я могу найти эту информацию? Я использую последнюю версию Arch-Linux.

Чарльз Пехливанян
источник

Ответы:

12

Правильный способ сделать это в Arch Linux, но сейчас во всех системах, которые используют udev , это команда:

  sudo udevadm info -a -n /dev/sdb

в твоем случае.

Редактировать:

Ответ на ваш комментарий: Я считаю, что вы ошибаетесь. Класс представляет собой вид устройства , которое не зависит от деталей реализации низкоуровневых. Классический пример - диск. Конечно, у вас может быть диск SCSI или диск ATA, но на уровне класса это одно и то же. Идея этого класса заключается в том, чтобы позволить пользователям создавать код пользовательского пространства, который не зависит от того, как они подключены к сети, как они работают, какой драйвер устройства они используют и так далее. В некотором смысле, класс самый высокий уровень абстракции доступен в качестве модели для устройств.

Таким образом, вы не правы в поиске таких деталей, как поставщик вашей SD-карты (который, кстати, должен быть в / sys / class / mmc_host , если вообще есть) в / sys / class .

MariusMatutiae
источник
1
Хорошо, это дает всю эту информацию. Но - хотя я /sys/classдолжен был быть способом обхода /devбез всей специфической для устройства (установленной udev) иерархии? Я ошибаюсь по этому поводу?
Чарльз Пехливанян
@CharlesPehlianian См. Редактировать мой ответ
MariusMatutiae
Хорошо, тогда у меня сложилось неверное впечатление. Благодаря!
Чарльз Пехливанян
@CharlesPehlivanian: Вы можете получить эту подробную информацию через /sys/class; смотрите @ ответ Роберта. Это может быть не лучшим способом. Однако в некоторых системах (например, Android) udevadmэта функция недоступна.
LarsH
6

Точная компоновка зависит от драйвера, но попробуйте поискать /sysнекоторые ключевые слова, специфичные для MMC (SD). Ниже из встроенной системы на основе 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

Запись в блоге Банни о махинациях с SD-картами - это хорошее место, чтобы начать отслеживать, что означают эти идентификационные номера.

Роберт Калхун
источник
Отлично. В моем случае с помощью этого ответа я смог найти большинство атрибутов устройств SD и MMC. cid, csd, scr, дата, fwrev, hwrev, manfid, имя, oemid, серийный ...
agfe2
2

Я не использую Arch Linux, но «usb-devices» перечисляет детали всех USB-устройств, о которых знает система, и включает следующее для USB-ключа, который я подключил:

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
источник
1
Спасибо, это дает мне то, о чем я просил, но я хотел бы /sys/classнемного лучше понять , поэтому я хотел бы получить ответ, основанный на этом.
Чарльз Пехливанян
1

Просматривая / sys / class / scsi_disk, я обнаружил (в моей системе), что это символические ссылки на реальные диски. Действительно, когда я делаю "ls -la / sys / class / scsi_disk /", он показывает символическую ссылку для 8: 0: 0: 0 на ../../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

Если я затем переключусь на: / 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 В нем есть несколько файлов, которые, я подозреваю, представляют для вас интерес, в том числе -

model = model of the drive
vendor = the drive vendor

Также интерес может быть разбор / 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
источник
Когда вы делаете lsв вашем /sys/devices/...каталоге, как вы указываете, я получаю символическую ссылку /sys/class/scsi_disk/8:0:0:0, откуда и начался мой вопрос. Я не вижу файлов для модели, поставщика, только FUA, device, allow_restartи т. Д. Я искал их без удачи.
Чарльз Пехливанян