ls /dev
命令列出设备文件。
如何知道相关驱动程序/major_numbers/minor_numbers 与那些设备文件?
答案1
ls -l /dev
会给你主要和次要号码,例如
crw-rw---- 1 根拨出 4, 64 四月 4 07:54 /dev/ttyS0
主设备号为 4,次设备号为 64。
然后你可以查看/proc/devices
主要号码。在这个例子中,我们有一个带有主设备号的字符设备(c
在行的开头)4
,并且在/proc/modules
我们找到
字符设备: ... 4 个终端 4 个终端
次要编号的分配取决于设备。
一些设备由核心内核代码驱动(例如tty
),而其他设备则由可加载模块管理(例如rfcomm
)。您可以尝试寻找/proc/modules
匹配的模块;或者查找/proc/kallsyms
模块名称。您将得到很多结果,但要查找的关键是方括号中是否存在字符串。例如,grep tty /proc/kallsyms
给出
0000000000000000t tty_drivers_open 0000000000000000t show_tty_range 0000000000000000t show_tty_driver ...
而grep rfcomm /proc/kallsyms
吉夫斯
0000000000000000 t rfcomm_apply_pn [rfcomm] 0000000000000000 t rfcomm_dlc_debugfs_open [rfcomm] 0000000000000000 t rfcomm_dlc_debugfs_show [rfcomm]
[rfcomm]
表示代码在rfcomm
模块中,而tty
在内核本身中而不是在模块中,因此方括号中不会出现任何内容。
此方法不是确定的,但应该可以让您了解控制代码所在的位置。
答案2
使用-l
显示数字的选项。
$ ls -l /dev/sda*
brw-rw---- 1 root disk 8, 0 Jan 22 10:34 /dev/sda
brw-rw---- 1 root disk 8, 1 Dec 4 13:24 /dev/sda1
brw-rw---- 1 root disk 8, 2 Dec 4 13:24 /dev/sda2
brw-rw---- 1 root disk 8, 3 Dec 4 13:24 /dev/sda3
...
stat
也显示这些(作为“设备类型”)
$ stat /dev/sda
File: '/dev/sda'
Size: 0 Blocks: 0 IO Block: 4096 block special file
Device: 5h/5d Inode: 3431 Links: 1 Device type: 8,0
...