Jaki sterownik kryje się za określonym plikiem urządzenia?


10

Powiedzmy /dev/sdb, że na podstawie pliku urządzenia można ustalić, który sterownik za nim stoi?

W szczególności chcę ustalić, jakiego sterownika używają moje urządzenia pamięci masowej. fdisk -lwyświetla 2 urządzenia: /dev/sdai /dev/sdb. Jeden to dysk twardy SATA, a drugi to urządzenie pamięci masowej USB - właściwie karta SD.

Jak programowo ustalić, która jest która?

Piszę oprogramowanie i chcę uchronić początkującego przed zatarciem dysków twardych, jednocześnie pozwalając na zatarcie kart SD.


Zakładam, że używasz Linuksa w oparciu o wybór nazwy urządzenia.
Gilles 'SO - przestań być zły'

@Gilles Tak, przepraszam, to prawdopodobnie ważna informacja ... Dzięki!
Alex Chamberlain,

Odpowiedzi:


12

Uruchom udevadm info -a -n /dev/sdai przeanalizuj dane wyjściowe. Zobaczysz takie linie

DRIVERS=="ahci"

dla dysku SATA przy użyciu ahcisterownika, lub

DRIVERS=="usb-storage"

dla urządzenia podłączonego przez USB. Będziesz także mógł wyświetlać nazwy dostawców i modeli w celu potwierdzenia. Również,

ATTR{removable}=="1"

jest obecny na urządzeniach wymiennych.

Wszystkie te informacje można również uzyskać poprzez /sys(w rzeczywistości właśnie tam udevadmnależy szukać), ale /sysinterfejs zmienia się od czasu do czasu, więc parsowanie udevadmjest bardziej niezawodne w dłuższej perspektywie.


@AlexChamberlain Przepraszamy, tak, -noczekuje ścieżki do urządzenia blokowego (coś poniżej /dev), podczas -pgdy ścieżka oczekuje /sys(np -p /sys/block/sda.).
Gilles 'SO - przestań być zły'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.