为什么这个模块没有加载?

为什么这个模块没有加载?

我安装了第三方软件包librealsense。作为下载的一部分,它被设置uvcvideo为编译为内核模块。完成后,我重新启动到修改后的内核。我可以看到我的uvcvideo.ko文件,但由于某种原因它没有加载。这是怎么回事?

$ sudo modprobe uvcvideo
modprobe: ERROR: could not insert 'uvcvideo': Unknown symbol in module, or unknown parameter (see dmesg)

$ uname -r
4.4.0-47-generic
$ ls /lib/modules/4.4.0-47-generic/updates/dkms/
uvcvideo.ko  vboxguest.ko  vboxsf.ko  vboxvideo.ko

$ dmesg | grep uvcvideo
[   44.581338] uvcvideo: Unknown symbol vb2_queue_init (err 0)
[   44.581344] uvcvideo: Unknown symbol v4l2_fh_exit (err 0)
[   44.581354] uvcvideo: Unknown symbol video_ioctl2 (err 0)
[   44.581357] uvcvideo: Unknown symbol media_device_unregister (err 0)
[   44.581361] uvcvideo: Unknown symbol vb2_streamoff (err 0)
[   44.581363] uvcvideo: Unknown symbol media_entity_create_link (err 0)
[   44.581368] uvcvideo: Unknown symbol vb2_queue_release (err 0)
[   44.581373] uvcvideo: Unknown symbol vb2_poll (err 0)
[   44.581377] uvcvideo: Unknown symbol v4l2_fh_del (err 0)
[   44.581379] uvcvideo: Unknown symbol v4l2_fh_add (err 0)
[   44.581381] uvcvideo: Unknown symbol vb2_ops_wait_finish (err 0)
[   44.581391] uvcvideo: Unknown symbol vb2_dqbuf (err 0)
[   44.581395] uvcvideo: Unknown symbol __media_device_register (err 0)
[   44.581397] uvcvideo: Unknown symbol v4l2_subdev_init (err 0)
[   44.581403] uvcvideo: Unknown symbol vb2_reqbufs (err 0)
[   44.581405] uvcvideo: Unknown symbol v4l2_device_register_subdev (err 0)
[   44.581411] uvcvideo: Unknown symbol vb2_expbuf (err 0)
[   44.581415] uvcvideo: Unknown symbol video_devdata (err 0)
[   44.581417] uvcvideo: Unknown symbol vb2_streamon (err 0)
[   44.581419] uvcvideo: Unknown symbol v4l2_ctrl_replace (err 0)
[   44.581424] uvcvideo: Unknown symbol media_entity_init (err 0)
[   44.581426] uvcvideo: Unknown symbol vb2_querybuf (err 0)
[   44.581428] uvcvideo: Unknown symbol vb2_qbuf (err 0)
[   44.581434] uvcvideo: Unknown symbol vb2_buffer_done (err 0)
[   44.581437] uvcvideo: Unknown symbol vb2_plane_vaddr (err 0)
[   44.581439] uvcvideo: Unknown symbol v4l2_fh_init (err 0)
[   44.581442] uvcvideo: Unknown symbol video_unregister_device (err 0)
[   44.581444] uvcvideo: Unknown symbol v4l2_prio_init (err 0)
[   44.581448] uvcvideo: Unknown symbol v4l2_event_subscribe (err 0)
[   44.581452] uvcvideo: Unknown symbol vb2_vmalloc_memops (err 0)
[   44.581457] uvcvideo: Unknown symbol v4l2_device_register (err 0)
[   44.581459] uvcvideo: Unknown symbol media_entity_cleanup (err 0)
[   44.581464] uvcvideo: Unknown symbol v4l2_ctrl_merge (err 0)
[   44.581469] uvcvideo: Unknown symbol __video_register_device (err 0)
[   44.581472] uvcvideo: Unknown symbol vb2_ops_wait_prepare (err 0)
[   44.581475] uvcvideo: Unknown symbol vb2_create_bufs (err 0)
[   44.581478] uvcvideo: Unknown symbol v4l2_device_unregister (err 0)
[   44.581480] uvcvideo: Unknown symbol vb2_mmap (err 0)
[   44.581482] uvcvideo: Unknown symbol v4l2_event_queue_fh (err 0)
[   44.581487] uvcvideo: Unknown symbol v4l2_event_unsubscribe (err 0)

答案1

我已经修改了脚本以支持新内核(4.8.0-xx)。

关联:https://github.com/JJHu1993/librealsense-patch.git

``` 修补的内核模块已成功创建

卸载模块 uvcvideo 应用修补模块 uvcvideo 插入 uvcvideo 成功

脚本已成功完成。请参阅安装指南以获取进一步说明。

jjhu@jjhu-computer:~/projects/librealsense$ uname -r 4.8.0-52-generic

```

相关内容