Linux, sysfs, флешки и жесткие диски USB

Есть ли способ отличить USB-накопители (флэш-память) от жестких дисков USB через libudev/sysfs в Linux? Если нет, есть ли способ напрямую запросить оборудование? Спасибо.


person Zaur Nasibov    schedule 13.02.2013    source источник
comment
Флэш-устройства USB обычно не реагируют должным образом на hdparm -I, поэтому, если вы получаете ошибку SG_IO, это обычно означает, что это флешка, а не вращающаяся пластина (я стесняюсь SSD, чтобы проверить эту теорию на банкомате).   -  person Petesh    schedule 14.02.2013
comment
Только что попробовал подключить SSD к устройству SATA‹-›USB — hdparam -I выдал почти ту же информацию, что и при запросе USB-накопителя :(   -  person Zaur Nasibov    schedule 14.02.2013
comment
Я проверил с помощью нескольких флешек, дисков и SSD и получил db.tt/F4BQZcDr. Я также использовал sg_inq на устройств и получил dropbox.com/s/cwbih24iqjvkfcb/sg_inq.txt — I не думаю, что я получил тот же ответ, что и вы, от hdparm.   -  person Petesh    schedule 14.02.2013
comment
@Petesh, я получаю SG_IO: bad/missing sense data, sb[]... как за SSD, так и за флешки. Я так понимаю, у вас такой же вывод в hdaparam -I. В выводе sg_inq (pastebin.com/0H8LCqmG) нет особых отличий.   -  person Zaur Nasibov    schedule 14.02.2013


Ответы (1)


Возможно, вы могли бы проверить подкласс устройства с помощью такого правила udev: ATTRS{bDeviceSubClass}=="xx". Я не знаю, сможете ли вы точно отличить флешки от настоящих дисков, используя только подкласс.

person kouk    schedule 13.02.2013
comment
К сожалению, это не работает :( Например, попробуйте подключить USB-накопитель, и lsusb --verbose даст bInterfaceSubClass 6 SCSI для накопителя Kingston Datatraveller 8 ГБ. - person Zaur Nasibov; 13.02.2013
comment
как насчет bDeviceSubclass? - person kouk; 13.02.2013
comment
Насколько мне известно, по подклассу нельзя отличить флешку от жесткого диска USB. - person fpmurphy; 13.02.2013
comment
этот ответ помогает? unix.stackexchange.com/questions/10755/ - person kouk; 13.02.2013