误删文件导致内核模块启动依赖故障使摄像头无法使用的解决

所使用的操作系统是:Deepin Linux,本文所解决的问题是:因误删文件导致内核模块启动依赖故障使摄像头无法使用。

近日apt、dpkg清理文件时,自动卸载部分lib库,导致摄像头无法使用,失去/dev/video0,重装摄像头驱动也无法解决。

使用dmesg检索到uvcvideo加载报错:

[ 1920.523129] uvcvideo: Unknown symbol vb2_queue_init (err 0)

[ 1920.523167] uvcvideo: Unknown symbol v4l2_fh_exit (err 0)

[ 1920.523211] uvcvideo: Unknown symbol video_ioctl2 (err 0)

[ 1920.523271] uvcvideo: Unknown symbol media_device_unregister (err 0)

[ 1920.523308] uvcvideo: Unknown symbol vb2_streamoff (err 0)

[ 1920.523345] uvcvideo: Unknown symbol vb2_queue_release (err 0)

[ 1920.523388] uvcvideo: Unknown symbol media_device_init (err 0)

在一阵摸索后,手工加载内核模块成功救活摄像头。

下面是解决方法,按照如下操作:

报错Unknown symbol的原因是由于uvcvideo依赖的模块未成功启动或未启动,通过modinfo uvcvideo.ko查看依赖的模块时什么:

depends: videodev,videobuf2-core,videobuf2-v4l2,videobuf2-vmalloc,media

通过sudo insmod videobuf2-core加载这些模块,如果不成功再继续查看依赖,直到无错。

使用lsmod | grep video检查内核是否已经成功加载该模块。

通过以上方法,成功发现/dev/video0自动生成了,guvcview检查摄像头正常。

以上方法,仅能手工加载,不能在重启时自动加载,用sudo depmod重新扫描依赖再重启即可自动加载。

注:懒人直接sudo depmod && reboot,搞定。

栏目相关文章