जवाबों:
बस उपयोग करें /sys
।
उदाहरण। मैं अपने ईथरनेट कार्ड के लिए ड्राइवर ढूंढना चाहता हूं:
$ sudo lspci
...
02:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 01)
$ find /sys | grep drivers.*02:00
/sys/bus/pci/drivers/r8169/0000:02:00.0
यही कारण है r8169
।
पहले मुझे डिवाइस का उपयोग करके निर्देशांक खोजने की आवश्यकता है lspci
; तब मुझे ड्राइवर मिलता है जो इन निर्देशांक वाले उपकरणों के लिए उपयोग किया जाता है।
lspci -nk
आपको संलग्न ड्राइवर दिखाएंगे। सामान्य तौर पर खोज के लिए sysfs सही जगह है।
vendorID:productID
? इसके अलावा, क्या होगा अगर यह पीसीआई उपकरण नहीं है, और आप इसे केवल lsusb
उदाहरण के लिए देखते हैं ?
यहाँ एक छोटी स्क्रिप्ट लिखी गई है :
#!/bin/bash
for f in /sys/class/net/*; do
dev=$(basename $f)
driver=$(readlink $f/device/driver/module)
if [ $driver ]; then
driver=$(basename $driver)
fi
addr=$(cat $f/address)
operstate=$(cat $f/operstate)
printf "%10s [%s]: %10s (%s)\n" "$dev" "$addr" "$driver" "$operstate"
done
नमूना उत्पादन:
$ ~/what_eth_drivers.sh
eth0 [52:54:00:aa:bb:cc]: virtio_net (up)
eth1 [52:54:00:dd:ee:ff]: virtio_net (up)
eth2 [52:54:00:99:88:77]: virtio_net (up)
lo [00:00:00:00:00:00]: (unknown)
veth
अन्य आभासी चालकों को भी मिलेगा । IMHO एकमात्र समाधान का उपयोग ethtool
या है lshw
।
यदि आप स्पष्ट रूप से sysfs का उपयोग करना चाहते हैं और इन सभी आदेशों से निपटना नहीं चाहते हैं, जो अंततः sysfs वैसे भी अंदर दिखता है, तो यहाँ बताया गया है:
कहते हैं, eth6 के लिए मॉड्यूल / ड्राइवर क्या है? "sfc" यह है
# ls -l /sys/class/net/eth6/device/driver
lrwxrwxrwx 1 root root 0 Jan 22 12:30 /sys/class/net/eth6/device/driver ->
../../../../bus/pci/drivers/sfc
या अभी तक बेहतर है .. पढ़ने के लिए आप के लिए पथ को हल करने दें।
# readlink -f /sys/class/net/eth6/device/driver
/sys/bus/pci/drivers/sfc
इसलिए ... यह जानने के लिए कि आपके सभी नेटवर्क इंटरफेस के लिए ड्राइवर क्या हैं:
# ls -1 /sys/class/net/ | grep -v lo | xargs -n1 -I{} bash -c 'echo -n {} :" " ; basename `readlink -f /sys/class/net/{}/device/driver`'
eth0 : tg3
eth1 : tg3
eth10 : mlx4_core
eth11 : mlx4_core
eth2 : tg3
eth3 : tg3
eth4 : mlx4_core
eth5 : mlx4_core
eth6 : sfc
eth7 : sfc
eth8 : sfc
eth9 : sfc
आप lsmod
लिनक्स कर्नेल में लोड किए गए मॉड्यूल / डिवाइस ड्राइवरों की स्थिति प्राप्त करने के लिए कमांड का उपयोग कर सकते हैं ।
एक विशिष्ट उपकरण के लिए, आप dmesg |grep <device-name>
विवरण प्राप्त करने के लिए भी उपयोग कर सकते हैं ।
lspci -v
खुद से करता है।