PVE7.3 下折腾核显直通以及 EMBY 开启视频硬件转码
硬件环境 j:n6005 主板 NAS
软件环境:Proxmox VE7.3 虚拟机上直通硬盘跑了 truenas scale 22.12.0,开通 samba 共享和 nfs 共享,做为数据存储中心。另外再跑了一个 debian11 用来跑各种应用。nas-tools,qbittorent,emby,ddns-go 这些。因为 emby 不开启硬解,在转码的时候非常占用 cpu 资源,于是有了这一篇折腾笔记。
开启 PVE 虚拟化
1、PVE 的内核开启支持 VD-T 直通的 IOMMU 及相关模块
文件位于:
/etc/default/grub
把原内容中
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet" |
改为(我的是 intel 的 cpu,如果你用 amd,把 intel 改成 amd)
1 | GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt" |
然后在 ssh 下输入 update-grub2
立即更新 grub;
2、编辑 /etc/modules 模块文件
如果系统没有此文件,则自己建立一个,加上以下代码
1 | vfio |
3、 验证是否开启成功
1 | dmesg | grep remapping |
出现如下例子,则代表成功。
显卡直通
显卡直通需要满足前面所有的配置,同时虚拟机芯片组必须是 q35,BIOS 最好是 UEFI 模式 AMD 的显卡如果给黑苹果使用,则需要小心重启 bug NVIDIA 的显卡如果支持 vGPU 模式,可以配置虚拟 PCI-E 设备给虚拟机使用
1、建立驱动黑名单
编辑 /etc/modprobe.d/pve-blacklist.conf 添加驱动屏蔽列表
1 | # This file contains a list of modules which are not supported by Proxmox VE 2 |
2、GPU 信息确认
在 ssh 下输入命令 lspci -knn | grep -i -A 2 vga
,查看你要直通的显卡
其中 00:01 是代表组名。00:01.0 是代表 00:01 组的第一个设备 laf4:1100 表示厂商 ID: 设备 ID,直接通过 lspci 看的话可以看到音频设备甚至是 USB 设备 这里我因为不需要对当前 PCI-E 设备组再拆分,所以直接略过
如果你需要设置显卡显示设备和音频设备单独直通,需要执行下面语句 让 PCI-E 设备(显卡)由 vfio 驱动程序接管便于直通 如果不需要单独直通,vfio 驱动会在设置直通的时候自动接管 PCI-E 设备,可以不用配置 vfio-pci
1 | echo "options vfio-pci ids=1234:1111,laf4:1100" > /etc/modprobe.d/vfio.conf |
更新引导配置
1 | update-initramfs -u -k all |
重启 PVE
验证 PCI-E 显卡是否被 vfio-pci 驱动,Kernel driver in use: vfio-pci 表示直通驱动成功
1 | lspci -knn | grep -i -A 2 vga |
虚拟机直通显卡
然后开机,注意:由于显卡已经直通,所以 VNC 查看时,是没有介面的。
此时再 ssh 到 debian 虚拟机上就可以看到直通的显卡了
剩下的就简单了。
用 docker-compose 把 emby 跑起来,我用的是 xinjiawei1 大大的镜像直接 unlockd 了。
1 | version: "2.1" |
最后就是成果