[TOC]
# 硬件软件需求
宿主机 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](https://www.proxmox.com/en/downloads)
官网下载最新balenaEtcher镜像烧录工具
[https://www.balena.io/etcher/](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/](https://msdn.itellyou.cn/) ),一个是virtio驱动( https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/ )
点左边local存储,依次选择 Content -> Upload 如下图
![](https://img.kancloud.cn/da/e1/dae1a4e2f1d283885dfd90a1b762679e_754x275.png)
## 虚拟机硬件设置
请参考如下虚拟硬件配置来创建虚拟机
![](https://img.kancloud.cn/1f/9f/1f9faa4381fe6d90470221bcd54727bc_779x390.png)
重点如下:
创建虚拟机时需要打开高级选项
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://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
```