硬件软件需求

宿主机 PVE(proxmox vm) 6.0版(5.4版存在问题不要用)
虚拟机 windows 10
主板需要支持虚拟化技术
宿主机至少需要两个显卡,一个自用(可以是核显),其他独立PCI显卡直通给虚拟机
宿主机需要保证电源功率足够,双显卡推荐额定功率650W,三显卡900W
主板和显卡不能太老,理论上要2015年以后的型号,已确认的最低配为显卡1050Ti,主板B250M

宿主机BIOS设置

开启集显
BIOS内开启虚拟化相关选项
intel 虚拟化 开启
VT-D 开启 支持SR-IOV 单根IO虚拟化
ASPM 开启 让OS管理PCI设备电源,切断宿主BIOS和PCI设备间的管理关系
完成BIOS后需要关闭电源重新冷启动

安装PVM宿主机

官网下载最新Proxmox 6.0版镜像
https://www.proxmox.com/en/downloads
官网下载最新balenaEtcher镜像烧录工具
https://www.balena.io/etcher/
准备一个2G以上容量U盘,制作Proxmox安装启动U盘,之后插上电脑按流程安装,安装以后可以通过pve管理网页来操作

直通显卡相关设置

这些设置可进pve管理网页中的Shell来完成,下同

开启 iommu

vi /etc/default/grub

找到该文件中,GRUB_CMDLINE_LINUX_DEFAULT="quiet",(按i进入编辑模式)将其更改为
Intel平台(使用intel CPU和主板):

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"

AMD平台(使用amd CPU和主板):

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on video=efifb:off"

保存退出(先按esc,再输入 :wq,回车)
输入

update-grub

更新grub
修改后,利用命令:dmesg | grep -e DMAR -e IOMMU 测试修改效果,若有输出,则正常,无输出,则需要到bios设置虚拟化。

修改vfio配置

vi /etc/modules
 按i(vi命令时使用),然后在该文件末尾加入:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

按esc,输入 :wq 保存输入后退出
IOMMU隔离校验:

find /sys/kernel/iommu_groups/ -type l

加N卡和I卡驱动黑名单,防止更新

直接在命令行中粘贴以下内容:

echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "blacklist nvidia" >> /etc/modprobe.d/blacklist.conf  
echo "blacklist nvidiafb" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i2c_nvidia_gpu" >> /etc/modprobe.d/blacklist.conf
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/blacklist.conf  
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/blacklist.conf
update-initramfs -u

更新信息 后 重启PVE

创建VM

上传必要的ISO文件

需要预先上传两个iso镜像文件到local存储 ,一个是win10安装盘( https://msdn.itellyou.cn/ ),一个是virtio驱动( https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/ )

点左边local存储,依次选择 Content -> Upload 如下图

虚拟机硬件设置

请参考如下虚拟硬件配置来创建虚拟机

重点如下:
创建虚拟机时需要打开高级选项
BIOS 一定要选择 ovmf
Machine 一定要选择q35
cpu 选host,至少4 core
Memory 需要关闭balloon模式,系统需要至少保留2G内存,否则会崩溃
PCI Device 需要设置为待直通的显卡,开启pci-e
Network Device 类型选virtio, 主要不要和其他的mac地址冲突
CD Drive 总线类型一定要选ide,先选择刚刚上传的win10安装盘
Hard Diks 总线类型选scsi

给虚拟机安装windows系统

之后启动并安装windows,安装时需要载入virtio驱动,否则找不到硬盘
把virtio-win.iso 载入虚拟光驱,然后在windows 安装程序里面选择光驱中的 vioscsi\w10\amd64 这个目录,这样就能加载磁盘驱动,找到磁盘了

解决N卡43错误

修改虚拟机配置文件以解决该问题,找到pve虚拟机配置文件,地址在 /etc/pve/qemu-server/
下面只列出需要修改的部分,启动args需要添加到首行

args: -machine type=q35,kernel_irqchip=on
cpu: host,hidden=1,hv-vendor-id=1234567890a4

远程控制

显卡正常后后先安装teamviewer,设置永久密码,随windows启动,然后给显卡插上虚拟显示器(上淘宝购买 HDMI假负载),进windows设置显示器设置只输出到第二显示器(即独立显卡),否则运行游戏会卡,此后通过teamviewer和游戏串双保险远程管理
之后就可以安装游戏串了

共享游戏盘

可以选择某台硬盘大的机器作为游戏共享盘主机,这样更新游戏更加方便

创建LXC container

首先下载个alpine镜像,然后创建一个2核的LXC容器,用来做一个简单的samba共享盘
需要给容器挂载一个足够大的虚拟硬盘

安装samba

apk add samba

创建共享目录

mkdir /media/storage  
chmod 0777 /media/storage

编辑 /etc/samba/smb.conf

 [global]
    workgroup = WORKGROUP
    force user = sambauser
 
 [storage]
    browseable = yes
    writeable = yes
    path = /media/storage

创建系统用户和samba用户,两个用户密码需要相同

adduser sambauser
 
smbpasswd -a sambauser

启动samba共享

rc-update add samba
rc-service samba start

常见问题

N卡出现43错误无法工作

一定要按照前面给的方案手动修改虚拟机配置文件
实在不行 可能是显卡BIOS加载有问题,参照下面网站下载并破解显卡BIOS
https://github.com/Matoking/NVIDIA-vBIOS-VFIO-Patcher

游戏串串流无声音

需要安装虚拟声卡
链接: https://pan.baidu.com/s/19Ml0SjLAAg3Abc9a9vU_Fw 提取码: m7ti

游戏串卡死

请确认是不是windows一直GPU占用100%,如果是则尝试以下方法,在grub后追加 pcie_aspm=off,例如

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off pcie_aspm=off"

安装windows时直接蓝屏,显示[SYSTEM THREAD EXCEPTION NOT HANDLED ...]

运行以下代码然后重启宿主机

echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf