Как определить, является ли жесткий диск внешним USB или внутренним?

Как определить, является ли жесткий диск внешним USB или внутренним?

Я хочу определить, является ли диск внешним или внутренним. У меня есть диск SATA, подключенный к порту USB через адаптер SATA-USB.

hdparm -I сообщает об этом как:

ATA device, with non-removable media
...
Transport: Serial, ATA8-AST, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0.

По-видимому, он получает эти данные напрямую с диска. Возможно ли, что hdparm определит фактический транспортный уровень, а не тот, о котором сообщает диск?

Я также пробовал lsusb. Это, кажется, бесполезно. Это читабельно для человека, но нет способа перекрестно ссылаться на его вывод с другими командами устройства. Итерация по шинам с помощью lsusb -D /dev/bus/usb/...тоже не кажется подходящей, хотя, возможно, я мог бы сделать что-то вродеfind /dev/bus | while read -r line; do if((lsusb -D $line | grep) CONTAINS SOME SUBSTRING MENTIONING THE DEVICE) then blah done

parted --listтакже не сообщается о том, что внешний диск работает через USB:

Model: ADATA SU 800 (scsi)

решение1

Я могу сказать следующее:

$ realpath /sys/block/sd*
/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:0/block/sdc

Примечания:

  • Если нет, realpathто, readlinkвозможно, это даст вам подсказку.
  • Запрос о конкретном устройстве, некоторых из них (как выше) или всех из них ( /sys/block/*).
  • В моем Kubuntu /sys/class/block/также содержатся записи для разделов (например sda1).

Решение POSIX:

$ for p in /sys/block/sd*; do (cd "$p" && pwd -P); done
/sys/devices/pci0000:00/0000:00:1f.2/ata1/host0/target0:0:0/0:0:0:0/block/sda
/sys/devices/pci0000:00/0000:00:1f.2/ata2/host1/target1:0:0/1:0:0:0/block/sdb
/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.2/2-1.2:1.0/host6/target6:0:0/6:0:0:0/block/sdc

Связанный контент