Como saber onde está o driver para um dispositivo?

1

Digamos que eu tenha um dispositivo de mouse e eu possa ver os eventos de toque de /dev/input.mice , mas eu estava pensando onde está o driver.

    
por Mero 22.10.2015 / 13:07

2 respostas

0

geralmente os drivers vêm na forma de módulos do kernel. estes são armazenados em /lib/modules/<kernel-version> . você pode descobrir o que seu <kernel-version> está usando:

uname -r

como exemplo, você pode encontrar o diretório modules assim:

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

e, em seguida, cd com cd /lib/modules/$(uname -r) . os módulos são separados em suas respectivas pastas, no entanto, alguns módulos são construídos no próprio kernel, e eu estou supondo que drivers genéricos, como drivers de mouse e de teclado, seriam embutidos.

Eu não estou 100% certo de que isso responde à sua pergunta, pois parece que você pode querer encontrar um driver de mouse que não "exista" como tal se você estiver procurando por ele como um arquivo físico, mas espero ajuda.

    
por Joe 22.10.2015 / 13:37
0

As informações sobre o driver usado normalmente estão nas mensagens do kernel disponíveis em dmesg e normalmente disponíveis no arquivo /var/log/syslog e nos arquivos rotacionados relativos (os antigos foram renomeados e compactados como syslog.2.gz etc ...).

Por exemplo, vamos inserir um mouse sem fio no meu sistema. No final do syslog eu posso encontrar:

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

... temos um novo dispositivo, que é gerenciado pela camada "input" e, mais especificamente, pelo driver "hid-generic" (existem dois dispositivos, porque há o receptor sem fio e o mouse adequados).

Você pode ir até as fontes do Linux e encontrá-las; hid-generic , por exemplo, está em link , que parece um stub para a implementação básica em link ( note este é um link para o kernel Linus Torvalds --- não é o que está realmente usando o Ubuntu --- não deve ser difícil encontrá-lo ).

Uma vez compilado, ele terminará no kernel (se compilado "nele") ou mais normalmente como um módulo, sob o diretório /lib/modules/your-kernel-version-here/... etc. Por exemplo, no meu sistema, eu o tenho em /lib/modules/3.19.0-31-generic/kernel/drivers/hid/hid-generic.ko .

    
por Rmano 22.10.2015 / 14:14