当前位置: 首页>編程日記>正文

linux虚拟核显,PVE直通核显搭建虚拟Win10 HTPC避坑指南

linux虚拟核显,PVE直通核显搭建虚拟Win10 HTPC避坑指南

在PVE上搭建软路由、NAS等虚拟系统都相对容易,而HTPC却因为核显或显卡的直通问题而相对复杂,本文将详细介绍PVE虚拟环境下,直通给WIN10做HTPC并实现HDMI输出的详细步骤,以及避坑指南。

先上成果:左边屏是PVE下直通给WIN10核显HDMI输出的,右边屏PVE控制台看到的虚拟屏。

779c4eb747b64b654a6a3acbeb2a68f5.png

一、准备工作

⑴ 一台X86物理机,已经完成PVE虚拟环境的安装配置(版本6.1-7)

⑵ PVE物理机BIOS开启VT-x虚拟化技术

⑶ Win10最新镜像。

⑷ Win10虚拟机驱动包:virtio-win.iso。

二、开启PVE核显直通

1、启动内核IOMMU支持

打开PVE节点的shell,输入命令:

nano /etc/default/grub

779c4eb747b64b654a6a3acbeb2a68f5.png

开启IOMMU支持:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off"

amd CPU修改为:

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt video=efifb:off,vesafb:off"

779c4eb747b64b654a6a3acbeb2a68f5.png

其中“iommu=pt”不是必须的,PT模式只在必要的时候开启设备的IOMMU转换,可以提高未直通设备PCIe的性能,建议添加。

编辑完文件后按“Ctrl + X” > “Y” > “回车”,确认保存并退出,然后更新一下引导配置:

update-grub

2、加载硬件直通相关模块

在PVE的shell中输入:

nano /etc/modules

查看modules中是否有这些PVE硬件直通相关的模块,如果没有就添加到文件末尾。

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

779c4eb747b64b654a6a3acbeb2a68f5.png

3、添加驱动黑名单

编辑PVE系统的驱动黑名单配置文件:

nano /etc/modprobe.d/blacklist.conf

这个文件原来不存在,打开里面是空白的,添加以下内容:

blacklist snd_hda_intel

blacklist snd_hda_codec_hdmi

blacklist i915

这些是PVE系统核显相关的驱动,添加到“blacklist.conf”文件后,PVE系统将不加载核显的驱动,留给虚拟机用。

4、绑定核显到vfio模块

查看核显以及声卡的供应商和设备ID:

lspci -n | grep -E "0300|0403"

回显如下:

00:02.0 0300: 8086:5a85 (rev 0b)

00:0e.0 0403: 8086:5a98 (rev 0b)

其中“8086:5a85”和“8086:5a98”分别就是核显和声卡的供应商ID和设备ID,把它们绑定到vifo模块:

echo "options vfio-pci ids=8086:5a85,8086:5a98" > /etc/modprobe.d/vfio.conf

注意,这里是华擎J3455-ITX主板的数据,其他主板或CPU核显和声卡的硬件ID会不一样,请根据实际情况添加。

最后更新配置信息并重启PVE主机:

update-initramfs -u

reboot

重启上来之后检查模块是否正常加载:

lsmod | grep vfio

有类似回显说明就是正常的:

vfio_pci 49152 0

vfio_virqfd 16384 1 vfio_pci

irqbypass 16384 2 vfio_pci,kvm

vfio_iommu_type1 28672 0

vfio 32768 2 vfio_iommu_type1,vfio_pci

三、WIN10虚拟机设置

1、虚拟机环境

创建Win10虚拟机,BIOS用默认SeaBIOS,机器改为q35,硬盘格式用SATA格式不然会找不到硬盘,两个光驱一个挂载WIN10的iso镜像,另一个挂载virtio-win的iso驱动包,Win10虚拟机有个PCI设备的驱动要在里面找。

显卡和声卡先不添加,如果添加了请接上显示器,不然可能造成宿主机死机。

779c4eb747b64b654a6a3acbeb2a68f5.png

2、安装配置WIN10

⑴ 从WIN10的安装光盘启动虚拟机,在PVE的控制台完成WIN10的安装,安装过程中记得给用户账户设密码,后面远程桌面登录必须要有密码的账户才能登录。

⑵ 启用Win10客户机的远程桌面(RDP)

779c4eb747b64b654a6a3acbeb2a68f5.png

⑶ 把Win10的客户机的网络改成专用,方便连接远程桌面,。

779c4eb747b64b654a6a3acbeb2a68f5.png

3、UPT模式直通核显

适用于英特尔五代(Broadwell)及以后的CPU,直通的核显为第二显卡,虚拟vga为主显卡,因为虚拟显卡的存在有一定性能损失,推荐性能较好的机器使用。

