如何在PVE的LXC容器中为Jellyfin启用硬解码

最近入手了一台N150的小主机,安装好PVE后可以流畅运行Win11、iStoreOS和跑一些docker,不过想要充分释放硬件性能的潜力,还需要在PVE中开启硬件共享加速。
在PVE(Proxmox Virtual Environment)的LXC容器中开启Jellyfin的硬解码功能,可以有效提升视频转码和播放的性能,利用显卡(GPU)的计算能力分担处理器(CPU)的负载。如果你拥有一个支持虚拟化的CPU,又恰好使用了PVE,那绝不能浪费这个硬件性能优势!
一、PVE宿主机操作步骤
1. 更新内核和安装必要组件
1.1 更新内核
查看当前内核版本:
uname -r
列出所有已安装的内核版本:
dpkg --list | grep pve-kernel
找到最新内核版本(例如 6.11.11-2-pve),运行以下命令更新:
apt-get install -y pve-kernel-6.11.11-2-pve
解释:安装最新的 Proxmox 内核以支持更好的 GPU 驱动,有些新出的CPU使用默认内核时安装不了驱动的,别问我怎么知道的,因为我都试过了
1.2 安装内核头文件
安装内核头文件以确保内核模块可构建成功:
apt-get install -y pve-headers-6.11.11-2-pve
解释:内核头文件是编译模块的必要文件,这里要填写你刚才选择使用的内核版本号哈。
完成后重启主机以加载新内核:
reboot
2. 修改 GRUB 配置,启用IOMMU支持
运行以下命令编辑 GRUB 配置文件:
nano /etc/default/grub
找到GRUB_CMDLINE_LINUX_DEFAULT,更改为:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_gvt=1"
说明:
不要问我如果硬件不同,里面的参数要不要改!只要你是intel的CPU里面的设置参数都是一样滴
# intel_iommu=on:开启 Intel 的 IOMMU 支持。
# iommu=pt:启用直通模式以减少性能开销。
# i915.enable_gvt=1:启用 Intel GVT-g(GPU 虚拟化支持)。
保存文件后,更新 GRUB:
update-grub
完成后重启主机:
reboot
3. 加载内核模块
运行以下命令编辑 /etc/modules 文件:
nano /etc/modules
添加以下内容:
plaintext
vfio
vfio_iommu_type1
vfio_pci
kvmgt
说明:
不要问我如果硬件不同,里面的参数要不要改!只要你是intel的CPU里面的设置参数都是一样滴
# vfio:虚拟功能输入输出(VFIO)核心模块。
# vfio_iommu_type1:为 VFIO 启用 IOMMU 支持。
# vfio_pci:为 VFIO 加载 PCI 设备支持。
# kvmgt:启用 KVM-GT(GPU 虚拟化技术)。
保存后,更新内核镜像:
update-initramfs -u -k all
完成后重启主机:
reboot
4. 检查驱动加载状态
验证核显驱动是否加载:
dmesg | grep i915
再三说明:不要问我如果硬件不同,里面的参数要不要改!只要你是intel的CPU设置都是一样滴
检查是否有核显驱动加载的信息。如果没有,可以在/etc/modprobe.d/i915.conf中添加:
options i915 enable_guc=3
添加后更新和重启宿主机。
也可以使用下面命令查看已加载模块:
lsmod | grep i915
解释:确认 i915 模块是否成功加载。
检查设备节点:
ls -l /dev/dri
解释:确保设备节点 card0 和 renderD128 已正确生成。
5. 验证 GPU 是否正常工作
安装工具:
apt-get install -y intel-gpu-tools
解释:intel-gpu-tools 包含用于测试 GPU 工作的工具。
运行 GPU 监控工具:
intel_gpu_top
解释:实时查看 GPU 的负载和运行情况。
二、LXC 容器操作步骤
1. 编辑容器配置文件
假设容器的 ID 为 100,编辑其配置文件:
nano /etc/pve/lxc/100.conf
在最下方添加以下内容:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/dri/card0 dev/dri/card0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
解释:允许容器访问宿主机的 GPU 设备节点。还是那句话,不要问我如果硬件不同,里面的参数要不要改!只要你是intel的CPU里面的设置参数都是一样滴
2. 重启lxc容器
3. 在容器中验证 GPU 支持
进入容器,输入命令:
ls -l /dev/dri
解释:确认容器内是否成功挂载设备节点。
安装 GPU 工具:
apt-get update
apt-get install -y intel-gpu-tools
解释:安装容器内的 GPU 测试工具。
运行 GPU 监控工具:
intel_gpu_top
解释:测试 GPU 在容器中是否正常运行。
三、启用 Jellyfin 硬件解码
1. 安装必要的软件
进入 Jellyfin 容器或服务系统,运行以下命令:
apt-get update
apt-get install -y vainfo intel-media-va-driver
说明:
# vainfo:验证 VA-API 支持。
# intel-media-va-driver:Intel 显卡的 VA-API 驱动。
2. 验证 VA-API 支持
运行以下命令验证 VA-API 是否启用:
vainfo
解释:如果输出显示支持的解码器和编码器,说明 VA-API 已正确启用。
3. 配置 Jellyfin
在 Jellyfin 管理界面中:
1. 进入管理仪表板。
2. 选择“播放”设置。
3. 启用硬件加速解码(选择 VA-API)。
4. 如果可能,还可以启用硬件加速编码。
保存设置并重新启动 Jellyfin。
四、验证硬件加速
播放媒体文件:使用支持的媒体文件播放,确认是否触发硬件加速。
检查 Jellyfin 日志:确认硬件解码是否启用。
运行 GPU 监控工具:
intel_gpu_top
解释:实时监控 GPU 的工作负载,验证硬件加速是否正常运行。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

麦乐酷的理想生活
校验提示文案
麦乐酷的理想生活
校验提示文案