总述

最近在看摄像头驱动,需要配置虚拟摄像头的驱动,但是教程里面是linux2.6内核的,实际电脑的是Ubuntu16,内核是linux4.15版本,从2.6到4.15内核好多文件发生了变化,所以我们该怎么操作呢?下面就让我给大家介绍一哈,怎么下载最新的内核并进行编译成虚拟摄像头驱动。

作者:良知犹存

转载授权以及围观:欢迎添加微信公众号:Conscience_Remains

1

查看并下载源码

使用命令查看当前系统的内核

uname -aLinux lyn 4.15.0-117-generic #118~16.04.1-Ubuntu SMP Tue Sep 8 14:54:40 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

可以看到内核版本是4.15,然后我们就可以去下载源码去了

去www.kernel.org找同版本的内核,如果没有请找最相近的内核代码

因为我的版本已经是4.15属于v4.x,所以选择了v4.x进入

最后用网页搜索选择了4.15的一个版本进行了下载

tar xzf linux-4.15.1.tar.gz 解压文件

新版本的linux下已经更名为vivid,可以用find寻找一下目录

之后就把

linux-4.15.1/drivers/media/platform/vivid/

目录下所有文件拷贝的一个文件夹下

2

进行VIVID驱动编译

首先我们看一下,在vivid文件目录下本来的Makefile文件,这个Makefile编译之后选项配置由CONFIG_VIDEO_VIVID这个变量控制,显然不符合我们的要求

首先编译我们需要选择编译的内核目录,首先我在linux的usr(usr被称为是Unix System Resource,即Unix系统资源的缩写。/usr 是系统核心所在,包含了所有的共享文件。它是 unix 系统中最重要的目录之一,涵盖了二进制文件,各种文档,各种头文件,还有各种库文件;还有诸多程序,例如 ftp,telnet 等等。)目录下寻找。

cd /usr/src/linux......

这样就可以看到对应的内核目录了

经过添加内核目录,然后添加上需要编译的文件,一个简单的驱动Makefile就做好了,当然这个也不是最完美的,请听我一一道来。

KERN_DIR = /usr/src/linux-headers-4.15.0-118-genericall:make -C $(KERN_DIR) M=`pwd` modules
clean:make -C $(KERN_DIR) M=`pwd` modules cleanrm -rf modules.orderobj-m := vivid-core.o vivid-ctrls.o vivid-vid-common.o vivid-vbi-gen.o \vivid-vid-cap.o vivid-vid-out.o vivid-kthread-cap.o vivid-kthread-out.o \vivid-radio-rx.o vivid-radio-tx.o vivid-radio-common.o \vivid-rds-gen.o vivid-sdr-cap.o vivid-vbi-cap.o vivid-vbi-out.o \vivid-osd.o vivid-cec.o

开始进行编译,出现一个error

/work/driver_and_test/vivid/vivid-ctrls.c:In function ‘vivid_vid_cap_s_ctrl’:
/work/driver_and_test/vivid/vivid-ctrls.c:346:3:error: ‘V4L2_COLORSPACE_ADOBERGB’ undeclared (first use in this function)V4L2_COLORSPACE_ADOBERGB,^
/work/driver_and_test/vivid/vivid-ctrls.c:346:3:note: each undeclared identifier is reported only once for each function itappears in
scripts/Makefile.build:337: recipe fortarget '/work/driver_and_test/vivid/vivid-ctrls.o' failed
make[2]: ***[/work/driver_and_test/vivid/vivid-ctrls.o] Error 1

出现了未定义V4L2_COLORSPACE_ADOBERGB变量的error

但是在正则表达式去搜索文件定义的时候发现vivid目录下所有文件都没有定义过,所以我直接选择进行出问题的地方进行注释

vi vivid-ctrls.c +346 //注释掉相关定义

继续编译出现另一处类似的错误,继续注释掉

不过这次用这个Makefile编译完之后,我们编译出了好多个.ko文件,在实际加载驱动时候很不方便

所以我们需要重新修改Makefile文件,把vivid目录下的文件都编译成一个.o文件,按然后再编译为一个.ko文件

MakeFile内容如下所示:

编译结果如下,只有一个vivid,ko文件

3

测试体验效果

首先我们先安装xawtv

xawtv是用于使用电视调谐器或卫星接收卡(DVB-S)观看和录制电视和网络摄像头的软件。xawtv可在类似Unix的操作系统上运行,并已获得GPL许可。

维基百科

sudo apt-get install xawtv

sudo modprobe vivid     //安装自带vivid及依赖,这里先使用modprobr加载vivid,会将其依赖一并加载,然后再卸载vivid,最后加载上我们编译的vivid.ko
sudo rmmod  vivid        //卸载自带的vivid
sudo insmod./vivid.ko  //安装自己编译的vivid.ko

xawtv -h           //帮助信息
xawtv -c/dev/videoX   //指定设备
xawtv -noalsa        //关闭声卡启动
xawtv          //运行摄像头

如图所示,虚拟摄像头就开始运行起来了。

这就是我分享的linux4.15内核下的虚拟摄像头配置,如果大家有什么更好的思路,欢迎分享交流哈。


插播一条信息:

之前推荐的一本书籍,大家反响很好,今天书籍的其中一位作者「博士」会开一个直播,有喜欢的同学可以看看。

现代操作系统:原理与实现

作者:陈海波 夏虞斌

