PVE6.05安装了黑群晖DS3617xs,由于DS3617xs的video和emby均不支持视频硬解(虚拟机安装DS918+如果核显不做直通也不支持硬解),在转码的时候CPU占用还是有点高,感觉有点浪费资源了。于是想到了一个变通办法:在PVE里面安装一个Win10,把核显直通给它,这样不就可以硬解了吗?同时还可以插上HDMI线接到电视上,当HTPC用。具体步骤:
1、PVE的内核开启支持VD-T直通的IOMMU及相关模块,文件位于: /etc/default/grub
把原内容中
GRUB_CMDLINE_LINUX_DEFAULT="quiet"
改为(我的是intel的cpu,如果你用amd,把intel改成amd)
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on video=efifb:off"
然后在ssh下输入 update-grub 立即更新grub;
2、找到文件 /etc/modules (如果系统没有此文件,则自己建立一个)加上以下代码,每个一行:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
3、建立驱动黑名单,在ssh下输入以下命令:
echo "blacklist snd_hda_intel" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist snd_hda_codec_hdmi" >> /etc/modprobe.d/pve-blacklist.conf
echo "blacklist i915" >> /etc/modprobe.d/pve-blacklist.conf
update-initramfs -u
4、GPU信息确认
在ssh下输入命令 lspci ,确定核显编号为00:02
再输入命令 lspci -n -s 00:02 得到vendor IDs
把核显指定到VFIO模块
echo "options vfio-pci ids=8086:3e91" > /etc/modprobe.d/vfio.conf
5、创建Win10虚拟机,用默认SeaBIOS方式,硬件的Machine改为q35,硬盘格式用SATA格式,注意不要添加PCIE直通,按照正常的虚拟机设置就行;
6、下载virtio-win的iso驱动包(下载地址:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/),并上传Win10的ISO安装包到PVE,打开Win10虚拟机,进入安装操作系统的界面安装;安装过程中部分硬件驱动在virtio-win的ISO上找,安装完成后开启3389远程桌面(GPU直通要求必须有显示设备连接或者远程桌面,否则会报错,严重的可能造成主机全死机),激活Win10,并测试好远程桌面后关机;
7、关键的步骤来了,直通独显GPU,打开文件 /etc/pve/qemu-server/103.conf(我的Win10在PVE顺序是103),添加这两行内容后保存:
args: -device vfio-pci,host=00:02.0,addr=0x18,x-igd-opregion=on
vga: std
需要注意的是:host=00:02.0这个00:02.0需要与前面lspic显示的核显编号对应上。
8、PVE主机的HDMI接口接到显示器并接上键盘鼠标(注意需要在PVE添加相关的SUB设备,我添加了USB键盘和USB鼠标),打开Win10虚拟机电源,先用远程桌面进入系统,安装直通核显的驱动后重启Win10,再利用在PVE主机上的键盘按WIN+P设置为“复制”,并设置好分辨率。
9、完成上述设置以后,安装emby服务端并做好相关的设置,转码这里的“可用时启动硬件转码”(注意:开启此功能需要有emby会员)选“高级”并在“首选的硬件解码器”上全部打勾:
10、打完收工!真帅!