KVMGT部署文档以及遇到的一些坑

Posted pdjun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVMGT部署文档以及遇到的一些坑相关的知识,希望对你有一定的参考价值。

参考文档

https://github.com/intel/gvt-linux/wiki/GVTg_Setup_Guide#22-hardware-requirements

环境描述

  OS:centos7.3

  kernel:4.15

  qemu:2.12

  cpu:3865U

步骤一:编译内核

  1 安装编译环境

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum install asciidoc newt-devel xmlto audit-libs-devel binutils-devel elfutils-devel  numactl-devel java-1.8.0-openjdk-devel perl slang-devel ncurses-devel pciutils-devel perl-ExtUtils-Embed -y 
yum install libarchive-dev libghc-bzlib-dev libpci-dev mercurial gettext bcc iasl libncurses5-dev kpartx bc libperl-dev libgtk2.0-dev libc6-dev-i386 libaio-dev libsdl1.2-dev libyajl-dev libx11-dev autoconf libtool xsltproc bison flex xutils-dev xserver-xorg-dev x11proto-gl-dev libx11-xcb-dev vncviewer libxcb-glx0 libxcb-glx0-dev libxcb-dri2-0-dev libxcb-xfixes0-dev python-dev bin86 git vim libssl-dev gcc gcc-c++ glib2 glib2-devel zlib zlib-devel automake -y

  下载安装nosrc编译内的文件,当时测试的时候是4.15  以 http://elrepo.org/linux/kernel/el7/SRPMS 网站的文件为准

rpm -ivh http://elrepo.org/linux/kernel/el7/SRPMS/kernel-ml-4.15.14-1.el7.elrepo.nosrc.rpm

  下载对应的内核文件

cd rpmbuild/SOURCES
wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.15.14.tar.xz

  编辑配置内核配置文件 打开需要的功能 config-4.15.14-x86_64

CONFIG_DRM_I915_GVT=y
CONFIG_DRM_I915_GVT_KVMGT =y
CONFIG_VFIO_MDEV =y
CONFIG_VFIO_MDEV_DEVICE=y

  编译内核

rpmbuild  -bb /rpmbuild/SPECS/kernel-ml-4.15.spec

  安装内核 需要配置默认加载的模块

#编辑配置文件/etc/dracut.conf
add_drivers+="kvmgt vfio vfio-pci vfio-mdev"   #添加驱动模块

  安装内核的rpm包

rpm -ivh kernel-xxxxx  编译好的内核包

修改开机启动参数  在linux16行 添加

i915.enable_gvt=1 kvm.ignore_msrs=1 intel_iommu=on

  然后重启 查看显卡虚拟化是否成功

  查看是mdev_supported_types 目录是否存在 如果存在则成功

       路径 /sys/bus/pci/devices/0000:00:02.0/     #使用lspci可以查看的集成显卡的地址

步骤二:编译Intel修改过的qemu程序

git clone https://github.com/intel/igvtg-qemu
git checkout  stable-2.10.0
git submodule update --init roms/seabios
yum install SDL2-devel mesa-libgbm-devel  libepoxy-devel spice-server-devel spice-protocol -y
 ./configure --prefix=/usr/local/qemu --enable-kvm --disable-xen --enable-debug-info --enable-debug --enable-sdl --enable-vhost-net --disable-debug-tcg --target-list=x86_64-softmmu --enable-gtk --enable-opengl --enable-vhost-vsock --enable-spice
make -j #使用当前cpu的所以线程
cd roms/seabios/
make -j
make install 
cp roms/seabios/out/bios.bin /usr/local/qemu/

步骤三 创建带集成显卡的虚拟机

    创建虚拟gpu

uuidgen  #生成uuid,然后将使用uuid创建
c00d96bb-081a-4c91-94bb-37b1e18ef1e9
echo "c00d96bb-081a-4c91-94bb-37b1e18ef1e9" > /sys/bus/pci/devices/0000:00:02.0/mdev_supported_types/i915-GVTg_V5_4/create

 网卡启动脚本

chmod +x  /etc/qemu-ifup  
cat /etc/qemu-ifup  
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
        # tunctl -u `whoami` -t $1 (use ip tuntap instead!)
        ip tuntap add $1 mode tap user `whoami`
        ip link set $1 up
        sleep 0.5s
        # brctl addif $switch $1 (use ip link instead!)
        ip link set $1 master $switch
        exit 0
else
        echo "Error: no interface specified"
        exit 1
fi

 使用命令行启动虚拟机

#! /bin/bash -x
/usr/local/qemu/bin/qemu-system-x86_64     -m 2048 -smp 2 -M pc     -vga none      -display egl-headless     -name gvt-g-guest     -hda /adminpool/S-1-tea64.win7     -bios /usr/local/qemu//bios.bin -enable-kvm     -net nic,macaddr=00:A1:00:00:00:2A -net tap,script=/etc/qemu-ifup     -k en-us     -serial stdio     -machine kernel_irqchip=on     -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1     -cpu host -usb -usbdevice tablet     -device vfio-pci,sysfsdev=/sys/bus/pci/devices/0000:00:02.0/c00d96bb-081a-4c91-94bb-37b1e18ef1e9,x-display=on,x-igd-opregion=on     -spice port=5911,addr=0.0.0.0,disable-ticketing

  步骤四:在虚拟机里面安装集成显卡驱动

       推荐使用驱动人生安装 

安装完成之后 重启 使用spicy连接 会出现两个窗口

遇到的坑

1 安装驱动,在win7里面安装hd610驱动 失败,原因是intel官网更新了驱动 导致hd610的驱动不能安装在使用3865U的win7上面,驱动精灵也扫描不到驱动,最后使用驱动人生 安装老版的驱动 解决问题

2 安装内核后 发现显卡虚拟化功能没打开,显卡路径里面没有mdev_supported_types  目录    原因是kvmgt vfio vfio-pci vfio-mdev这几个模块要放到initramfs里面 才可以 所以安装内核前编辑/etc/dracut.conf文件

3 使用libvirtd服务管理的时候问题,使用xml文件启动虚拟机,很多坑 整理中    

     

以上是关于KVMGT部署文档以及遇到的一些坑的主要内容,如果未能解决你的问题,请参考以下文章

unity 打AB包中遇到的坑以及一些心得

CentOS6中安装配置启动GitLab以及遇到的那些坑

Vue发布过程中遇到坑,以及webpack打包优化

留言板项目的后台部署思路以及4实现方法和一些“坑“及解决方案

同时集成百度地图定位以及导航遇到的一些坑

oracle静默安装中遇到的那些坑