qemu+kvm+remote-viewer+vino实现单卡多显示

1 背景

实际在调试过程中经常要调试多个显示器的设置功能,比如需要调试双屏或者三屏以及更多屏幕的情况:

第一种方式:找一台真实的物理机需要支持2/3/4显示接口输出的设备且你有2/3/4个显示器,优点不需要太多的软件配置,缺点:硬件要求太高。

第二种方式:找一台真实的物理机需要支持2/3/4显示接口输出的设备,但是可能没有2/3/4这么多显示器,优点可可以减少显示器的硬件依赖,缺点:还依赖部分显卡硬件环境。

第三种方式:通过kvm+qemu 通过remote-view使能单显卡多显示端口使能的前提下通过vino实现远程共享服务最后通过realvnc实现在一个大的屏幕上显示效果。

其他:

1.vmware的硬件使能测试:尝试过在vmware虚拟机中配置多个显示端口无法生效。

2.通过dummy的模拟实现多显卡组合:尝试通过xorg的dummy驱动和默认的vmware中的默认svga进行组合显示,无法组合。

3.通过dummy的模拟实现(单显卡画布切割):尝试通过xorg的dummy的显示大画布,通过xrandr进行画布的切割,未达到想要的目标。

4.xvfb:通过xvfb相关显示服务替换xorg的服务?未达成目标?

5.是否在显卡驱动层面有类似用户态xorg的dummy显卡驱动模拟???

2 实现

2.1 第二种方案的实现

  1. 在显示器设备不足的情况下通过软件模拟接多个显示器,在grub中配置video=VGA-1:1024x768-32@60me强制使特定的显卡的输出端口处于连接状态,这个配置有个前提是需要你显卡固件中使能了特定的显卡显示端口,如果默认固件禁用了特定的显卡输出端口该配置无效。
  2. 在机器上开启远程桌面,安装vino远程桌面服务:
    cp /usr/share/applications/vino-server.desktop /etc/xdg/autostart/ gsettings set org.gnome.Vino require-encryption false
    gsettings set org.gnome.Vino prompt-enabled false systemctl restart lightdm #如果是gdm就改成gdm
  3. 在windows中可以通过安装realvnc viewer去连接虚拟机实现调试,填入对应的ip地址、用户和密码即可,如果是在linux下可以通过安装tigervnc viewer实现连接。

备注:需要关闭防火墙,比如通过iptables -L -vn查看是否开启了防火墙,systemctl status firewalld.service && systemctl stop firewalld.service&& systemctl disable firewalld.service

2.2 第三种方案的实现

1.通过virt-manager配置虚拟机的时候video qxl配置中把对应的heads从1改成3(实际你想要的显示端口个数).

  1. 在虚拟机中安装spice-vdagent包。

3.借助remote-viewer连接显示器,实际默认虚拟机的网络是nat模式,可以通过remote-viewer spice://192.168.122.1:5901, ip地址可以通过ifconfig virbr0查看实际的ip地址,另外端口号可以通过ps -ef |grep spice去实际查看实际用的端口号。

  1. remote-viewer中view-->display 使能display 2/3/4

5.另外remote-viewer我们默认用的是7.0是否升级到11.0以上才能实现对应的显示在一个画布上,实际通过单独编译升级后发现并没有这种效果,实际并没有这种功能。

  1. 使能了显示器以后参考方法第二种方案的实现的vino方式开启远程服务,最终通过realvnc viewer能看到一样的效果,目前测试过2、3、4屏都能正常。

备注:实际采用默认的virt-manager中内置的显示查看不支持。

相关推荐
不怕犯错,就怕不做7 小时前
ARM设备异常断电容易造成数据损坏,硬件如何设计
linux·驱动开发·嵌入式硬件
Harm灬小海7 小时前
【云计算学习之路】学习Centos7系统-Linux软件包管理
linux·运维·服务器·学习·云计算·yum·rpm
caicai_xiaobai7 小时前
Ubuntu上Git安装步骤
linux·git·ubuntu
平行云8 小时前
实时云渲染平台数据通道,支持3D应用文件上传下载分享无缝交互
linux·unity·云原生·ue5·gpu算力·实时云渲染·像素流送
谪星·阿凯8 小时前
Linux提权全攻略博客
linux·运维·服务器·网络安全
风度前端8 小时前
阿里云宝塔面板部署https证书
linux·后端·https
Yeats_Liao8 小时前
物联网接入层技术剖析(二):epoll到底是怎么工作的
java·linux·网络·物联网·信息与通信
Donk_678 小时前
什么是虚拟化
linux·运维
Shadow(⊙o⊙)8 小时前
Shell进程替换,自定义Shell解释器——字符串库函数灵活操作!
linux·运维·服务器·开发语言·c++·学习
funnycoffee1238 小时前
华为S5736交换机3层ECMP负载方式
linux·服务器·数据库