推荐语:

操作系统和系统安全领域国际知名学者、上海交通大学陈海波、夏虞斌领衔撰写;

由浅入深介绍现代操作系统经典理论与方法,结合前沿研究与工业界实践,面向真实场景与真实问题;

全新打造ChCore微内核系列课程实验,建立对操作系统的第一手实践经验。

书籍详细内容可以点击阅读原文:

大家转发这篇文章并留言,我选出5名同学赠送这本书籍,截止周六晚上20:00

选中的留言我会置顶并回复一颗♥,发现自己的留言被置顶了的同学记得私信给我收货地址。


推荐阅读:

专辑|Linux文章汇总

专辑|程序人生

专辑|C语言

我的知识小密圈

关注公众号,后台回复「1024」获取学习资料网盘链接。

欢迎点赞,关注,转发,在看,您的每一次鼓励,我都将铭记于心~

Linux虚拟摄像头vivid配置相关推荐

  1. linux redis 3.0.7,linux虚拟机上安装配置redis3.0.7

    linux shell 的 linux虚拟机上安装配置redis3.0.7 我们给大家列出详细的图文步骤教给大家在linux虚拟机上安装redis以及相关的配置流程. 将redis-3.0.7.tar ...

  2. linux虚拟用户的配置

    1. 建立虚拟用户口令库文件logins.txt<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:of ...

  3. Linux虚拟网卡bond配置

    目录 一.bond概述 1.1.bond的优点 二.bond模式 2.1.mode=0 2.2.mode=1 2.3.mode=2 2.4.mode=3 2.5.mode=4 2.6.mode=5 2 ...

  4. 常用的Linux虚拟交换机,centos7配置虚拟交换机的方法

    Centrex,利用公众网络的资源来组成专用网络,为公众网络用户提供虚拟PBX(Private Branch Exchange,专用交换分机)服务的特殊交换功能,因此又称为集中用户小交换机或者虚拟用户 ...

  5. Linux网络摄像头设备端调试过程

    转载请标明出处:https://blog.csdn.net/u013752202/article/details/96502576 简介 网络摄像头,即常说的免驱摄像头,其采用UVC协议通过USB跟主 ...

  6. 德国虚拟主机 linux,细说Linux虚拟主机的搭建及配置

    我们知道Linux操作系统是目前在服务器上应用广泛的操作系统.前面我们刚介绍了<Ubuntu虚拟机:如何选择虚拟化软件>,现在来提及Linux系统下的虚拟主机.在Linux操作系统下的虚拟 ...

  7. linux虚拟主机泛解析,Apache虚拟主机的配置和泛域名解析实现代码

    Apache虚拟主机的配置和泛域名解析实现代码 更新时间:2012年03月11日 00:28:19   作者: Apache虚拟主机的配置和泛域名解析实现代码,需要的朋友可以参考下 虚拟主机的配置 基 ...

  8. Linux摄像头驱动第一篇之虚拟摄像头驱动vivi.c

    本文学习自韦东山老师的摄像头驱动模块 目录 一 摄像头驱动程序学习切入点以及V4L2模型概览 二 简析虚拟视频驱动 VIVI.C 2.1 初始化.设置.注册过程 2.2 简析vivi.c的open,r ...

  9. windows和linux下虚拟主机的配置

    windows下虚拟主机的配置: 主要是修改两个文件: 一:xampp/apache/conf/httpd文件中加上如下的代码 NameVirtualHost 127.0.0.1:80   注意你是哪 ...

最新文章

  1. Python 修改终端输入字体颜色值
  2. 车辆检测--DAVE: A Unified Framework for Fast Vehicle Detection and Annotation
  3. 解决在Ubuntu下打开txt文件乱码的问题
  4. 重启asp.net 命令
  5. 物联网通信协议_自动化机器上的物联网网关的目的是什么?
  6. python 用while输出数字金字塔_用Python实现一个Dual Thrust数字货币量化交易策略
  7. 【Scala】Scala中常见集合的使用---代码详解
  8. 支持百万级TPS,Kafka是怎么做到的?
  9. linux下重命名文件
  10. SPA优缺点、解决单页面应用的SEO困难问题以及三种网页渲染方式
  11. pyspark指定schema
  12. weblogic apache 整合 代理
  13. 【UML】UML基础教程(总三篇文章)
  14. Nachos-Lab1-完善线程机制
  15. OPPO R15刷root获取magisk权限 一键root R15系列
  16. 基于Ricequant时间序列模型预测股价
  17. 无线自组织网络基础知识
  18. 2020 年省份数据拉取
  19. 秒抢红包和欧巴江南style红遍全球的背后都是HOOK的功劳!
  20. 最超值的Mac——Mac mini

热门文章

  1. STM32F1网络编程-W5500网卡驱动移植
  2. 【NVMe2.0b 5】NVM Subsystem
  3. awr报告 解读_【数据库】解读Oracle AWR性能分析报告
  4. 重庆自考和成人高考有何区别?哪个含金量更高?
  5. 如何在Linux系统挂载U盘
  6. 不能用浏览器做异步测试
  7. 2021年 春季Elasticsearch面试题附答案【一】
  8. BugReport 分析利器 ChkBugReport
  9. 金山武汉总部园区来了!拟2024年竣工 可容纳员工9000人
  10. 关于PermissionError: [WinError 5] 拒绝访问的解决方案