有关设备文件的信息:/dev

有关设备文件的信息:/dev
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
...

相关内容