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檔案啟動虛擬機器,很多坑 整理中