gpt4 book ai didi

Linux:我怎么知道导出设备节点的模块?

转载 作者:IT王子 更新时间:2023-10-29 00:16:01 25 4
gpt4 key购买 nike

如果有一个/dev 设备节点及其主要/次要编号,我如何知道导出该节点的内核模块名称?

最佳答案

简答:

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 目录包含系统的字符设备和 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

关于Linux:我怎么知道导出设备节点的模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2911050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com