ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
[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 ```