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

Kar*_*ime 5 linux filesystems

ls /dev 
Run Code Online (Sandbox Code Playgroud)

命令列出设备文件。

如何知道与这些设备文件相关联的驱动程序/major_numbers/minor_numbers?

Flu*_*lup 5

ls -l /dev 会给你主要和次要号码,例如

crw-rw---- 1 根拨出 4, 64 Apr 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给

0000000000000000 t tty_drivers_open
0000000000000000 t show_tty_range
0000000000000000 t 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在内核本身而不是模块中,所以方括号中没有任何内容。

这种方法不是确定的,但应该让您对控制代码所在的位置有所了解。


pet*_*rph 3

使用-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
...
Run Code Online (Sandbox Code Playgroud)

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
...
Run Code Online (Sandbox Code Playgroud)