У меня есть несколько USB-накопителей, подключенных к компьютеру с Ubuntu Linux (Ubuntu 10.04.1, ядро 2.6. 32-25-386), и мне нужно различать их программно (по возможности из bash, но я не боюсь и компиляции) - мне нужно найти, какое блочное устройство соответствует какому физическому устройству (например, /dev/sdb1
-> устройство в порту USB 1; в моем случае одно устройство ~ один том).
Другими словами, я знаю, что у меня есть три аппаратных устройства, подключенных к USB портам; каждое из них отображается в системе как USB накопитель (как видно с помощью lsusb), создается как блочное устройство (/dev/sdb1
) и автоматически монтируется по UUID (/media/1234-5678
).
USB device block device mountpoint
USB device in port 2.2 <-> /dev/sdb1 <-> /media/1234-5678
Я не пытаюсь найти связь между блочным устройством и точкой монтирования; я пытаюсь найти связь между блочным устройством и USB-устройством, есть ли способ?
Почему? На диски будут производиться записи с непредсказуемым временем завершения. Мне нужно дать оператору какую-то индикацию типа "теперь вы можете извлечь диск в порту 2 (который второй слева)". Я выяснил, какой физический порт соответствует номеру порта на конкретной машине, и найти блочные устройства по точкам монтирования очень просто; теперь я застрял на сопоставлении логических USB-портов с блочными устройствами.
Я могу видеть диски с помощью lsusb :
Bus 001 Device 058: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
Bus 001 Device 060: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
Bus 001 Device 061: ID 067b:2517 Prolific Technology, Inc. Mass Storage Device
и я могу видеть их смонтированными (по их UUID):
/dev/sdb1 on /media/BC88-15C4 type vfat
/dev/sdc1 on /media/AE54-65AA type vfat
/dev/sdd1 on /media/58D2-FED1 type vfat
Теперь все диски одной модели от одного производителя, поэтому я не могу отличить их по этому признаку, и я не могу гарантировать, что они будут подключены в определенном порядке.
Я нашел /sys/bus/usb/devices
(список USB-устройств), но, похоже, это те же данные, что я получаю из lsusb - я не вижу там привязки к дискам.
Есть также /sys/block/sdb
и /sys/block/sdb/sdb1
(блочное устройство и его первый раздел; аналогично для sdc
и sdd
), но опять же, я не вижу привязки к устройствам.