2010-05-26 61 views

回答

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號和次號爲0 讓我們深入到sysfs的:

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

sys/dev目錄包含系統的char和block設備的條目:

# 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

那是一個很好的解釋,謝謝! – 2010-05-27 04:48:29

2

對於這個問題的答案很可能根據多種因素而有所不同。例如,如果您正在運行udev,devfs,pre-devfs等。

如果您使用的是Ubuntu(或另一個同樣現代的發行版),那麼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/cdrom是否被通過sr驅動程序,它駐留在sr_mod內核模塊中提供。我不知道以/dev/cdrom作爲參數並打印sr_mod作爲輸出的命令。