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.

Alex Chamberlain
źródło
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.

Gilles „SO- przestań być zły”
źródło
@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'