精华内容
下载资源
问答
  • 我的KVM显卡直通实践

    万次阅读 2017-05-17 16:01:38
    这篇文章用于记录我的KVM显卡直通实践过程。各种方案及各种失败。

    ·为什么放弃使用VMwareESXi

    因为需要两台电脑,用其中一台对另一台进行直通的管理,这太麻烦了。


    前期准备:

    安装KVM

    #apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin python-libvirt bridge-utils


    准备直通的显卡编号:

    pci_0000_04_00_0

    pci_0000_04_00_1

    0000:04:00.0VGA compatible controller [0300]: NVIDIA Corporation GM204GL [Quadro M4000] [10de:13f1] (rev a1)

    0000:04:00.1Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)


    方案1PCIPass-throughlibvirt

    来源:http://www.it165.net/admin/html/201506/5722.html

    1.BIOS中打开IntelVT-d(成功)

    2.Linux内核中方启用PCIPass-through(成功:sudogedit \etc\default\grub

    3.重启系统,使配置生效(成功)

    4.使用lspci-nn命令找到待分配的PCI设备(成功)

    5.使用virshnodedev-list命令找到设备的PCI编号(成功)

    6.使用virshnodedev-dettach命令将设备从主机上移除(失败,系统直接卡住,或者终端卡住,多次实验均没有效果)

    7.使用virt-manager将设备直接分配给一个启动了的虚拟机(试图跳过第六步直接执行词步,失败,KVM直接卡住)


    NodeDevice (help keyword 'nodedev'):

    nodedev-create create a device defined by an XML file on the node

    nodedev-destroy destroy (stop) a device on the node

    nodedev-detach detach node device from its device driver

    nodedev-dumpxml node device details in XML

    nodedev-list enumerate devices on this host

    nodedev-reattach reattach node device to its device driver

    nodedev-reset reset node device


    方案2PCIPass-throughqemu

    来源:http://blog.csdn.net/halcyonbaby/article/details/37776211

    1.与方案11~5相同(成功)

    2.

    modprobe pci_stub

    (成功)

    3.
    echo "10de 13f1" > /sys/bus/pci/drivers/pci-stub/new_id
    (成功)
    4.
    echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind
    (失败,系统直接卡住,多次试验结果均相同)
    5.
    echo 0000:04:00.0 > /sys/bus/pci/drivers/pci-stub/bind
    (失败:bash:echo: write error: No such device

    方案3PCIPass-throughVFIO

    来源:http://blog.csdn.net/halcyonbaby/article/details/37776211

    1.安装kernelmodule(系统已经默认安装)

    2.

    sudo modprobe vfio
    (成功)

    3.

    sudo modprobe vfio-pci
    (成功)

    4.

    cd /sys/bus/pci/devices/0000:04:00.0/
    (成功)

    5.

    readlink iommu_group
    (成功: ../../../../kernel/iommu_groups/11

    6.

    ll iommu_group/devices
    (成功:

    total0

    drwxr-xr-x2 root root 0 51610:22 ./

    drwxr-xr-x3 root root 0 51610:06 ../

    lrwxrwxrwx1 root root 0 51610:22 0000:04:00.0 ->../../../../devices/pci0000:00/0000:00:1c.4/0000:04:00.0/

    lrwxrwxrwx1 root root 0 51610:22 0000:04:00.1 ->../../../../devices/pci0000:00/0000:00:1c.4/0000:04:00.1/

    7.

    echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind
    (与方案 2 第四步相同,但是居然成功了

    8.

    echo 10de 13f1 > /sys/bus/pci/drivers/vfio-pci/new_id
    (失败,终端卡住)

    9.将第八步改为echo"10de 13f1" > /sys/bus/pci/drivers/vfio-pci/new_id(失败,终端卡住)

    10.尝试使用nano命令改变该文件内容(失败,终多端卡住)

    11.尝试先chmod744/777再用echo改变文件内容(失败,终端卡住)

    12.重启之后又试了一次(终端依然卡住)

    13.尝试sh-c "echo 10de 13f1 > /sys/bus/pci/drivers/vfio-pci/new_id"(失败)

    14.由于7.成功了,尝试转向方案2,依然失败

    执行第七步之后/sys/bus/pci/devices/0000:04:00.0/下的文件有明显改变,可能会对之后的操作方案有影响


    方案4GPUPassthrough via vfio-pci with KVM on Ubuntu 15.04

    1.Install Ubuntu, I'm using 15.04 Server. You should also update your kernel tov4.0.0.(我的:ubuntu14.04,内核版本4.4.0

    2.

    sudo apt-get install qemu-kvm
    (完成)

    3.in/etc/default/grub:

    GRUB_CMDLINE_LINUX_DEFAULT="nomodeset intel_iommu=on pcie_acs_override=downstream pci=assign-bussesigb.max_vfs=2"
    (成功)

    Notice:"pci=assign-busses igb.max_vfs=2" were for my i350 SR-IOV.You can ignore them if you do not have SR-IOV in mind.

    补充:这里应该再

    sudo update-gru

    4.Inetc/modprobe.d/local.conf(new file): (成功)

    optionsvfio-pciids=1002:ffffffff:ffffffff:ffffffff:00030000:ffff00ff,1002:ffffffff:ffffffff:ffffffff:00040300:ffffffff,10de:ffffffff:ffffffff:ffffffff:00030000:ffff00ff,10de:ffffffff:ffffffff:ffffffff:00040300:ffffffff

    补充:我使用的命令是sudo visudo gedit

    5.Reboot(成功)

    然而此方案后面语焉不详,所以暂时放弃了


    方案5:重新尝试之前的方案

    研究了一下显卡驱动的问题,发现我的显卡驱动没安好。

    默默安好了显卡驱动。

    尝试方案1:卡死在第6步。

    尝试方案2:系统卡死在之前成功了的第3步。重启后又尝试了一下,第3/4步成功。最后一步卡死。

    尝试方案3:第7步卡死


    方案6GPU Passthrough, VGA Passthrough in KVM

    来源:https://blog.lofyer.org/pass-host-gpu-to-guest-via-qemu-ncursescurses/

    1.Enable the mainboard VxT, iommu and alter the video device to Intel HD(完成)

    2.Modify the kernel parameter,morprobe.d and libvirt.conf

    Add follow parameters to grub.conf:

     intel_iommu=onpci-stub.ids=1002:6819,1002:aab0,vfio_iommu_type1.allow_unsafe_interrupts=1
    (成功)

    3.Addmodprobe.conf to /etc/modprobe.d/ with this content:(成功)

    blacklistradeon
    optionskvm ignore_msrs=1
    optionskvm allow_unsafe_interrupts=1
    optionskvm-amd npt=0
    optionskvm_intel emulate_invalid_guest_state=0
    optionsvfio_iommu_type1 allow_unsafe_interrupts=1

    4.changethe following options in /etc/libvirt/qemu.conf:(成功)

    #The user ID for QEMU processes run by the system instance.
    user= "root"
    
    #The group ID for QEMU processes run by the system instance.
    group= "root"
    
    ......
    
    #If clear_emulator_capabilities is enabled, libvirt will drop all
    #privileged capabilities of the QEmu/KVM emulator. This is enabled by
    #default.
    #
    #Warning: Disabling this option means that a compromised guest can
    #exploit the privileges and possibly do damage to the host.
    #
    clear_emulator_capabilities= 0

    5.File:vfio-bind: (成功)

    	#!/bin/bash 
    	modprobe vfio-pci 
    	for var in "$@"; do 
    	        for dev in $(ls /sys/bus/pci/devices/$var/iommu_group/devices); do 
    	                vendor=$(cat /sys/bus/pci/devices/$dev/vendor) 
    	                device=$(cat /sys/bus/pci/devices/$dev/device) 
    	                if [ -e /sys/bus/pci/devices/$dev/driver ]; then 
    	                        echo $dev > /sys/bus/pci/devices/$dev/driver/unbind 
    	                        fi 
    	                echo $vendor $device > /sys/bus/pci/drivers/vfio-pci/new_id 
    	        done 
    	done

    6.执行./vfio-bind0000:04:00.0 0000:04:00.1 (失败,终端卡住)

    (注:这里我先用了chmod+x才执行了该文件)

    总结一下这个方案,不过是之前的方案三换汤不换药。


    方案7:修改虚拟机的xml文件

    来源:http://www.server110.com/kvm/201402/5547.html

    sudovirt-install --name=one --ram 2048 --vcpus=4 --diskpath=/root/one.img,size=40 --accelerate --cdrom/home/ubuntu/Downloads/111/cn_windows_7_ultimate_with_sp1_x64_dvd_u_677408.iso

    (成功)

    virsh edit One

    在xml文件内添加:

        <hostdev mode='subsystem' type='pci' managed='yes'> 
          <source> 
          <address domain='0x0000' bus='0x04' slot='0x00' function='0x0'/> 
          <address domain='0x0000' bus='0x04' slot='0x00' function='0x1'/> 
          </source> 
        </hostdev> 

    (成功)


    Failed.Try again? [y,n,f,?]:

    error:(domain_definition):69: Opening and ending tag mismatch: hostdev line68 and devices

    </devices>(已解决)


    Failed.Try again? [y,n,f,?]:

    error:XML error: Missing <source> element in hostdev device(已解决)


    Domain One XML configuration edited.(成功)


    virsh undefine One

    virsh define One.xml

    error:Failed to open file 'One.xml': No such file or directory


    方案8:首先编译kernel

    来源:http://www.linux-kvm.org/page/How_to_assign_devices_with_VT-d_in_KVM

    ……正在折腾中,待更新。


    方案9:询问百度知道

    来源:https://zhidao.baidu.com/question/1823842477872037748.html

    在百度知道里面花了点财富值提问了一下我的问题,得到的答案是:

    这个现象的原因一般有三个:1、硬件超温过热。2、系统某些基层文件出问题。3、内存松动。解决办法:1、清尘,检查散热风扇。2、重装系统。3、重新插拔内存并擦拭金手指部分。

    然而这个电脑是个新电脑,不存在灰尘过多和内存松动的问题。(虽然如此,我还是把显卡和内存条都插拔并且清理了一遍)

    重装系统也尝试了。

    最终这三个方法都没有解决我的问题。


    方案10: 检查显卡驱动

    这个方案得到了成功。

    具体步骤见在ubuntu 14.04下的KVM虚拟机显卡直通。



    /本文第一次编辑于:2017/5/1

    /本文第二次编辑于:2017/5/31

    /本文第三次编辑于:2017/6/14

    展开全文
  • gpu-passthrough:在GNULinux上使用libvirt和KVM的GPU直通教程
  • KVM+显卡直通(passthrough)

    千次阅读 2020-09-30 11:20:14
    1.硬件条件 首先要确定主板和CPU都支持VT-d技术,即Virtualization Technology for Direct I/O(英特尔虚拟技术)。近年的产品应该都支持此技术。...注意做显卡直通需要两块显卡,一块主机用,另一块虚拟机用,主板有

    1.硬件条件
    首先要确定主板和CPU都支持VT-d技术,即Virtualization Technology for Direct I/O(英特尔虚拟技术)。近年的产品应该都支持此技术。 在BIOS里将
    还要确定要直通的显卡支持PCI Pass-through。似乎A卡对于直通的支持比N卡好,但N卡性能比A卡好,这个大家都知道。目前市面上的显卡一般都支持直通。我用过的NVIDIA 的M60和GeForce系统960,970,1080系列都支持的。注意做显卡直通需要两块显卡,一块主机用,另一块虚拟机用,主板有集成显卡的可以采用将集成显卡给宿主机,PCI的独立显卡给虚拟机用。

    2.准备工作
    在BIOS将VT-d设置成enable(主板BIOS设置项名称不一样,类似于虚拟化技术的项目打开即可)。

    3.安装Ubuntu系统。
    宿主机操作系统:ubuntu 16.X和18.X都可以,18版本较新在有的机器上图形界面登录的位置卡的比较厉害,16版本比较稳定。

    安装完ubuntu系统打开命令行终端,输入如下命令,将系统更新至最新:

    sudo apt-get update
    sudo apt-get upgrade

    如果是原本就已经有了ubuntu系统,则不需要重新安装,可以通过如下命令,确认CPU是否支持硬件虚拟化,有内容输入即可
    egrep -o ‘(vmx|svm)’ /proc/cpuinfo

    4.安装KVM

    输入如下命令安装KVM及Libvirt:

    sudo apt-get install qemu-kvm libvirt-bin bridge-utils ubuntu-vm-builder virt-manager virtinst

    启动libvirt服务:

    /etc/init.d/libvirtd start

    5.确认内核是否支持iommu
    cat /proc/cmdline | grep iommu
    如果没有输出结果,添加intel_iommu=on到grub的启动参数,需要重启。

    加"名称=值”的键值对到GRUB_CMDLINE_LINUX_DEFAULT变量,添加多个时用空格隔开,
    例如GRUB_CMDLINE_LINUX_DEFAULT="… name=value"

    (注意:理论上添加到GRUB_CMDLINE_LINUX变量和GRUB_CMDLINE_LINUX_DEFAULT任意一个都可以)

    使用命令:sudo view /etc/default/grub 编辑grub

    找到GRUB_CMDLINE_LINUX_DEFAULT或GRUB_CMDLINE_LINUX加入iommu开关,如下:
    GRUB_CMDLINE_LINUX=“intel_iommu=on”

    然后使用grub-mkconfig -o /boot/grub/grub.cfg更新grub.cfg文件
    或者,使用sudo update-grub来更新grub文件。

    之后需要重启服务器(即便不做第五步最好也重启的一下)。

    6.使用dmesg | grep IOMMU 或dmesg | grep -e DMAR -e IOMMU检查VT-d(AMD芯片时是 IOV)是否工作。若没有相应输出,需要重新检查之前的步骤。

    7.查看pci设备信息
    lspci -nn | grep NVIDIA

    如果不是NVIDIA的显卡,可以换自己显卡的关键字查询。重查询结果上注意查看自己独立显卡(也就是要直通的显卡)的设备ID和地址,形如: [10de 1b80] 和 [10de 10f0], 01.00.0和01.00.1。(Gefore显卡一般会集成一个声卡芯片)

    查看驱动

    lspci -vv -s 01:00.0 | grep driver

    Kernel driver in use: nouveau (ubuntu系统为显卡绑定的默认驱动)
    lspci -vv -s 01:00.1 | grep driver
    Kernel driver in user: snd_hda_intel (显卡上附带的集成声卡的默认驱动)

    禁用显卡的默认驱动

    禁用nouveau, snd_hda_intel,将其添加到/etc/modprobe.d/blacklist.conf文件最后
    blacklist nouveau
    blacklist snd_hda_intel

    8.将显卡从宿主机解绑定

    $ modprobe pci_stub
    $ echo “10de 1b80” > /sys/bus/pci/drivers/pci-stub/new_id
    $ echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
    $ echo 0000:01:00.0 > /sys/bus/pci/drivers/pci-stub/bind
    $ echo “10de 10f0” > /sys/bus/pci/drivers/pci-stub/new_id
    $ echo 0000:01:00.1 > /sys/bus/pci/devices/0000:01:00.1/driver/unbind
    $ echo 0000:01:00.1 > /sys/bus/pci/drivers/pci-stub/bind

    这步的前后忘记了是否需要重启,如果遇到问题,自己重启一下试试吧。

    9.查看显卡设备所在组
    find /sys/kernel/iommu_groups/ -type l

    在做直通的时候,需要将同组内的所有设备全部直通给虚拟机(也就是一个独立完整的设备直通给虚拟机,不能一个设备一部分直通给虚拟机一部分在宿主机),比如刚才上面的显卡包括显卡和声卡,都需要一起直通给虚拟机。另外需要注意有的显卡硬件在查询所在组的时候,同组内除了显卡和声卡以外还会显示一个设备(比如00:01.0),这个好像是CPU和PIC设备之间的桥设备(本人不从事硬件相关工作,所以具体名称我也叫不好,勿拍),这个设备在稍后做直通的时候可以忽略,不同直通给虚拟机。

    è¿éåå¾çæè¿°

    10.安装OVMF

    apt-get install ovmf

    11.创建Windows虚拟机,通过在ubuntu图形界面上找到virt-manager工具,创建Windows10虚拟机,这个和其他创建虚拟机软件差不多(比如,Vmware,Virtualbox等),如果不了解的,可以自己百度查询。

    注意创建虚拟机时选择自己配置,在最初的设定页面上选择引导方式为UFFI(这个功能也就是刚才安装的OVMF支持的)一直到把Windows系统安装完成。
    在这里插入图片描述

    安装完以后,将Windows更新至最新。然后关闭虚拟机。

    在KVM管理界面(virt-manager)上,通过添加设备,将显卡(以及集成的声卡)PCI设备一并分配给虚拟机。

    然后启动虚拟机,联网下载对应的显卡驱动,安装驱动,安装完驱动,在设备管理中发现显卡驱动出现43#错误,停止工作。

    下载TightVNC,在虚拟机上安装并运行VNC Server(默认端口5900),允许开机自动运行。

    关闭虚拟机。

    12.更改Windows10虚拟机设置。

    虚拟机配置文件在/etc/libvirt/qemu/目录下,打开编辑,按照红色部分修改

    /usr/share/OVMF/OVMF_CODE.fd
    /var/lib/libvirt/qemu/nvram/win10-2_VARS.fd

    ... ...

    loader 和nvram的template值是使用的OVMF提供的,nvram标签内的值是取决于自己创建的虚拟机的名字。

    注:上面这部分是为了解决Windows中安装完显卡驱动显示驱动异常43#错误的问题,也就是Nvidia的驱动中对Geforce的显卡做了检查,消费级显卡不允许在虚拟机中运行,只允许专业卡比如M60进行虚拟化。所以我们将Geforce显卡做了直通的时候,驱动就会自己检查报错停止工作。我们在hyperv中提供虚假vender_id,隐藏KVM以达到欺骗的目的,但只做这两点还不行,所以才需要安装OVMF在rom引导上做手脚,使用OVMF提供的ROM引导系统。这样就躲过了驱动的检查。不过这样做之后,在宿主机的Virt-Manager中看不见虚拟机的Windows界面了,显示黑屏,我们需要通过VNC连接虚拟机进行操作和使用。

    修改完配置文件,保存退出。

    13.启动Windows虚拟机,看见OVMF 的UFFI引导界面,过一会儿在另一台机器上通过VNC客户端连接虚拟机(服务端)的Ip,没有意外,就可以连接上了,查看显卡设备的驱动就应该正常了。

    展开全文
  • KVM+显卡直通(passthrough)配置方法及问题说明

    万次阅读 热门讨论 2018-12-24 17:02:00
    1.硬件条件 首先要确定主板和CPU都...还要确定要直通显卡支持PCI Pass-through。似乎A卡对于直通的支持比N卡好,但N卡性能比A卡好,这个大家都知道。目前市面上的显卡一般都支持直通。我用过的NVIDIA 的M60和GeF...

    1.硬件条件
    首先要确定主板和CPU都支持VT-d技术,即Virtualization Technology for Direct I/O(英特尔虚拟技术)。近年的产品应该都支持此技术。 在BIOS里将
    还要确定要直通的显卡支持PCI Pass-through。似乎A卡对于直通的支持比N卡好,但N卡性能比A卡好,这个大家都知道。目前市面上的显卡一般都支持直通。我用过的NVIDIA 的M60和GeForce系统960,970,1080系列都支持的。注意做显卡直通需要两块显卡,一块主机用,另一块虚拟机用,主板有集成显卡的可以采用将集成显卡给宿主机,PCI的独立显卡给虚拟机用。

    2.准备工作
    在BIOS将VT-d设置成enable(主板BIOS设置项名称不一样,类似于虚拟化技术的项目打开即可)。

    3.安装Ubuntu系统。 
    宿主机操作系统:ubuntu 16.X和18.X都可以,18版本较新在有的机器上图形界面登录的位置卡的比较厉害,16版本比较稳定。

    安装完ubuntu系统打开命令行终端,输入如下命令,将系统更新至最新:

    sudo apt-get update
    sudo apt-get upgrade

    如果是原本就已经有了ubuntu系统,则不需要重新安装,可以通过如下命令,确认CPU是否支持硬件虚拟化,有内容输入即可
    egrep -o '(vmx|svm)' /proc/cpuinfo

    4.安装KVM

    输入如下命令安装KVM及Libvirt:

    sudo apt-get install qemu-kvm libvirt-bin bridge-utils ubuntu-vm-builder virt-manager virtinst

    启动libvirt服务:

    /etc/init.d/libvirtd start

    5.确认内核是否支持iommu
    cat /proc/cmdline | grep iommu
    如果没有输出结果,添加intel_iommu=on到grub的启动参数,需要重启。

    加"名称=值”的键值对到GRUB_CMDLINE_LINUX_DEFAULT变量,添加多个时用空格隔开,
    例如GRUB_CMDLINE_LINUX_DEFAULT="...... name=value"

    (注意:理论上添加到GRUB_CMDLINE_LINUX变量和GRUB_CMDLINE_LINUX_DEFAULT任意一个都可以)

    使用命令:sudo view /etc/default/grub 编辑grub

    找到GRUB_CMDLINE_LINUX_DEFAULT或GRUB_CMDLINE_LINUX加入iommu开关,如下:
    GRUB_CMDLINE_LINUX="intel_iommu=on"

    然后使用grub-mkconfig -o /boot/grub/grub.cfg更新grub.cfg文件
    或者,使用sudo update-grub来更新grub文件。

    之后需要重启服务器(即便不做第五步最好也重启的一下)。

    6.使用dmesg | grep IOMMU 或dmesg | grep -e DMAR -e IOMMU检查VT-d(AMD芯片时是 IOV)是否工作。若没有相应输出,需要重新检查之前的步骤。

    7.查看pci设备信息
    lspci -nn | grep NVIDIA

    如果不是NVIDIA的显卡,可以换自己显卡的关键字查询。重查询结果上注意查看自己独立显卡(也就是要直通的显卡)的设备ID和地址,形如: [10de 1b80] 和 [10de 10f0], 01.00.0和01.00.1。(Gefore显卡一般会集成一个声卡芯片)

    查看驱动

    lspci -vv -s 01:00.0 | grep driver
      >Kernel driver in use: nouveau    (ubuntu系统为显卡绑定的默认驱动)
    lspci -vv -s 01:00.1 | grep driver
      >Kernel driver in user: snd_hda_intel (显卡上附带的集成声卡的默认驱动)

    禁用显卡的默认驱动

    禁用nouveau, snd_hda_intel,将其添加到/etc/modprobe.d/blacklist.conf文件最后
    blacklist nouveau
    blacklist snd_hda_intel

    8.将显卡从宿主机解绑定

    $ modprobe pci_stub
    $ echo "10de 1b80" > /sys/bus/pci/drivers/pci-stub/new_id
    $ echo 0000:01:00.0 > /sys/bus/pci/devices/0000:01:00.0/driver/unbind
    $ echo 0000:01:00.0 > /sys/bus/pci/drivers/pci-stub/bind
    $ echo "10de 10f0" > /sys/bus/pci/drivers/pci-stub/new_id
    $ echo 0000:01:00.1 > /sys/bus/pci/devices/0000:01:00.1/driver/unbind
    $ echo 0000:01:00.1 > /sys/bus/pci/drivers/pci-stub/bind

    这步的前后忘记了是否需要重启,如果遇到问题,自己重启一下试试吧。

    9.查看显卡设备所在组
    find /sys/kernel/iommu_groups/ -type l

    在做直通的时候,需要将同组内的所有设备全部直通给虚拟机(也就是一个独立完整的设备直通给虚拟机,不能一个设备一部分直通给虚拟机一部分在宿主机),比如刚才上面的显卡包括显卡和声卡,都需要一起直通给虚拟机。另外需要注意有的显卡硬件在查询所在组的时候,同组内除了显卡和声卡以外还会显示一个设备(比如00:01.0),这个好像是CPU和PIC设备之间的桥设备(本人不从事硬件相关工作,所以具体名称我也叫不好,勿拍),这个设备在稍后做直通的时候可以忽略,不同直通给虚拟机。

    è¿éåå¾çæè¿°

    10.安装OVMF

    apt-get install ovmf

    11.创建Windows虚拟机,通过在ubuntu图形界面上找到virt-manager工具,创建Windows10虚拟机,这个和其他创建虚拟机软件差不多(比如,Vmware,Virtualbox等),如果不了解的,可以自己百度查询。

    注意创建虚拟机时选择自己配置,在最初的设定页面上选择引导方式为UFFI(这个功能也就是刚才安装的OVMF支持的)一直到把Windows系统安装完成。

    安装完以后,将Windows更新至最新。然后关闭虚拟机。

    在KVM管理界面(virt-manager)上,通过添加设备,将显卡(以及集成的声卡)PCI设备一并分配给虚拟机。

    然后启动虚拟机,联网下载对应的显卡驱动,安装驱动,安装完驱动,在设备管理中发现显卡驱动出现43#错误,停止工作。

    下载TightVNC,在虚拟机上安装并运行VNC Server(默认端口5900),允许开机自动运行。

    关闭虚拟机。

    12.更改Windows10虚拟机设置。

    虚拟机配置文件在/etc/libvirt/qemu/目录下,打开编辑,按照红色部分修改

    <os>

    ...

      <loader readonly='yes' type='pflash'>/usr/share/OVMF/OVMF_CODE.fd</loader>
      <nvram template='/usr/share/OVMF/OVMF_VARS-pure.efi.fd'>/var/lib/libvirt/qemu/nvram/win10-2_VARS.fd</nvram>

    </os>

    <features>
        ...
        <hyperv>
          <vendor_id state='on' value='0123456789ab'/>
        </hyperv>
        <kvm>
          <hidden state='on'/>
        </kvm>

        ...
    </features>

     

    loader 和nvram的template值是使用的OVMF提供的,nvram标签内的值是取决于自己创建的虚拟机的名字。

    注:上面这部分是为了解决Windows中安装完显卡驱动显示驱动异常43#错误的问题,也就是Nvidia的驱动中对Geforce的显卡做了检查,消费级显卡不允许在虚拟机中运行,只允许专业卡比如M60进行虚拟化。所以我们将Geforce显卡做了直通的时候,驱动就会自己检查报错停止工作。我们在hyperv中提供虚假vender_id,隐藏KVM以达到欺骗的目的,但只做这两点还不行,所以才需要安装OVMF在rom引导上做手脚,使用OVMF提供的ROM引导系统。这样就躲过了驱动的检查。不过这样做之后,在宿主机的Virt-Manager中看不见虚拟机的Windows界面了,显示黑屏,我们需要通过VNC连接虚拟机进行操作和使用。

    修改完配置文件,保存退出。

    13.启动Windows虚拟机,看见OVMF 的UFFI引导界面,过一会儿在另一台机器上通过VNC客户端连接虚拟机(服务端)的Ip,没有意外,就可以连接上了,查看显卡设备的驱动就应该正常了。

    欢迎大家交流:

    都市凡尘

    平行云科技(北京)有限公司

    QQ:18100053

    Email:dwj@pingxingyun.com

    公司主页:http://www.pingxingyun.com

    训课在线:http://www.vrapponline.com

    展开全文
  • KVM虚拟机显卡直通(Ubuntu 14.04)

    万次阅读 2017-06-14 09:47:39
    对于显卡直通,此前我走了很多弯路,在我的博文《我的KVM显卡直通实践》中有过相关记录,在此就不赘述了,只描述一下配置成功的方法。配置好显卡直通的方法:1.硬件条件首先要确定主板和CPU都支持VT-d技术,即...

    对于显卡直通,此前我走了很多弯路,在我的博文《我的KVM显卡直通实践》中有过相关记录,在此就不赘述了,只描述一下配置成功的方法。

    配置好显卡直通的方法:

    1.硬件条件

    首先要确定主板和CPU都支持VT-d技术,即Virtualization Technology for Direct I/O(英特尔虚拟技术)。近年的产品应该都支持此技术。
    还要确定要直通的显卡支持PCI Pass-through。似乎A卡对于直通的支持比N卡好,不过我这台电脑中的NVIDIA Quadro M4000对此是支持的。之前我以为显卡直通需要两块独立显卡,一块主机用,另一块虚拟机用。现在看来是VMware ESXi的显卡直通需要两块显卡,我用KVM配置的则不需要,因为我的主机一直用的是Intel的集成显卡。

    2.准备工作

    在BIOS将VT-d设置成enable,将显卡设置成iGPU(即直接在BIOS中把独立显卡禁用)。
    安装Ubuntu系统。
    此时如果发现鼠标的显示不稳定,屏幕闪烁,就打开系统设置中的显示设置。显示设置里面会看到两块屏幕(可能是因为我把独立显卡与集成显卡都用线连接到了显示器)。把使用独立显卡的那块显示屏关闭。
    使用apt-get update、apt-get upgrade等更新系统。
    安装Bumblebee(我直接安装NVIDIA显卡驱动时无法调成集成显卡显示),参考Bumblebee的wiki

    sudo add-apt-repository ppa:bumblebee/stable
    sudo apt-get update
    sudo apt-get install bumblebee bumblebee-nvidia primus linux-headers-generic

    再安装NVIDIA驱动。(非常重要)
    NVIDIAXServer Settings中的PRIME profiles应该显示使用的是集成显卡。
    配置grub文件。
    sudo gedit /etc/default/grub
    在文件中的GRUB_CMDLINE_LINUX_DEFAULT参数内添加”intel_iommu=on”。
    使用sudo update-grub更新grub。
    重启电脑。
    使用dmesg | grep IOMMU检查VT-d是否工作。若没有相应输出,需要重新检查之前的步骤。

    3.VIFO配置

    使用lspci -nn | grep VGA找到待分配的显卡设备编号。
    0000:04:00.0VGA compatible controller [0300]: NVIDIA Corporation GM204GL [Quadro M4000] [10de:13f1] (rev a1)
    0000:04:00.1Audio device [0403]: NVIDIA Corporation GM204 High Definition Audio Controller [10de:0fbb] (rev a1)
    接着在终端输入:

        sudo modprobe vfio
        sudo modprobe vfio-pci
        sudo su
        cd /sys/bus/pci/devices/0000:04:00.0/
        echo 0000:04:00.0 > /sys/bus/pci/devices/0000:04:00.0/driver/unbind
        echo 10de 13f1 > /sys/bus/pci/drivers/vfio-pci/new_id
        cd /sys/bus/pci/devices/0000:04:00.1/
        echo 0000:04:00.1 > /sys/bus/pci/devices/0000:04:00.1/driver/unbind
        echo 10de 0fbb > /sys/bus/pci/drivers/vfio-pci/new_id

    (注:要确定这两个设备在同一个iommu group,而且同一个group下没有别的硬件。一般是不会有的。可以cd进文件夹然后用readlink iommu_group和ll iommu_group/devices来确定)

    4.虚拟机显卡分配

    安装KVM:

        sudo apt-get install qemu-kvm qemu virt-manager virt-viewer libvirt-bin python-libvirt bridge-utils
    用KVM新建一`这里写代码片`个新的虚拟机,安装好系统。
    将虚拟机关闭,打开KVM虚拟机的信息,添加新的设备。将PCI编号为0000:04:00.0和 0000:04:00.1的设备添加进去,即完成了显卡直通。
    

    5.仍然存在的问题

    显卡直通这样就可以算成功了。
    目前存在的问题是:我在虚拟机里面把显卡的NVIDIA驱动安装好之后,重启虚拟机,就会卡在输入ubuntu账户密码的界面。这确实是一个熟悉的场景,是因为连接的虚拟集成显卡被禁用了,得使用独立显卡。但是虚拟机又没有BIOS,此处的配置还有待于研究(TBC)。


    /本文第一次编辑于2017-6-14

    展开全文
  • kvm GPU直通kvm GPU passthrough)

    千次阅读 2020-03-28 18:56:19
    对于显卡而言,Nvidia有专门支持GPU虚拟化的显卡,比如GRID GPU系列。以NVIDIA GRID K2为例,显存8GB,可虚拟出2块GPU。 对于GTX系列的显卡,如果Host主机为linux系统,想将显卡给虚拟机(windows或者linux)使用,...
  • KVM直通GPU

    2021-11-28 15:04:03
    安装一个nvidia-docker2即可容器直通GPU资源,但是对于虚拟机来说就不太方便了,因此接下来的讲解以及操作就是针对于KVM虚拟来直通GPU 注意:虽然虚拟机直通GPU了,但是这种操作会导致宿主机上失去一块GPU卡。 1. ...
  • 网上很多配置显卡直通的竟然要付费,让我很不爽,所以直接决定在 Google 上找一篇可用的,翻译一下。就当做个贡献了。 配置虚拟机的GPU直通。配置完之后,就可以在虚拟机里面使用GPU了,用于机器学习/深度学习。 在...
  • 一、硬件及需求联想SR650 2x5218,64G,3x1.2T SAS HDD,显卡RTX2080因为对系统要求必须是windows,windows server系统没有显卡驱动,win10又没有对应的服务器硬件驱动,尝试安装windows10,使用windows server2019...
  • KVM 是 Linux 上最成熟的虚拟化框架, 结合了 qemu 的虚拟化功能并且充分利用半虚拟化技术, 提供了很强的 IO 性能.常见的用法有直接调用 qemu commnad, 基于 libvirt(virt manager)/Proxmox 等虚拟化框架即可实现对 ...
  • kvm显卡透传(centos)

    万次阅读 热门讨论 2019-01-10 08:42:46
    一、硬件条件 首先要确定主板和CPU都支持虚拟化技术,在BIOS将VT-d、VT-x设置成enable。...双显卡支持,一块主机用,另一块虚拟机用(一块集显,一块独立理论可以,未测试)。 二、检查支持选项 a、确认内核是否...
  • 1. 确认服务器中是否安装了gpu显卡, 执行lspci -nn | grep -i nvidia,显示如下内容,说明存在GPU,如果没有lspci命令,执行yum install -y sysstat 3b:00.0 3D controller [0302]: NVIDIA Corporation GV100GL ...
  • kvm-gpu kvm-gpu提供实用程序,初始化脚本和配置文件来设置主机系统,以使用KVM虚拟机管理程序将GPU和其他PCIe设备传递到虚拟机。 建造 # apt-get install dpkg-dev $ dpkg-buildpackage -uc -us 内置的.deb将登陆....
  • 1. 简介: 对于GPU卡的物理机器,我们都知道,必然是几百G的内存,至少20核等超高配置,仅仅提供给一个用户来使用,太浪费资源了。...GPU本身是作为显卡来使用,具有图形渲染等能力,但是对于图形图像等
  • 二、虚拟机Gpu显卡直通 参考文档:http://www.singleye.net/2019/07/vmware-esxi-6.7.0-update2-%E4%BD%BF%E7%94%A8-gpu-passthrough-%E6%A8%A1%E5%BC%8F%E7%9A%84%E5%9D%91/ ①设置虚拟机,增加PCI设备,选择对应...
  • Ubuntu+KVM显卡穿透

    千次阅读 2019-12-17 14:44:27
    Ubuntu+KVM显卡穿透 操作系统:ubuntu18.04 主板 :华擎SYS-7048GR-TR Cpu :E5-2630 v4 显卡 NVIDIA-2070s、1060 一、准备检查工作 首先物理硬件是否支持显卡穿透,将主板上的VT-D打开 进入系统查看 ...
  • Hyper-V PCI设置直通——显卡直通

    万次阅读 2020-04-16 23:47:55
    原文地址 很遗憾我失败了,但是找到了一些教程说明这...Hyper-V虚拟机的物理设备直通(Discrete Device Assignment, DDA)与显卡直通实践 这个比较全,包括直通与恢复[Hyper-V 实战] Hyper-V链接PCIE设备直通显卡...
  • KVM虚拟机PCI设备直通

    千次阅读 2020-06-06 16:27:41
    提升性能(如直通网卡和显卡) 减少延迟(避免数据丢失或丢祯) 直接利用bare-metal上设备的驱动 1.3 配置方法 预先配置: a. 打开bios中的VT-d设置 b. kernel引导配置iommu,参见文章 linux开启IOMMU方法 pci直通...
  • 英伟达独立显卡直通虚拟机

    千次阅读 2021-10-11 19:24:00
    显卡直通KVM虚拟机 1、确认CPU是否支持硬件虚拟化 #egrep -o '(vmx|svm)' /proc/cpuinfo vmx vmx vmx 2、确认内核开启iommu分组支持 先进入bios打开VT-d虚拟化选项为enabled #vi /etc/default/grub GRUB_CMDLINE_...
  • PVE开启硬件显卡直通功能

    千次阅读 2021-11-20 01:34:17
    iommu_type1,vfio_pci root@pve:~# 查看显卡 root@pve:~# lspci -nn | grep NV 86:00.0 3D controller [0302]: NVIDIA Corporation TU104GL [Tesla T4] [10de:1eb8] (rev a1) root@pve:~# root@pve:~# 查看显卡ID,...
  • 2019-08-25缘起之前的基于j3455搞的nas,物理机是...网上查了些资料,有人说是显卡驱动的问题,我换了从15年到17年所有的驱动,无一例外,都会出现黑屏问题。于是,狠下心来,反向部署了一套方案,用ubuntu来做物理机...
  • 基于kvm显卡透传

    千次阅读 2017-12-01 20:20:27
    基于kvm显卡透传 ,坑很多 ,下面是我的硬件环境: GPU : NVIDIA Quadro M4000 CPU : Intel(R) Xeon(R) CPU E5-2683 v3 @ 2.00GHz MEM : 32G SSD : 480G OS : CentOS7.3 + Ocata
  • 基于KVM的SRIOV直通配置及性能测试

    千次阅读 2019-10-20 23:47:47
    SRIOV介绍、VF直通配置,以及包转发率性能测试
  • 声明:本博客欢迎转发。...使用场景提升性能(如直通网卡和显卡)减少延迟(避免数据丢失或丢祯)直接利用bare-metal上设备的驱动使用方法1须要CPU支持VT-d。主板也支持该技术。预先配置:打开bios中的V...
  • 本文github地址:Bebove/macos-kvm​github.com适用:amd cpu(intel 也行?)nvidia 显卡,单卡。安装黑苹果,(qemu虚拟机),通过pcie硬件直通,完成几乎没有性能损耗的黑苹果虚拟机。难点:单卡,ubuntu宿主机器...
  • kvm vt-d 功能的配置

    2016-12-09 15:54:36
    kvm中,客户机可以使用的设备大概可以分为以下三类: (1)Emulated device:纯软件模拟的设备 (2)virtio device:实现virtio api的半虚拟化驱动的设备 (3)pci device assginment:pci设备直接分配 前面两种类型之前...
  • 为了让vmware支持显卡,找了好久esxi下载,版本太多了,都不知道要下哪个? 找到别人贡献的百度链接,分析给大家。 使用esxi也不行,esxi需要安装在裸机上,才能支持独显,不能直接安装在windows上。 后来查资料...
  • 问题描述多个客户在使用kvm虚拟机搭配T4 GPU创建windows虚拟机时,物理机出现PCIE报错,且报错指向具体的GPU。测试发现只有在安装GPU驱动时会引发物理机PCIE报错,具体由以下两种情况触发:kvm使用包含T4 GPU 驱动的...

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 207
精华内容 82
关键字:

kvm显卡直通