设为首页 - 加入收藏 ASP站长网(Aspzz.Cn)- 科技、建站、经验、云计算、5G、大数据,站长网!
热搜: 手机 公司 数据
当前位置: 首页 > 教程 > 正文

gentoo安装kvm+spice及opencv教程步骤

发布时间:2022-06-14 10:52 所属栏目:61 来源:互联网
导读:本文我们来讲讲linux核心版本的gentoo如何安装kvm+spice及安装opencv的步骤过程,对gentoo感兴趣的朋友可以看看。 很早之前就听说spice相对vnc来说要强大很多,之前因为安装的是32位的系统,没法进行尝试,安装了64位的系统之后,还没时间去折腾过。 先说下
  本文我们来讲讲linux核心版本的gentoo如何安装kvm+spice及安装opencv的步骤过程,对gentoo感兴趣的朋友可以看看。
 
  很早之前就听说spice相对vnc来说要强大很多,之前因为安装的是32位的系统,没法进行尝试,安装了64位的系统之后,还没时间去折腾过。
 
  先说下安装,安装的过程相对比较方便,首先需要卸载原来安装的app-emulation/qemu-kvm,因为之后要安装的拥有spice功能的kvm和这个包是相互block的。卸载了之后,就需要重新emerge app-emulation/qemu-kvm-spice这个包。否则直接在virt-manager中将虚拟机的显示从vnc切换到spice,在启动的时候会提示这个版本的kvm不支持spice协议。其他和spice相关的包还有:app-emulation/spice,app-emulation/spice-protocol等,如果要在virt-manager中直接接入到spice界面,需要安装net-misc/spice-gtk这个包(不过我在kde中用的时候,发现用net-misc/spice-gtk的时候,会导致整个界面都变成透明的,估计是因为gtk和kwin的特效不太兼容)。
 
  安装还是非常简单的,安装完成之后,就要重新配置原来的windows虚拟机了。在virt-manager中删掉原来的vnc显示,新增一个graphics,类型选择spice server。将原来视频中使用的虚拟显卡换成qxl,这样启动虚拟机之后,就会使用spice了。
 
  前面说到了kde中使用spice-gtk有很多不正常的地方,所以我是直接使用spicec这个命令的,因为没有配置任何的加密,所以连接非常简单,直接使用:
 
  spicec -h 127.0.0.1 -p 5900
 
  端口号可以在增加spice server的时候设置,如果选择自动分配,那么会从5900开始递增分配。
 
  启动之后,需要给里面的windows安装驱动,windows需要的所有二进制文件,都可以在http://spice-space.org/download.html这里的Windows binaries中找到。首先下载qxl driver,在windows提示需要安装驱动文件的时候,安装这个qxl driver,就可以完成了spice显示的功能了。
 
  之前按照http://www.linux-kvm.com/content/rhev-spice-guest-drivers-released-windows这个页面安装windows驱动,前面安装qxl非常方便,但是后面的vdi port driver却一直没有提示需要安装,在最后一步Install SPICE agent之后,这个服务一直无法启动,第一次的尝试spice就到此为止了。
 
  之后又继续搜索了下这个spice agent无法启动,在redhat的bugzilla中发现原来现在sprice agent已经不通过vdi了,需要通过virtio-serial来进行交互。在virt-manager的界面上,怎么样都找不到如何添加这个设备的方法,最后只能通过编辑虚拟机配置文件的方式直接修改了。通过使用virsh edit XXX (XXX为虚拟机的名字),会打开虚拟机的配置文件,根据libvirt网站上的介绍,在devices标签中增加了两个channel:
 
  <channel type=’pty’>
        <target type=’virtio’ name=’arbitrary.virtio.serial.port.name’/>
        <address type=’virtio-serial’ controller=’0′ bus=’0′ port=’1’/>
      </channel>
      <channel type=’spicevmc’>
        <target type=’virtio’ name=’com.redhat.spice.0’/>
        <address type=’virtio-serial’ controller=’0′ bus=’0′ port=’2’/>
      </channel>
  保存这个配置文件,启动虚拟机,这个时候windows又会提示发现了新硬件,需要使用spice下载页面上的Windows virtio-serial driver进行安装,安装完成之后,重新安装下spice agent,这个时候spice agent服务就能够正常启动了,通过这个服务,虚拟机就能够和宿主机共享剪切板了.
 
  写了个脚本之后,发现这个应用依赖的png库都是1.4.5的,上面的提示是libpng在编译时指定错了版本,虽然我本地有1.2和1.4两个版本的libpng,但是头文件只有1.4的,仔细看了下编译完的目录,通过搜索png.h这个关键字,发现竟然以来了opencv里面自带的libpng,按理说如果发现了系统的libpng之后,就不应该再用自带的libpng了,最后在highgui模块的cmakelists.txt文件中发现了这些内容:
 
  if(WITH_JPEG)
  add_definitions(-DHAVE_JPEG)
  if(NOT JPEG_FOUND)
  set(use_3rdparty TRUE)
  endif()
  endif()
  if(WITH_PNG)
  add_definitions(-DHAVE_PNG)
  if(NOT PNG_FOUND)
  set(use_3rdparty TRUE)
  endif()
  endif()
  if(WITH_TIFF)
  add_definitions(-DHAVE_TIFF)
  if(NOT TIFF_FOUND)
  set(use_3rdparty TRUE)
  endif()
  endif()
  if(WITH_JASPER)
  add_definitions(-DHAVE_JASPER)
  if(NOT JASPER_FOUND)
  set(use_3rdparty TRUE)
  endif()
  endif()
  if(use_3rdparty)
      include_directories(“${CMAKE_CURRENT_SOURCE_DIR}/../../3rdparty/include”)  --phpfensi.com
  endif()
  
        也就是说,这几个库里面任意一个没有的话,都会把3rdparty/include这个目录加入到头文件的搜索目录中,gentoo在emerge的时候,默认是没有USEjpeg2k的,也就是不使用系统的jasper库,导致引用了自带的png.h.
 
  找到了原因之后,解决起来就很方便了,在emerge opencv之前,确保把jpeg2k加入到USE中即可.
 
 

(编辑:ASP站长网)

    网友评论
    推荐文章
      热点阅读