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

相关推荐
草莓熊Lotso6 小时前
【Redis 初阶】Set 类型深度解析:去重集合的运算能力与实战场景
linux·网络·数据库·windows·redis·tcp/ip·缓存
张文君6 小时前
ubuntu26.04坏道坏块分区隔离急速版260831-V0.12
linux·python
贝锐15 小时前
从国产化信创设备到商用安卓终端,向日葵如何帮助企业实现统一运维管理?
linux·运维·远程控制
Julien200416 小时前
调查和解决 SELinux 问题
linux·运维·服务器·网络·学习方法
小张同学a.18 小时前
Docker 容器实战 1—— docker 基础与镜像构建
linux·运维·docker·容器
Best-Wishes21 小时前
BurpSuite Pro教育版在linux系统中配置
linux·运维·服务器·网络安全·burpsuite
wuminyu21 小时前
深入剖析 Panama Off-heap 的性能损耗与开销
java·linux·c语言·jvm·c++
虎王物联21 小时前
RK3568嵌入式Linux跑Docker:内核配置排查到AIoT容器化的完整路径
linux·运维·docker·rk3568·aiot·嵌入式linux
GeW1 天前
不只靠技术:RHCE考试的5个隐藏得分点
linux
老当益壮梁奶奶1 天前
Linux软件编程学习笔记(八):进程间通信详解(1)
linux·c语言·笔记·学习·算法