Di Linux, diberikan:
- perangkat, misalnya
/dev/sda
, - dan angka mayor dan minornya, misalnya
8, 0
,
bagaimana saya bisa tahu modul / driver mana yang "mengemudi" itu?
Dapatkah saya menggali /sys
atau /proc
menemukan itu?
linux
drivers
kernel-modules
Totor
sumber
sumber
lsmod
,/proc/modules
danmodinfo
?Jawaban:
Untuk mendapatkan informasi ini dari
sysfs
file perangkat, pertama-tama tentukan angka utama / minor dengan melihat outputls -l
, misalnyaThe
8, 0
memberitahu kita bahwa jumlah utama adalah8
dan minor adalah0
. Dib
awal daftar juga memberi tahu kami bahwa itu adalah perangkat blok. Perangkat lain mungkin memilikic
perangkat karakter untuk di awal.Jika Anda kemudian melihat ke bawah
/sys/dev
, Anda akan melihat ada dua direktori. Satu memanggilblock
dan satu memanggilchar
. No-brainer di sini adalah untuk perangkat blok dan karakter. Setiap perangkat kemudian dapat diakses dengan nomor utama / minornya adalah direktori ini. Jika ada driver yang tersedia untuk perangkat, itu dapat ditemukan dengan membaca targetdriver
tautan didevice
sub-direktori ini atau . Misalnya, untuk saya,/dev/sda
saya cukup melakukannya:Ini menunjukkan bahwa
sd
driver digunakan untuk perangkat. Jika Anda tidak yakin apakah perangkat tersebut adalah perangkat blok atau karakter, di shell Anda dapat dengan mudah mengganti bagian ini dengan a*
. Ini juga berfungsi:Perangkat blok juga dapat diakses langsung melalui namanya melalui salah satu
/sys/block
atau/sys/class/block
. Misalnya:Perhatikan bahwa keberadaan berbagai direktori di
/sys
dapat berubah tergantung pada konfigurasi kernel. Juga tidak semua perangkat memilikidevice
subfolder. Misalnya, ini adalah kasus untuk file perangkat partisi seperti/dev/sda1
. Di sini Anda harus mengakses perangkat untuk seluruh disk (sayangnya tidak adasys
tautan untuk ini).Hal terakhir yang dapat berguna untuk dilakukan adalah membuat daftar driver untuk semua perangkat yang tersedia. Untuk ini, Anda dapat menggunakan gumpalan untuk memilih semua direktori di mana tautan driver ada. Misalnya:
Akhirnya, untuk menyimpang dari pertanyaan sedikit, saya akan menambahkan
/sys
trik gumpalan lain untuk mendapatkan perspektif yang lebih luas tentang driver yang digunakan oleh perangkat mana (meskipun tidak harus mereka yang memiliki file perangkat):Memperbarui
Melihat lebih dekat pada output dari
udevadm
, tampaknya berfungsi dengan menemukan/sys
direktori kanonik (seperti yang akan Anda dapatkan jika Anda mereferensikan direktori utama / minor di atas), kemudian bekerja dengan cara menaiki pohon direktori, mencetak semua informasi yang ditemukan. Dengan cara ini Anda mendapatkan informasi tentang perangkat induk dan driver apa pun yang mereka gunakan juga.Untuk bereksperimen dengan ini saya menulis skrip di bawah ini untuk menaiki pohon direktori dan menampilkan informasi pada setiap tingkat yang relevan.
udev
tampaknya mencari file yang dapat dibaca di setiap tingkat, dengan nama dan isinya dimasukkanATTRS
. Alih-alih melakukan ini, saya menampilkan kontenuevent
file di setiap tingkat (tampaknya keberadaan ini mendefinisikan tingkat yang berbeda daripada hanya subdirektori). Saya juga menunjukkan nama samaran dari tautan subsistem yang saya temukan dan ini menunjukkan bagaimana perangkat ini cocok dengan hierarki ini.udevadm
tidak menampilkan informasi yang sama, jadi ini adalah alat pelengkap yang bagus. Informasi perangkat induk (mis.PCI
Informasi) juga berguna jika Anda ingin mencocokkan output alat lain sepertilshw
ke perangkat tingkat yang lebih tinggi.sumber
udevadm
jawabannya akan memberi Andasd
danahci
. Apakah ada cara untuk menentukanahci
apakah digunakan juga?device/device/
, jadireadlink
perintah saya terlihat sepertireadlink /sys/dev/char/XX\:Y/device/device/driver
.Anda dapat menggunakan
udevadm
alat untuk menemukan ini.Perintahnya adalah
udevadm info -a -n /dev/sda
, dan kemudian lihatDRIVER==
parameternya.Ini menunjukkan bahwa sebenarnya ada 2 driver yang terlibat dalam menyediakan perangkat ini,
sd
danahci
. Yang pertama,sd
bertanggung jawab langsung untuk/dev/sda
perangkat, tetapi menggunakanahci
driver di bawahnya.Output dari
udevadm
perintah terlihat seperti ini, dan termasuk deskripsi cara kerjanya.sumber
udevadm
dihapus (atau bahkan disarankan)? Saya tidak dapat menemukan apa pun yang bahkan memberi isyarat pada hal itu.Gunakan perintah hwinfo dan model output dan driver. Jika tidak ada driver itu tidak akan ditampilkan. Misalnya untuk disk:
Untuk kartu jaringan:
Untuk perangkat USB:
Gunakan hwinfo --help untuk mencari tahu tipe perangkat lain apa yang dapat Anda tanyakan. hwinfo diinstal secara default misalnya pada SUSE Linux.
sumber
--only
opsi. Misalnyahwinfo --block --only /dev/sda | grep ...
.lshw
adalah alat yang luar biasa untuk membuat daftar perangkat keras yang ditemukan di mesin Anda. Anda harus menginstalnya terlebih dahulu sebelum dijalankan.Gunakan
yum
atauapt-get
tergantung pada sistem yang Anda gunakan. Kemudian untuk secara khusus mencantumkan perangkat keras penyimpanan:Anda mungkin ingin menjalankannya
root
untuk mendapatkan semua informasi kembali.Jika tidak,
lspci
dapat juga memberikan informasi tentang perangkat keras Anda:Untuk mengetahui jumlah besar dan kecil suatu perangkat, jalankan
ls
saja.Dalam output ini,
b
inbrw-rw----.
berarti bahwa ini adalah perangkat blok. Digit8
dan0
masing-masing nomor utama dan kecil perangkat.sumber
lshw
danlspci
Anda dapat melihat modul yang digunakan oleh perangkat: konfigurasi: driver = ahci latency = 0 dan driver Kernel yang digunakan: ahci .