Driver apa yang ada di belakang file perangkat tertentu?

10

Diberikan file perangkat, katakanlah /dev/sdb, apakah mungkin untuk menentukan driver apa yang ada di belakangnya?

Secara khusus, saya ingin menentukan driver apa yang digunakan perangkat penyimpanan saya. fdisk -ldaftar 2 perangkat: /dev/sdadan /dev/sdb. Salah satunya adalah hard drive SATA dan yang lainnya adalah perangkat USB Mass Storage - sebenarnya kartu SD.

Bagaimana cara menentukan, secara terprogram, yang mana?

Saya sedang menulis perangkat lunak, dan saya ingin melindungi pemula dari melenyapkan hard drive mereka, sementara memungkinkan mereka untuk melenyapkan kartu SD mereka.

Alex Chamberlain
sumber
Saya berasumsi Anda menjalankan Linux, berdasarkan pilihan nama perangkat Anda.
Gilles 'SANGAT berhenti menjadi jahat'
@ Gilles Ya, maaf itu mungkin informasi yang cukup penting ... Terima kasih!
Alex Chamberlain

Jawaban:

12

Jalankan udevadm info -a -n /dev/sdadan parsing output. Anda akan melihat garis seperti

DRIVERS=="ahci"

untuk disk SATA menggunakan ahcidriver, atau

DRIVERS=="usb-storage"

untuk perangkat yang terhubung USB. Anda juga dapat menampilkan nama vendor dan model untuk konfirmasi. Juga,

ATTR{removable}=="1"

hadir pada perangkat yang dapat dilepas.

Semua informasi ini juga dapat diperoleh melalui /sys(pada kenyataannya, itu adalah tempat udevadmuntuk melihat), tetapi /sysantarmuka berubah dari waktu ke waktu, sehingga penguraian udevadmlebih kuat dalam jangka panjang.

Gilles 'SANGAT berhenti menjadi jahat'
sumber
@AlexChamberlain Maaf, ya, -nmengharapkan jalur ke perangkat blok (sesuatu di bawah /dev) sedangkan -pmengharapkan jalur di bawah /sys(misalnya -p /sys/block/sda).
Gilles 'SANGAT berhenti menjadi jahat'