很早以前就想在家里的PVE虚拟平台上安装Windows操作系统,并且直通显卡,直接连接显示器使用。

因为不想浪费时间,以及不是那么刚需的原因,最终也就不了了之了。但是最近在这个需求变得强烈起来,因为我上班了,总是背着我的ITX小主机上下班也不是很方便,所以重新审视如何利用家里的PVE解决在家用电脑的需求。

机器配置:
项目明细
CPUIntel(R) Core(TM) i5-4590(4核4线程@3.30GHz)
内存16GB 1600 DDR3(4GB*4)
芯片组Q87芯片组 支持VT-d
固态硬盘Samsung 850EVO 120GB
机械硬盘西部数据 4TB蓝盘(直通给了NAS)
板载网卡Intel 1000Mbps以太网卡
拓展网卡Intel i350-T2 千兆以太网卡
机箱及主板Dell Optiplex 9020SFF 准系统
目前运行虚拟机:
  • MikroTik Router OS:作为主路由拨号上网、流控
  • OpwenWrt:作为旁路由实现增强功能
  • DSM:黑群晖NAS
  • CentOS:作为学习用机,部署自己写的项目
  • Windows10:即将安装,作为备用机

正题:PVE安装Window10并且直通核显

本篇教程只适用于Intel平台核显的直通,其他情况可以酌情参考。

PVE环境配置

首先确认主板是否支持VT-d技术,可以直接进BIOS查看有无此设置项,或者到Intel官网查找芯片组的产品规范书进行确认。如果支持,需要先打开VT-d功能,如果不支持,下面的内容就不用看了。

1. 开启iommu

打开grub文件:

vim /etc/default/grub

找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"

修改为:GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"

修改完成之后更新grub:

update-grub

2. 加载相应的内核模块

打开modules文件:

vim /etc/modules

在文件末尾添加以下模块:

vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd

3. 将显卡加入PVE的黑名单

打开blacklist.conf文件:

vim /etc/modprobe.d/blacklist.conf

在文件末尾添加以下内容:

radeon
nouveau
nvidia
nvidiafb
amdgpu
snd_hda_intel
snd_hda_codec_hdmi
i915

保存文件并更新内核:

update-initramfs -u

4. 将显卡加入直通组

查看显卡的id:

lspci

69-1.png

69-1.png

VGA开头的就是我的核显,其中00:02是代表组名,00:02.0是代表00:02组的第一个设备。

通过组名查找id:

lspci -n -s 00:02

69-2.png

69-2.png

8086:0412是厂商ID:设备ID,如果显卡带有声卡,这里会显示两个设备,一个显卡,一个声卡。我这显卡没有声卡,所以只有一个设备。

记住显卡的id,添加到直通组:

vim /etc/modprobe.d/vfio.conf

在文件末尾添加以下内容:

options vfio-pci ids=8086:0412

如果有多个设备,ids后面每个设备之间用,隔开。

还需要添加options防止VM死机,打开kvm.conf:

vim /etc/modprobe.d/kvm.conf

在文件末尾添加如下内容:

options kvm ignore_msrs=1

5. 重启PVE

这一步很重要,单独写出来。

6. 开始直通

首先创建一个虚拟机,名称自定义;

69-3.png

69-3.png

使用光盘镜像的方式安装系统,类别选择Microsoft Windows,版本选择10/2016/2019;

69-4.png

69-4.png

机器类型选择q35;

69-5.png

69-5.png

硬盘视情况而定,如果有空白硬盘可以选择直通给windows使用,这样效率最高,我这边没有空闲的硬盘了,所以只能虚拟一块50GB磁盘先用着,轻度使用应该是足够的;如果你是SSD可以勾选SSD仿真,这样可以提高效率;

69-6.png

69-6.png

CPU核心数视情况而定,一定要启用NUMA,CPU类别选择host;

69-7.png

69-7.png

内存视情况而定,内存和最小内存一定要一致;

69-8.png

69-8.png

网络这里选择VirtIO半虚拟化,效率比较高;

69-9.png

69-9.png

确认无误后点击确定,接下来在虚拟机的硬件中添加PCI设备,添加我们要直通的显卡;

69-10.png

69-10.png

勾选主GPU和PCI-Express;

69-11.png

69-11.png

最后启动虚拟机,按照正常安装Windows的流程操作一遍,驱动需要下载windows着用的kvm驱动,地址:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/;下载ISO文件通过虚拟光驱的方式使用,不懂可以问度娘呀。

所有驱动,包括显卡的驱动都装好之后,此时连接显示器应该是没有输出的,而且在设备管理器中,会提示该设备有问题,已被停止,所以接下来要解决这个问题。

将虚拟机关机,在硬件中删除刚刚直通的PCI设备,打开虚拟机的配置文件:

# 100换成具体的虚拟机ID
vim /etc/pve/qemu-server/100.conf

在第一行添加如下内容:

args: -device vfio-pci,host=00:02.0,addr=0x18,x-vga=on,x-igd-opregion=on

将显示改为无:

69-12.png

69-12.png

连接好显示器,重新打开虚拟机,不出意外你将看到熟悉的Windows10界面。

69-13.png

69-13.png

7. 直通USB用于连接键盘鼠标

这一步比较简单,接上键盘鼠标之后,选择添加USB设备,使用USB3视情况勾选:

69-14.png

69-14.png

8. 直通声卡

声卡问题暂时没有解决,什么时候解决了来更新。

目前通过直通USB设备使用USB外置声卡来曲线救国。

2020-09-21 更新:
之所以直通不了,是因为我在BIOS把声卡给禁用了!重新开启之后就好了。

总结

真的挺折腾的,所以之前那么多次想弄,最后也都放弃了,不得不说是明智之举。

网上这方面的教程太少了,和我的情况一样的更是几乎没有,我也是查了很多资料,相互印证才在我的环境上成功的,所以写出来,能给大家多一个参考也是极好的  。

点赞(21) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部