2010-05-26 8 views
22

यदि आपके पास एक/dev डिवाइस नोड है और इसकी प्रमुख/मामूली संख्याएं मैं कर्नेल मॉड्यूल नाम को कैसे जानता हूं जो इस नोड को निर्यात करता है?लिनक्स: मैं मॉड्यूल को कैसे जानता हूं जो डिवाइस नोड निर्यात करता है?

उत्तर

22

लघु जवाब:

cd /sys/dev/char/major:minor/device/driver/ 
ls -al | grep module 

प्रत्येक डिवाइस आम तौर पर एक ड्राइवर के साथ जुड़ा हुआ है, और यह सब क्या "डिवाइस मॉडल" के बारे में है। sysfs फाइल सिस्टम में इस डिवाइस और उनके संबंधित ड्राइवर का प्रतिनिधित्व शामिल है। असुविधाजनक रूप से, ऐसा लगता है कि सभी sysfs में डिवाइस नोड्स का प्रतिनिधित्व नहीं होता है, इसलिए यह केवल तब लागू होता है जब आपकी/sys निर्देशिका में एक/dev निर्देशिका होती है। के एक उदाहरण लेते हैं, /dev/video0

मेरी बोर्ड पर के साथ, ls -al /dev/video0 उत्पादन होता है

crw------- 1 root  root  81, 0 Jan 1 00:00 video0 

तो प्रमुख संख्या 81 है और छोटी संख्या sysfs में 0. आइए गोता है:

# cd /sys 
# ls 
block  class  devices fs  module 
bus  dev  firmware kernel 

sys/dev निर्देशिका में सिस्टम के चार और ब्लॉक डिवाइस के लिए प्रविष्टि है:

# cd dev 
# cd char 
# ls 
10:61 13:64 1:3 1:8 249:0 252:0 29:0 4:65 81:0 89:1 
10:62 1:1 1:5 1:9 250:0 253:0 29:1 5:0 81:2 
10:63 1:11 1:7 248:0 251:0 254:0 4:64 5:1 81:3 

अजीब नामों के साथ ये लिंक क्या हैं? प्रमुख और मामूली संख्या, 81 और 0 याद रखें? के इस लिंक का अनुसरण करते हैं:

#cd major:minor (ie 81:0) 
#ls -al 
drwxr-xr-x 2 root  root   0 Jan 1 01:56 . 
drwxr-xr-x 3 root  root   0 Jan 1 01:56 .. 
-r--r--r-- 1 root  root   4096 Jan 1 01:56 dev 
lrwxrwxrwx 1 root  root   0 Jan 1 01:56 device -> ../../../vpfe-capture 
-r--r--r-- 1 root  root   4096 Jan 1 01:56 index 
-r--r--r-- 1 root  root   4096 Jan 1 01:56 name 
lrwxrwxrwx 1 root  root   0 Jan 1 01:56 subsystem -> ../../../../../class/video4linux 
-rw-r--r-- 1 root  root   4096 Jan 1 01:56 uevent 

अब हम देख सकते हैं कि इस डिवाइस इशारा है, जो कैसे डिवाइस यूज़रस्पेस को प्रस्तुत किया जाता है, एक कर्नेल डिवाइस के साथ जुड़ा हुआ है। यह संघ एक लिंक के माध्यम से किया जाता है। अगर हम इस लिंक का पालन करते हैं, तो हम एक ड्राइवर लिंक के साथ एक निर्देशिका में समाप्त होते हैं।

# ls -al 
drwxr-xr-x 3 root  root   0 Jan 1 01:56 . 
drwxr-xr-x 25 root  root   0 Jan 1 00:00 .. 
lrwxrwxrwx 1 root  root   0 Jan 1 01:56 driver -> ../../../bus/platform/drivers/vpfe-capture 
-r--r--r-- 1 root  root   4096 Jan 1 01:56 modalias 
lrwxrwxrwx 1 root  root   0 Jan 1 01:56 subsystem -> ../../../bus/platform 
-rw-r--r-- 1 root  root   4096 Jan 1 01:56 uevent 
drwxr-xr-x 3 root  root   0 Jan 1 01:56 video4linux 

तो यहाँ मॉड्यूल के नाम vpfe_capture

+0

एक महान स्पष्टीकरण Thats धन्यवाद है,: ड्राइवर का नाम आमतौर पर मॉड्यूल का नाम है! –

2

इस प्रश्न का उत्तर कई कारकों पर आधारित है। उदाहरण के लिए, यदि आप udev, devfs, pre-devfs, आदि चला रहे हैं

यदि आप उबंटू (या अन्य समान रूप से आधुनिक डिस्ट्रो) का उपयोग कर रहे हैं तो udevadm कमांड आप जो चाहते हैं वह हो सकता है।

% udevadm info -q path -n /dev/cdrom 
/devices/pci0000:00/0000:00:1f.1/host3/target3:0:0/3:0:0:0/block/sr0 

तो, मेरी/dev/सीडीरॉम sr चालक है, जो sr_mod कर्नेल मॉड्यूल में रहता है के द्वारा प्रदान की जाती है। मुझे एक आदेश के बारे में पता नहीं है जो /dev/cdrom को तर्क के रूप में लेता है और आउटपुट के रूप में sr_mod प्रिंट करता है।

संबंधित मुद्दे