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中内置的显示查看不支持。

相关推荐
倔强的石头1065 分钟前
【Linux指南】动静态库系列(二):从源码复用到目标文件复用:为什么需要把 .o 打包成库
linux·运维·服务器
HLC++12 小时前
Linux的进程间通信
android·linux·服务器
华清远见IT开放实验室13 小时前
实验室建设案例 | 石家庄科技信息职业学院嵌入式实验室——从底层硬件到系统应用,一所应用型高校的嵌入式人才培养这样落地
linux·arm开发·stm32·嵌入式硬件·高校·实验室建设
groundhappy16 小时前
idalib安装和codex ida-mcp配置
linux·开发语言·python
通信小小昕17 小时前
Ubuntu 26.04 中文输入法安装
linux·运维·ubuntu
张小姐的猫18 小时前
【Linux】网络编程 —— HTTP协议(上)
linux·运维·服务器·网络·http·单例模式·策略模式
栩栩云生18 小时前
AI 写代码犯的错,早被写进了错题集
linux·安全·ai编程
imc.1119 小时前
linux基础IO
linux·运维·服务器
BelongPanda21 小时前
Linux Nginx 纯手动 Let‘s Encrypt 泛域名证书配置教程
linux·nginx
酷可达拉斯21 小时前
Linux操作系统-shell编程(0)
linux·运维·服务器·python·云计算