⑴ 直通核显

打开虚拟机配置文件(“100”为虚拟机ID):

nano /etc/pve/qemu-server/100.conf

加上这两行:

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

vga: std

其中“00:02.0”为核显的IOMMU分组信息(“lspci”命令可以查看),请根据实际情况更改。

⑵ 安装驱动

给PVE物理机接上屏幕,启动虚拟机,在PVE的控制台安装直通的核显和其他设备的驱动。

“PCI设备”的驱动在virtio-win驱动包里面,从挂载的虚拟光驱搜索就能找到,安装过程才知道这个设备叫“VirtIO Balloon Driver”,我试了几次,有些时候安装完这个驱动屏幕就亮了,但是核显还不能被调用。

779c4eb747b64b654a6a3acbeb2a68f5.png

核显的驱动自动搜索就能找到:

779c4eb747b64b654a6a3acbeb2a68f5.png

核显安装过程还是可能会出现死机,可以尝试:

安装完“VirtIO Balloon Driver”PCI设备的驱动后正常关闭虚拟机再启动安装核显驱动

先去掉“x-igd-opregion=on”参数,在核显不输出画面的情况下安装驱动,安装完再加上

在主板BIOS把共享显存调到最大,提高虚拟机的CPU内存等配置

远程桌面连接安装核显驱动

试下这个配置:

echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf

下面这张图是华擎(ASRock)Z390M-ITX/ac主板核显直通成功截到的,可以看到UHD630核显被成功识别了。

779c4eb747b64b654a6a3acbeb2a68f5.png

⑶ 输出设置

UPT核显直通模式因为主显卡是虚拟显卡,很多程序默认先调用虚拟显卡而且改不了,所以会有一定性能损失。

如果设置双屏扩展或者复制显示,程序默认都不会调用的核显;如果设置成仅在物理显示器显示,分辨率又调不了。

可行性比较高的是在设备管理器里面禁用虚拟显卡,双屏复制显示,这种情况分辨率可调,程序(包括Kodi)能默认调用核显,不过因为双屏的存在还是有性能损失。

4、Legacy模式直通核显

适用于英特尔二代(Sandy Bridge)及以后的CPU,直通的核显为主显卡占用addr=0x02通道,所以不能添加虚拟显卡,这种模式实测成功率比较低,不过性能损失较小,推荐尝试。

⑴ 直通核显

机器类型改成"i440fx",如果你之前试过UPT模式,删除核显直通配置,先成功启动一次Win10客户机系统。

打开虚拟机配置文件(“100”为虚拟机ID):

nano /etc/pve/qemu-server/100.conf

加上这两行:

args: -device vfio-pci,host=00:02.0,addr=0x02

vga: none

⑵ 安装驱动

给PVE物理机接上屏幕,启动虚拟机,在网络邻居里面找到Win10客户机,用远程桌面进行连接。

779c4eb747b64b654a6a3acbeb2a68f5.png

驱动安装过程和UPT模式一样,还是先安装PCI设备的驱动再安装直通核显的驱动,成功率比较随缘,各种死机花屏蓝屏,假如你成功了那么恭喜你,后续运行会很稳定。

四、其他问题

1、加上“pcie_acs_override=downstream”尝试拆分IOMMU分组:

GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt video=efifb:off,vesafb:off pcie_acs_override=downstream"

不一定有用,碰碰运气吧。

2、N卡和A卡的驱动黑名单:

echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf

echo "blacklist radeon" >> /etc/modprobe.d/blacklist.conf

如果是N卡还需要加入下面的配置到kvm.conf(PVE官方稳定说可以避免死机):

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

3、romfile选项

romfile是核显直通的另一个参数,它不是必须的,某些主板无法直通第一个PCI(e)插槽上的GPU显卡,才需要用到romfile选项,详情可以参考:PVE核显直通实现HDMI输出搭建LibreELEC KODI HTPC。

五、总结

本教程详细介绍了PVE虚拟环境下直通核显给Win10虚拟机,并实现核显HDMI输出做HTPC的详细步骤和避坑指南,难点主要在PVE的核显直通设置和Win10客户机核显驱动的安装,一般情况下SeaBIOS引导的Win10客户机如果直通的核显驱动安装成功都会有HDMI输出,而OVMF(UEFI)引导的Win10客户机核显驱动安装简单但是大多数情况下只能解码没有输出。

用Win10虚拟机搭建HTPC大部分人用起来会比较顺手,但是如果机器性能比较一般的话就可以考虑Ubuntu方案、LireElec方案或者直接在PVE环境安装KODI。

原创文章,作者:10bests,禁止任何形式转载:https://www.10bests.com/win10-htpc-on-pve/


https://www.fengoutiyan.com/post/15351.html

相关文章:

  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機