KVM虚拟化win10显卡直通一例

一、硬件及需求

联想SR650 2x5218,64G,3x1.2T SAS HDD,显卡RTX2080

因为对系统要求必须是windows,windows server系统没有显卡驱动,win10又没有对应的服务器硬件驱动,尝试安装windows10,使用windows server2019驱动,系统安装安装完成后,驱动问题导致系统蓝屏,重启,无法正常使用

只能使用centos+kvm部署win10虚拟机,显卡采用直通模式,可以正常安装显卡驱动。

二、部署过程

1、安装centos7.8,安装过程省略

英文安装,virt-manager图形界面中文会显示乱码
centos版本:CentOS-7.8-x86_64-DVD-2003
采用的自动分区,不过手动更合适。

[root@localhost ~]# df -h
Filesystem              Size  Used Avail Use% Mounted on
devtmpfs                  32G    0  32G  0% /dev
tmpfs                    32G    0  32G  0% /dev/shm
tmpfs                    32G  11M  32G  1% /run
tmpfs                    32G    0  32G  0% /sys/fs/cgroup
/dev/mapper/centos-root  50G  2.3G  48G  5% /
/dev/sda2              1021M  210M  811M  21% /boot
/dev/sda1                200M  12M  189M  6% /boot/efi
/dev/mapper/centos-home  2.1T  24G  2.1T  2% /home
tmpfs                    6.3G    0  6.3G  0% /run/user/0
2、安装kvm

2.1设置桥接网络,名称为br0连接到eno1变为到br0
yum -y install bridge-utils

配置br0的网络参数,对照自己的网卡,配置自己的ip

cat > /etc/sysconfig/network-scripts/ifcfg-br0 << EOF
DEVICE=br0
ONBOOT=yes
BOOTPROTO=static
NM_CONTROLLED=no
IPADDR=192.168.31.88
NETMASK=255.255.255.0
GATEWAY=192.168.31.1
DNS1=114.114.114.114
USERCTL=no
TYPE=Bridge
EOF

修改eno1的网络参数

cat > /etc/sysconfig/network-scripts/ifcfg-eno1 << EOF
DEVICE=eno1
ONBOOT=yes
BRIDGE=br0
EOF

重启网络
systemctl restart network


重启网络后ssh连接新设置的ip
检查主机机是否支持kvm
egrep '(vmx|svm)' /proc/cpuinfo

2.2安装kvm

systemctl start libvirtd

查看kvm版本,UEFI模式安装windows需要升级kvm

virsh # version
Compiled against library: libvirt 3.0.0
Using library: libvirt 3.0.0
Using API: QEMU 3.0.0
Running hypervisor: QEMU 2.8.1

2.3更新qemu-kvm

wget http://rpmfind.net/linux/centos/7.8.2003/extras/x86_64/Packages/centos-release-qemu-ev-1.0-4.el7.centos.noarch.rpm
yum install -y centos-release-qemu-ev-1.0-4.el7.centos.noarch.rpm
wget http://rpmfind.net/linux/centos/7.8.2003/extras/x86_64/Packages/centos-release-virt-common-1-1.el7.centos.noarch.rpm
yum install -y centos-release-virt-common-1-1.el7.centos.noarch.rpm
 sed -i -e "s/enabled=1/enabled=0/g" /etc/yum.repos.d/CentOS-QEMU-EV.repo
yum --enablerepo=centos-qemu-ev -y install qemu-kvm-ev
 systemctl restart libvirtd

查看更新后的kvm版本

virsh # version
Compiled against library: libvirt 4.5.0
Using library: libvirt 4.5.0
Using API: QEMU 4.5.0
Running hypervisor: QEMU 2.12.0

2.4安装OVMF
OVMF“是一个为UEFI支持虚拟机的项目”。

 #REPO
 vi /etc/yum.repos.d/kraxel.repo
 # create new
 [qemu-firmware-jenkins]
 name=firmware for qemu, built by jenkins, fresh from git repos
 baseurl=https://www.kraxel.org/repos/jenkins/
 enabled=0
 gpgcheck=0
 #RPM Install
 yum --enablerepo=qemu-firmware-jenkins -y install OVMF

 #check ovmf directory
ls /usr/share/OVMF/

 #QEMU配置以启用UEF
vim /etc/libvirt/qemu.conf
 nvram = [
  "/usr/share/OVMF/OVMF_CODE.secboot.fd:/usr/share/OVMF/OVMF_VARS.fd",
 ]

 #重启libvirtd服务
 service libvirtd restart

2.5安装win10
使用图形界面安装,xshell的xmanager工具
virt-manager

2.5.1选择UEFI模式,暂不配置显卡直通



2.5.2如果硬盘或者CD/ROM报错不支持IDE模式不支持,请更改成SATA模式



2.5.3网卡桥接模式

2.5.4vnc连接配置,选择vncserver,否则可能看不到虚拟机画面,vnc客户端配置raw模式,否则可能很卡


