Estou tentando instalar um driver para uma caixa de DAQ USB , que irritantemente, eu tenho que me recompor. Eu acredito que eu consegui - eu tenho dois arquivos .ko:
-rw-r--r-- 1 root root 45271 2010-03-18 21:24 advdrv_core.ko
-rw-r--r-- 1 root root 24312 2010-03-18 21:24 usb4761.ko
Consegui executar o insmod no primeiro sem incidentes, mas, quando experimento o segundo, recebo uma enxurrada de mensagens:
kernel: [686782.106547] usb4761: no symbol version for adv_process_info_check_event
kernel: [686782.106555] usb4761: Unknown symbol adv_process_info_check_event
kernel: [686782.106691] usb4761: no symbol version for advdrv_unregister_driver
kernel: [686782.106695] usb4761: Unknown symbol advdrv_unregister_driver
No entanto, advdrv_core.ko fornece esses símbolos. Meu kernel com certeza parece tê-los na memória:
# cat /proc/kallsyms | grep advdrv_unregister_driver
f8d88504 r __ksymtab_advdrv_unregister_driver [advdrv_core]
f8d888d2 r __kstrtab_advdrv_unregister_driver [advdrv_core]
f8d885a4 r __kcrctab_advdrv_unregister_driver [advdrv_core]
086eb8fb a __crc_advdrv_unregister_driver [advdrv_core]
f8d86e90 t advdrv_unregister_driver [advdrv_core]
Por que meu insmod afirma que eles são símbolos desconhecidos?
Edit: Uma das respostas abaixo me avisou para copiar os arquivos para / lib / modules e rodar o depmod. Então eu fiz, usando a opção -v (verbose) do depmod. Entre os resultados, havia um monte de linhas como:
/lib/modules/2.6.27-7-generic/kernel/drivers/pcmcia/usb4761.ko needs "advdrv_unregister_driver": /lib/modules/2.6.27-7-generic/kernel/drivers/pcmcia/advdrv_core.ko
Em seguida, executei rmmod advdrv_core para ter certeza de que estava instalando, executei o modprobe advdrv_core e finalmente executei o modprobe usb4761.
Novamente, um monte de símbolos com falha, incluindo advdrv_unregister_driver.