【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧

image.png

本文分享至飞腾开发者平台《FT-2000+/64 KVM虚拟化系统解决方案--虚拟桌面》

介绍

  本文主要介绍采用virtio-gpu和spice协议的方式的虚拟桌面方案。

  本文将摈弃qxl、vga模拟显卡的虚拟化方案,而采用virtio-gpu方式来虚拟显卡,而远程桌面则选择spice协议。

编译QEMU源码

  若安装包版本为qemu-2.10.0,该安装包不支持spice远程桌面协议,基于此,本节将通过以下方式来创建虚拟桌面:

  1)下载qemu源码。

  https://www.qemu.org/download/,本节以qemu-3.0.1为例进行阐述,其中,

mkdir build
cd build

  2)配置

. ./configure --target-list=aarch64-softmmu

  发现需要zlib库,通过下面命令安装:

yum -y install zlib-1.2.7-17.el7.aarch64.rpm
zlib-devel-1.2.7-17.el7.aarch64.rpm

  3)再次配置qemu会发现提示缺少glib-2.40和gthread-2.0

yum -y install glib2-2.54.2-2.el7.aarch64.rpm
glib2-devel-2.54.2-2.el7.aarch64.rpm

  4)再次配置qemu会发现提示缺少pixman版本要高于0.21.8

yum -y install pixman-devel-0.34.0-1.el7.aarch64.rpm

  5)再次配置发现,已经不会报错了:

image.png

  其中spice协议是不支持的,另外virgl也不支持,这个是virtio-gpu插件。

  6)再次配置

 ../configure --target-list=aarch64-softmmu --enable-spice

  发现需要安装spice-protocal版本大于0.12.3,但是自带的安装包spice-protocol-0.12.13-2.el7.noarch.rpm,所以需要下载:

    a)下载spice和spice-protocal:

  https://www.spice-space.org/download/releases/

  本节以spice-0.14.0和spice-protocal-0.14.0为例进行阐述:

  下载spice-0.14.0和spice-protocal-0.14.0

cd spice-protocal-0.14.0;
./configure ;
make && make install;
cd spice-0.14.0;
./configure;

    b)会报缺少celt库,命令安装:

yum -y install celt051-0.5.1.3-8.el7.aarch64.rpm
celt051-devel-0.5.1.3-8.el7.aarch64.rpm

    c)再次配置spice-0.14.0会报缺少libjpeg库,命令安装:

yum -y install libjpeg-turbo-devel-1.2.90-5.el7.aarch64.rpm

    d)再次配置spice-0.14.0,make&&make install完成编译安装;

  7)再次配置

../configure --target-list=aarch64-softmmu --enable-spice

发现还是提示spice版本问题,其原因在于没有找到pkg-config配置文件,通过如下操作找到pkg-config配置文件:

cp /usr/local/lib/pkgconfig/spice-server.pc /usr/lib64/pkgconfig/

  8)再次配置qemu

../configure --target-list=aarch64-softmmu --enable-spice

  发现已经支持spice协议了

  9)安装libssh2:

yum -y install libssh2-1.4.3-10.el7_2.1.aarch64.rpm
libssh2-devel-1.4.3-10.el7_2.1.aarch64.rpm

  10)安装libxml:

yum -y install libxml2-2.9.1-6.el7_2.3.aarch64.rpm
libxml2-devel-2.9.1-6.el7_2.3.aarch64.rpm

  11)安装virgl,这个是支持virtio-gpu的软件包。自带的包里没有,我们需要自己下载编译:

    a)下载virglrenderer-0.7.0.orig.tar.gz2:

http://mirrordirector.raspbian.org/raspbian/pool/main/v/virgl...

./configure; make && make install

    b)发现缺少libdrm库,且版本需要大于2.4.50,命令安装:

yum -y install libdrm-2.4.83-2.el7.aarch64.rpm
libdrm-devel-2.4.83-2.el7.aarch64.rpm;

    c)再次配置发现缺少gbm库,命令安装:

yum -y install mesa-libgbm-devel-17.2.3-8.20171019.el7.aarch64.rpm

    d)再次配置发现缺少epoxy库,命令安装:

yum -y install libepoxy-1.3.1-1.el7.aarch64.rpm
libepoxy-devel-1.3.1-1.el7.aarch64.rpm

    e)再次配置virglrenderer:

make&&make install

    f)然后执行如下命令,将文件拷贝到/usr/lib64/pkgconfig/下面:

cp /usr/local/lib/pkgconfig/virglrenderer.pc /usr/lib64/pkgconfig/

  再次配置qemu发现已经支持virgl。

  12)安装usb重定向相关库(也可以不安装。如果不安装,则远程访问虚拟云桌面时,客户端的U盘等设备远程虚拟机无法通过重定向挂载和识别)。

安装:

yum -y install usbredir-0.7.1-3.el7.aarch64.rpm
usbredir-devel-0.7.1-3.el7.aarch64.rpm

  13)再次配置qemu,发现已经支持libusb和usb重定向;

make&&make install    // 编译安装。

  14)将qemu程序需要的库拷贝到/usr/lib64/目录:

cp /usr/local/lib/libvirglrenderer.\* /usr/lib64/ -fa
cp /usr/local/lib/libspice-server.\* /usr/lib64/ -fa

  这样运行qemu-system-aarch64就不会找不到这两个库了。

使用virtio-gpu + spice启动虚拟桌面

  1)将之前的kvm1域的配置文件中的emulator改为如下路径。

image.png

  如果仅修改上面qemu路径还会报一个机器名问题,其原因在于qemu没有模拟这个机器,将machine一栏
改成virt-3.0即可 :

image.png

  2)接下来,我们将桌面协议改成spice,重启libvirtd服务:

image.png

  3)启动虚拟机:

virsh start kvm1。

  4)接下来我们需要安装一个spice远程连接的客户端,本次测试远程连接端是在windows上安装的软件。

  可以在spice官网下载:https://www.spice-space.org/download.html

  安装好后界面如下:

image.png

  5900是spice默认的端口号,也可以在域的xml配置文件中指定端口号。连接上以后,就进入远程桌

面了。

image.png

  5)客户机中安装的是GnomeDesktop,默认进入的是字符界面,如果想进图形界面。输入命令:startx。

  图形界面如下所示:

image.png

  6)如果想要一开虚拟机就进入图形界面,可以这样操作:

cd /etc/systemd/system/ 
rm default.target
ln -s /lib/systemd/system/graphical.target default.target


推荐阅读

欢迎广大开发者来飞腾开发者平台获取更多前沿技术文档及资料

如开发者在使用飞腾产品有任何问题可通过在线工单联系我们



版权所有。飞腾信息技术有限公司 2023。保留所有权利。

未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。

商标声明

Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。

本文档提及的其他所有商标或注册商标,由各自的所有人拥有。

注意

本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。

由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。

本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。


飞腾开发者
6 声望3 粉丝

飞腾开发者技术小助手,定期分享飞腾技术文档,助力开发者打怪升级。更多材料获取:[链接]