2.6显卡直通
2.6.1开启iommu
IOMMU(i/o memory management unit)。iommu有两大功能:控制设备dma地址映射到机器物理地址(dmar),中断重映射(intremap)(可选)
确认内核是否支持iommu
cat /proc/cmdline | grep iommu有输出则正常
如果没有输出,将intel_iommu=on添加到grub启动文件当中
编辑grub文件 :
vim /etc/default/grub

GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="intel_iommu=on crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"

重新生成内核
grub2-mkconfig -o /boot/efi/EFI/centos/grub.cfg

再次验证内核支持iommu

[root@localhost ~]# cat /proc/cmdline | grep iommu
BOOT_IMAGE=/vmlinuz-3.10.0-1127.19.1.el7.x86_64 root=/dev/mapper/centos-root ro intel_iommu=on crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet LANG=zh_CN.UTF-8

有输出即正常
验证VT-D是否启用
dmesg |grep -e DMAR -e IOMMU


ps:如果没有的开启的解决办法

https://www.jianshu.com/p/035287ba9acb

2.6.2禁用服务器上的RTX2080显卡驱动

#查看NVIDIA显卡设备
[root@localhost ~]# lspci -nnk | grep -i nvidia
86:00.0 VGA compatible controller [0300]: NVIDIA Corporation TU104 [GeForce RTX 2080 SUPER] [10de:1e81] (rev a1)
        Subsystem: NVIDIA Corporation Device [10de:13a0]
86:00.1 Audio device [0403]: NVIDIA Corporation TU104 HD Audio Controller [10de:10f8] (rev a1)
        Subsystem: NVIDIA Corporation Device [10de:13a0]
86:00.2 USB controller [0c03]: NVIDIA Corporation TU104 USB 3.1 Host Controller [10de:1ad8] (rev a1)
        Subsystem: NVIDIA Corporation Device [10de:13a0]
86:00.3 Serial bus controller [0c80]: NVIDIA Corporation TU104 USB Type-C UCSI Controller [10de:1ad9] (rev a1)
        Subsystem: NVIDIA Corporation Device [10de:13a0]
#根据上面显示的显卡设备编号,查看显卡驱动
lspci -vv -s 86:00.0 | grep driver
lspci -vv -s 86:00.1 | grep driver
lspci -vv -s 86:00.2 | grep driver
lspci -vv -s 86:00.3 | grep driver
#显示有3个驱动nouveau,snd_hda_intel,xhci_hcd

在服务器主机上禁用显卡设备
vi /etc/modprobe.d/blacklist.conf
添加

blacklist nouveau
blacklist snd_hda_intel
blacklist xhci_hcd

vim /usr/lib/modprobe.d/dist-blacklist.conf
加上一行options nouveau modeset=0


PS:其他情况可能还需要去掉禁用另外一张显卡,我这里没有去掉

备份原来的 initramfs nouveau image镜像
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r)-nouveau.img

创建新的 initramfs image镜像
dracut /boot/initramfs-$(uname -r).img $(uname -r)

2.6.3显卡加载vfio驱动
加载vfio模块

modprobe vfio
modprobe vfio-pci

从服务器卸载4个显卡设备

virsh nodedev-detach pci_0000_86_00_0
virsh nodedev-detach pci_0000_86_00_1
virsh nodedev-detach pci_0000_86_00_2
virsh nodedev-detach pci_0000_86_00_3

验证显卡设备是否加载vfio-pci驱动,加载成功

[root@localhost ~]# lspci -vv -s 86:00.0 | grep driver
        Kernel driver in use: vfio-pci
[root@localhost ~]# lspci -vv -s 86:00.1 | grep driver
        Kernel driver in use: vfio-pci
[root@localhost ~]# lspci -vv -s 86:00.2 | grep driver
        Kernel driver in use: vfio-pci
[root@localhost ~]# lspci -vv -s 86:00.3 | grep driver
        Kernel driver in use: vfio-pci

2.6.4 win10虚拟机添加NVDIA显卡



同时可以添加服务器的USB设备直通
ps:需要另外配置下,参考链接

https://www.it610.com/article/1297569124670578688.htm

添加后,关机重启


三、显卡驱动安装

要安装显卡驱动,需要修改虚拟机win10的配置文件
否则显卡驱动安装过程中自检会报错ERROR CODE 43,驱动不允许安装在虚拟机上。

#编辑VM XML
virsh edit win 10

#修改第一行
<domain type='kvm'>
#为
<domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>

#找到<features>节点,添加内容
<features>
... 
  <kvm>
    <hidden state='on'/>
  </kvm>
...
</features>

#找到</device>节点,在device后添加内容
<qemu:commandline>
  <qemu:arg value='-cpu'/>
  <qemu:arg value='host,hv_time,kvm=off,hv_vendor_id=null'/>
</qemu:commandline>

#重启VM
virsh destroy win10
virsh start win10

重启即可安装驱动




AID64测试


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343