VirtIO 您所在的位置:网站首页 virtiogpu VirtIO

VirtIO

2023-04-02 02:04| 来源: 网络整理| 查看: 265

文章目录 概述 基本环境搭建 组件编译 libvirt qemu-kvm virglrenderer 应用

概述

virtio-gpu是GPU分时复用方案,相对与透传方案,virito-gpu可以模拟的gpu更多。能够更充分利用GPU资源。 本文的实践主要基于virtio-gpu官方博客的搭建指导。

基本环境搭建

选择centos 8图形界面,CentOS Linux release 8.1.1911 (Core 安装OS之后,如果不被墙,可以使用默认的yum源,如果没有yum源配置,安装centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm yum高级工具yumdownloader安装yum -y install yum-utils.noarch 基本编译开发套件安装yum -y groupinstall Development

组件编译

libvirt wget http://vault.centos.org/8.0.1905/virt/Source/advanced-virtualization/libvirt-5.6.0-10.el8.src.rpm 安装libvirt源码包rpm -ivh libvirt-5.6.0-10.el8.src.rpm 安装libvirt编译环境依赖包yum-builddep libvirt 编译libvirt源码包cd $HOME/rpmbuild && rpmbuild -bb SPECS/libvirt.spec --define "_topdir $(pwd)" 进入RPMS目录安装rpm包 qemu-kvm wget http://vault.centos.org/8.0.1905/virt/Source/advanced-virtualization/qemu-kvm-4.1.0-23.el8.1.src.rpm 安装qemu-kvm源码包rpm -ivh qemu-kvm-4.1.0-23.el8.1.src.rpm 安装qemu-kvm编译环境依赖包yum-builddep qemu-kvm 高版本qemu直接rpmbuild编译会报缺少virglrenderer-devel,这个依赖在centos上没有找到,直接下载源码编译解决这个依赖问题,步骤在下一节介绍,假设现在qemu编译依赖已经解决 取出qemu-kvm源码包cd $HOME/rpmbuild/SOURCES && tar -xf qemu-4.1.0.tar.xz" 进入源码目录配置./configure --target-list=x86_64-softmmu --prefix=/usr --enable-kvm --enable-virglrenderer 编译并安装make -j$(nproc --ignore=1) && make install virglrenderer virglrenderer编译依赖两个工具分别是cmak和ninja,分别安装yum install -y cmake ninja-build virglrenderer还依赖一个libepoxy库,分别下载这两个组件的源码 下载libepoxy git clone https://github.com/anholt/libepoxy.git 下载virglrenderer git clone git://anongit.freedesktop.org/virglrenderer 编译libexpoxy依赖glesv2,安装yum install mesa-libGLES-devel 编译libexpoxy,只能用ninja方式编译: 1234mkdir _build && cd _build meson --prefix=/usr ninja sudo ninja install

编译virglrender,可以用ninja方式编译,也可以用make编译,步骤如下: 123./configure --enable-autotools --enable-debug --prefix=/usr make -j$(nproc --ignore=1) make install 在上述所有组件编译安装完成后,运行virsh version查看虚拟化组件版本,成功的输出应该是这样:

应用

准备磁盘文件qemu-img create -f qcow2 /home/test_vm.qcow2 80G 创建测试虚机的xml文件test_vm.xml如下: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273   test_vm   720a0f9f-2893-4712-87e4-b7a61454dd7a   16777216   4194304   4194304   4       /machine         hvm                                               destroy   restart   destroy       /usr/bin/qemu-system-x86_64                                                                                                                                                                               system_u:system_r:svirt_t:s0:c799,c857     system_u:object_r:svirt_image_t:s0:c799,c857         +0:+0     +0:+0   定义虚拟机virsh define test_vm.xml 关闭防火墙,设置qemu访问权限: 12cat /etc/sysconfig/selinux SELINUX=disabled 123cat /etc/libvirt/qemu.conf user = "root" group = "root"

启动虚机virsh start test_vm,这时启动的虚机还没有配置virtio-gpu libvirt默认将第一个显卡配置成vga模式保持兼容性,同时如果显卡设置成virtio,默认使用virtio-gpu-pci设备,因此修改libvirt,让其默认使用virtio-gpu,重新编译libvirt。 1234567891011121314151617181920212223242526272829diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index a5958c3..0e1a5cf 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -4660,9 +4660,11 @@ qemuBuildDeviceVideoStr(const virDomainDef *def,       * model with VGA compatibility mode.  For some video devices on some       * architectures there might not be such model so fallback to one       * without VGA compatibility mode. */ +#if 0      if (video->primary && qemuDomainSupportsVideoVga(video, qemuCaps))          model = qemuDeviceVideoTypeToString(video->type);      else +#endif          model = qemuDeviceVideoSecondaryTypeToString(video->type);        if (!model || STREQ(model, "")) { @@ -4673,11 +4675,13 @@ qemuBuildDeviceVideoStr(const virDomainDef *def,      }        if (STREQ(model, "virtio-gpu")) { +#if 0          if (qemuBuildVirtioDevStr(&buf, "virtio-gpu", qemuCaps,                                    VIR_DOMAIN_DEVICE_VIDEO, video) < 0) {              goto error;          }      } else { +#endif          virBufferAsprintf(&buf, "%s", model);      } 启动虚机时添加如下xml,表示将图形库的操作交给本地的DRI设备,也就是显卡设备,同时使用spice连接虚机: 1234   设置显示器的分辨率: 12345678                                 最后启动虚机,qemu命令行如下,表示virtio-gpu使用了本地的显卡加速处理图像信息:


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有