如何知道设备的驱动程序在哪里?

如何知道设备的驱动程序在哪里?

假设我有一个鼠标设备,我可以看到触摸事件/dev/input.mice但我在想司机在哪里。

答案1

通常驱动程序以内核模块的形式出现。它们存储在下/lib/modules/<kernel-version>。您可以找出您<kernel-version>正在使用的内容:

uname -r

例如,您可以像这样找到模块目录:

echo "Modules directory: /lib/modules/$(uname -r)"

然后cdcd /lib/modules/$(uname -r)。模块被分离到各自的文件夹中,但是一些模块内置于内核本身,我猜测诸如鼠标驱动程序和键盘驱动程序之类的通用驱动程序也会内置其中。

我不能 100% 确定这是否回答了您的问题,因为如果您正在将其作为物理文件进行寻找,那么您可能想要找到一个并不“存在”的鼠标驱动程序,但我希望这会有所帮助。

答案2

有关所用驱动程序的信息通常位于内核消息中,dmesg并且通常在文件/var/log/syslog和相对旋转的文件(旧文件重命名和压缩为syslog.2.gz等...)中可用。

例如,让我们在我的系统中插入一个无线鼠标。在系统日志的末尾我可以找到:

Oct 22 14:00:43 pern kernel: [100418.211599] usb 2-1.6: new full-speed USB device number 4 using ehci-pci
Oct 22 14:00:44 pern kernel: [100418.307225] usb 2-1.6: New USB device found, idVendor=046d, idProduct=c52f
Oct 22 14:00:44 pern kernel: [100418.307233] usb 2-1.6: New USB device strings: Mfr=1, Product=2, SerialNumber=0
Oct 22 14:00:44 pern kernel: [100418.307237] usb 2-1.6: Product: USB Receiver
Oct 22 14:00:44 pern kernel: [100418.307240] usb 2-1.6: Manufacturer: Logitech
Oct 22 14:00:44 pern kernel: [100418.309876] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.0/0003:046D:C52F.0004/input/input16
Oct 22 14:00:44 pern kernel: [100418.310216] hid-generic 0003:046D:C52F.0004: input,hidraw3: USB HID v1.11 Mouse [Logitech USB Receiver] on usb-0000:00:1d.0-1.6/input0
Oct 22 14:00:44 pern kernel: [100418.313053] input: Logitech USB Receiver as /devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6/2-1.6:1.1/0003:046D:C52F.0005/input/input17
Oct 22 14:00:44 pern kernel: [100418.367972] hid-generic 0003:046D:C52F.0005: input,hiddev0,hidraw4: USB HID v1.11 Device [Logitech USB Receiver] on usb-0000:00:1d.0-1.6/input1
Oct 22 14:00:44 pern mtp-probe: checking bus 2, device 4: "/sys/devices/pci0000:00/0000:00:1d.0/usb2/2-1/2-1.6"
Oct 22 14:00:44 pern mtp-probe: bus: 2, device: 4 was not an MTP device

...我们有一个新设备,它由“输入”层管理,更具体地说,由“hid-generic”驱动程序管理(有两个设备,因为有无线接收器和鼠标)。

您可以到 Linux 源代码中找到它;hid-generic例如http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/hid/hid-generic.c,这似乎是http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/hid/hid-core.c笔记这是 Linus Torvalds 内核的链接 --- 而不是真正使用 Ubuntu 的那个 --- 找到它应该不难)。

一旦编译完成,它将进入内核(如果“进入”内核的话)或者更正常地作为一个模块,在目录下/lib/modules/your-kernel-version-here/...等等。例如,在我的系统中,我有它在/lib/modules/3.19.0-31-generic/kernel/drivers/hid/hid-generic.ko

相关内容