I'm trying to install a driver for a USB DAQ box, which annoyingly, I have to compile myself. I believe I've succeeded -- I have two .ko files:
-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
I was able to run insmod on the first without incident, but when I try on the second, I get a flood of messages:
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
However, advdrv_core.ko provides these symbols. My kernel sure seems to have them in memory:
# 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]
Why does my insmod claim they're unknown symbols?
Edit: One of the answers below advised me to copy the files to /lib/modules and run depmod. So I did, using depmod's -v (verbose) option. Among the output were a bunch of lines like:
/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
Then I ran rmmod advdrv_core to make sure I was installing it fresh, ran modprobe advdrv_core, and finally ran modprobe usb4761.
Again, a bunch of failed symbols, including advdrv_unregister_driver.