很早以前就想在家里的PVE虚拟平台上安装Windows操作系统,并且直通显卡,直接连接显示器使用。 因为不想浪费时间,以及不是那么刚需的原因,最终也就不了了之了。但是最近在这个需求变得强烈起来,因为我上班了,总是背着我的ITX小主机上下班也不是很方便,所以重新审视如何利用家里的PVE解决在家用电脑的需求。 ##### 机器配置: | 项目 | 明细 | | ---------- | --------------------------------------------- | | CPU | Intel(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文件: ```shell vim /etc/default/grub ``` 找到:`GRUB_CMDLINE_LINUX_DEFAULT="quiet"` 修改为:`GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"` 修改完成之后更新grub: ```shell update-grub ``` #### 2. 加载相应的内核模块 打开modules文件: ```shell vim /etc/modules ``` 在文件末尾添加以下模块: ``` vfio vfio_iommu_type1 vfio_pci vfio_virqfd ``` #### 3. 将显卡加入PVE的黑名单 打开blacklist.conf文件: ```shell vim /etc/modprobe.d/blacklist.conf ``` 在文件末尾添加以下内容: ```text radeon nouveau nvidia nvidiafb amdgpu snd_hda_intel snd_hda_codec_hdmi i915 ``` 保存文件并更新内核: ``` update-initramfs -u ``` #### 4. 将显卡加入直通组 查看显卡的id: ```shell lspci ``` ![69-1.png][1] VGA开头的就是我的核显,其中00:02是代表组名,00:02.0是代表00:02组的第一个设备。 通过组名查找id: ```shell lspci -n -s 00:02 ``` ![69-2.png][2] 8086:0412是厂商ID:设备ID,如果显卡带有声卡,这里会显示两个设备,一个显卡,一个声卡。我这显卡没有声卡,所以只有一个设备。 记住显卡的id,添加到直通组: ```shell vim /etc/modprobe.d/vfio.conf ``` 在文件末尾添加以下内容: ```text options vfio-pci ids=8086:0412 ``` 如果有多个设备,ids后面每个设备之间用`,`隔开。 还需要添加options防止VM死机,打开kvm.conf: ```shell vim /etc/modprobe.d/kvm.conf ``` 在文件末尾添加如下内容: ```text options kvm ignore_msrs=1 ``` #### 5. 重启PVE 这一步很重要,单独写出来。 #### 6. 开始直通 首先创建一个虚拟机,名称自定义; ![69-3.png][3] 使用光盘镜像的方式安装系统,类别选择Microsoft Windows,版本选择10/2016/2019; ![69-4.png][4] 机器类型选择q35; ![69-5.png][5] 硬盘视情况而定,如果有空白硬盘可以选择直通给windows使用,这样效率最高,我这边没有空闲的硬盘了,所以只能虚拟一块50GB磁盘先用着,轻度使用应该是足够的;如果你是SSD可以勾选SSD仿真,这样可以提高效率; ![69-6.png][6] CPU核心数视情况而定,一定要启用NUMA,CPU类别选择host; ![69-7.png][7] 内存视情况而定,内存和最小内存一定要一致; ![69-8.png][8] 网络这里选择VirtIO半虚拟化,效率比较高; ![69-9.png][9] 确认无误后点击确定,接下来在虚拟机的硬件中添加PCI设备,添加我们要直通的显卡; ![69-10.png][10] 勾选主GPU和PCI-Express; ![69-11.png][11] 最后启动虚拟机,按照正常安装Windows的流程操作一遍,驱动需要下载windows着用的kvm驱动,地址:[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/);下载ISO文件通过虚拟光驱的方式使用,不懂可以问度娘呀。 所有驱动,包括显卡的驱动都装好之后,此时连接显示器应该是没有输出的,而且在设备管理器中,会提示该设备有问题,已被停止,所以接下来要解决这个问题。 将虚拟机关机,在硬件中删除刚刚直通的PCI设备,打开虚拟机的配置文件: ```shell # 100换成具体的虚拟机ID vim /etc/pve/qemu-server/100.conf ``` 在第一行添加如下内容: ```text args: -device vfio-pci,host=00:02.0,addr=0x18,x-vga=on,x-igd-opregion=on ``` 将显示改为无: ![69-12.png][12] 连接好显示器,重新打开虚拟机,不出意外你将看到熟悉的Windows10界面。 ![69-13.png][13] #### 7. 直通USB用于连接键盘鼠标 这一步比较简单,接上键盘鼠标之后,选择添加USB设备,使用USB3视情况勾选: ![69-14.png][14] #### 8. 直通声卡 声卡问题暂时没有解决,什么时候解决了来更新。 目前通过直通USB设备使用USB外置声卡来曲线救国。 > 2020-09-21 更新: > 之所以直通不了,是因为我在BIOS把声卡给禁用了!重新开启之后就好了。 ### 总结 真的挺折腾的,所以之前那么多次想弄,最后也都放弃了,不得不说是明智之举。 网上这方面的教程太少了,和我的情况一样的更是几乎没有,我也是查了很多资料,相互印证才在我的环境上成功的,所以写出来,能给大家多一个参考也是极好的 ::aru:proud:: 。 [1]: https://www.simaek.com/usr/uploads/2020/08/3651716431.png [2]: https://www.simaek.com/usr/uploads/2020/08/2310726043.png [3]: https://www.simaek.com/usr/uploads/2020/08/2542977701.png [4]: https://www.simaek.com/usr/uploads/2020/08/2469892795.png [5]: https://www.simaek.com/usr/uploads/2020/08/32926331.png [6]: https://www.simaek.com/usr/uploads/2020/08/1675122660.png [7]: https://www.simaek.com/usr/uploads/2020/08/2445676293.png [8]: https://www.simaek.com/usr/uploads/2020/08/3200896087.png [9]: https://www.simaek.com/usr/uploads/2020/08/2823919278.png [10]: https://www.simaek.com/usr/uploads/2020/08/1844327137.png [11]: https://www.simaek.com/usr/uploads/2020/08/1812348716.png [12]: https://www.simaek.com/usr/uploads/2020/08/206393371.png [13]: https://www.simaek.com/usr/uploads/2020/08/3613401290.png [14]: https://www.simaek.com/usr/uploads/2020/08/3906704411.png Loading... 很早以前就想在家里的PVE虚拟平台上安装Windows操作系统,并且直通显卡,直接连接显示器使用。 因为不想浪费时间,以及不是那么刚需的原因,最终也就不了了之了。但是最近在这个需求变得强烈起来,因为我上班了,总是背着我的ITX小主机上下班也不是很方便,所以重新审视如何利用家里的PVE解决在家用电脑的需求。 ##### 机器配置: | 项目 | 明细 | | ---------- | --------------------------------------------- | | CPU | Intel(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文件: ```shell vim /etc/default/grub ``` 找到:`GRUB_CMDLINE_LINUX_DEFAULT="quiet"` 修改为:`GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"` 修改完成之后更新grub: ```shell update-grub ``` #### 2. 加载相应的内核模块 打开modules文件: ```shell vim /etc/modules ``` 在文件末尾添加以下模块: ``` vfio vfio_iommu_type1 vfio_pci vfio_virqfd ``` #### 3. 将显卡加入PVE的黑名单 打开blacklist.conf文件: ```shell vim /etc/modprobe.d/blacklist.conf ``` 在文件末尾添加以下内容: ```text radeon nouveau nvidia nvidiafb amdgpu snd_hda_intel snd_hda_codec_hdmi i915 ``` 保存文件并更新内核: ``` update-initramfs -u ``` #### 4. 将显卡加入直通组 查看显卡的id: ```shell lspci ``` ![69-1.png][1] VGA开头的就是我的核显,其中00:02是代表组名,00:02.0是代表00:02组的第一个设备。 通过组名查找id: ```shell lspci -n -s 00:02 ``` ![69-2.png][2] 8086:0412是厂商ID:设备ID,如果显卡带有声卡,这里会显示两个设备,一个显卡,一个声卡。我这显卡没有声卡,所以只有一个设备。 记住显卡的id,添加到直通组: ```shell vim /etc/modprobe.d/vfio.conf ``` 在文件末尾添加以下内容: ```text options vfio-pci ids=8086:0412 ``` 如果有多个设备,ids后面每个设备之间用`,`隔开。 还需要添加options防止VM死机,打开kvm.conf: ```shell vim /etc/modprobe.d/kvm.conf ``` 在文件末尾添加如下内容: ```text options kvm ignore_msrs=1 ``` #### 5. 重启PVE 这一步很重要,单独写出来。 #### 6. 开始直通 首先创建一个虚拟机,名称自定义; ![69-3.png][3] 使用光盘镜像的方式安装系统,类别选择Microsoft Windows,版本选择10/2016/2019; ![69-4.png][4] 机器类型选择q35; ![69-5.png][5] 硬盘视情况而定,如果有空白硬盘可以选择直通给windows使用,这样效率最高,我这边没有空闲的硬盘了,所以只能虚拟一块50GB磁盘先用着,轻度使用应该是足够的;如果你是SSD可以勾选SSD仿真,这样可以提高效率; ![69-6.png][6] CPU核心数视情况而定,一定要启用NUMA,CPU类别选择host; ![69-7.png][7] 内存视情况而定,内存和最小内存一定要一致; ![69-8.png][8] 网络这里选择VirtIO半虚拟化,效率比较高; ![69-9.png][9] 确认无误后点击确定,接下来在虚拟机的硬件中添加PCI设备,添加我们要直通的显卡; ![69-10.png][10] 勾选主GPU和PCI-Express; ![69-11.png][11] 最后启动虚拟机,按照正常安装Windows的流程操作一遍,驱动需要下载windows着用的kvm驱动,地址:[https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/](https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/);下载ISO文件通过虚拟光驱的方式使用,不懂可以问度娘呀。 所有驱动,包括显卡的驱动都装好之后,此时连接显示器应该是没有输出的,而且在设备管理器中,会提示该设备有问题,已被停止,所以接下来要解决这个问题。 将虚拟机关机,在硬件中删除刚刚直通的PCI设备,打开虚拟机的配置文件: ```shell # 100换成具体的虚拟机ID vim /etc/pve/qemu-server/100.conf ``` 在第一行添加如下内容: ```text args: -device vfio-pci,host=00:02.0,addr=0x18,x-vga=on,x-igd-opregion=on ``` 将显示改为无: ![69-12.png][12] 连接好显示器,重新打开虚拟机,不出意外你将看到熟悉的Windows10界面。 ![69-13.png][13] #### 7. 直通USB用于连接键盘鼠标 这一步比较简单,接上键盘鼠标之后,选择添加USB设备,使用USB3视情况勾选: ![69-14.png][14] #### 8. 直通声卡 声卡问题暂时没有解决,什么时候解决了来更新。 目前通过直通USB设备使用USB外置声卡来曲线救国。 > 2020-09-21 更新: > 之所以直通不了,是因为我在BIOS把声卡给禁用了!重新开启之后就好了。 ### 总结 真的挺折腾的,所以之前那么多次想弄,最后也都放弃了,不得不说是明智之举。 网上这方面的教程太少了,和我的情况一样的更是几乎没有,我也是查了很多资料,相互印证才在我的环境上成功的,所以写出来,能给大家多一个参考也是极好的 <img src="https://www.simaek.com/usr/themes/handsome/assets/img/emotion/aru/proud.png" class="emotion-aru"> 。 [1]: https://www.simaek.com/usr/uploads/2020/08/3651716431.png [2]: https://www.simaek.com/usr/uploads/2020/08/2310726043.png [3]: https://www.simaek.com/usr/uploads/2020/08/2542977701.png [4]: https://www.simaek.com/usr/uploads/2020/08/2469892795.png [5]: https://www.simaek.com/usr/uploads/2020/08/32926331.png [6]: https://www.simaek.com/usr/uploads/2020/08/1675122660.png [7]: https://www.simaek.com/usr/uploads/2020/08/2445676293.png [8]: https://www.simaek.com/usr/uploads/2020/08/3200896087.png [9]: https://www.simaek.com/usr/uploads/2020/08/2823919278.png [10]: https://www.simaek.com/usr/uploads/2020/08/1844327137.png [11]: https://www.simaek.com/usr/uploads/2020/08/1812348716.png [12]: https://www.simaek.com/usr/uploads/2020/08/206393371.png [13]: https://www.simaek.com/usr/uploads/2020/08/3613401290.png [14]: https://www.simaek.com/usr/uploads/2020/08/3906704411.png 最后修改:2023 年 08 月 02 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 70 如果觉得我的文章对你有用,请随意赞赏