Який драйвер стоїть за певним файлом пристрою?


10

Давши файл пристрою, скажімо /dev/sdb, чи можна визначити, який драйвер стоїть за ним?

Зокрема, я хочу визначити, яким драйвером користуються мої пристрої зберігання даних. fdisk -lперелічує 2 пристрої: /dev/sdaі /dev/sdb. Один - це жорсткий диск SATA, а другий - пристрій масового зберігання USB - фактично SD-карта.

Як визначити, програмно, що це таке?

Я пишу програмне забезпечення, і я хочу захистити початківця від видалення їх жорстких дисків, дозволяючи їм знищити свої SD-карти.


Я припускаю, що ви працюєте з Linux, грунтуючись на виборі назви пристрою.
Жил "ТАК - перестань бути злим"

@Gilles Так, вибачте, це, мабуть, досить важлива інформація ... Дякую!
Алекс Чемберлен

Відповіді:


12

Запустіть udevadm info -a -n /dev/sdaі проаналізуйте вихід. Ви побачите подібні рядки

DRIVERS=="ahci"

для диска SATA за допомогою ahciдрайвера, або

DRIVERS=="usb-storage"

для пристрою, підключеного USB. Ви також зможете відобразити назви постачальників та моделей для підтвердження. Також,

ATTR{removable}=="1"

присутній на знімних пристроях.

Всю цю інформацію також можна отримати /sys(насправді, саме тут і udevadmслід шукати), але /sysінтерфейс час від часу змінюється, тому аналіз udevadmв довгостроковій перспективі є більш надійним.


@AlexChamberlain Вибачте, так, -nочікує шлях до блокового пристрою (щось під /dev), тоді як -pочікує шлях під /sys(наприклад -p /sys/block/sda).
Жил 'ТАК - перестань бути злим'
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.