记录在PVE8虚拟化平台下安装LXC容器以实现Jellyfin的核显硬解,原则上适用于所有12-13代英特尔核显。
先决条件
具备实验环境
Proxmox VE 8.0
1 | proxmox-ve: 8.0.2 (running kernel: 6.2.16-14-pve) |
PVE主机正常驱动核显,我使用的CPU为12900 ES(QXQ3),核显为UHD770。
1 | ╭─root@pve ~ |
开启GUC支持(PVE主机)
编辑文件/etc/modprobe.d/i915.conf
1 | nano /etc/modprobe.d/i915.conf |
添加以下内容
1 | options i915 enable_guc=3 |
重启PVE主机后生效,此时终端输入dmesg | grep i915
查看到guc启用情况为enable,且可以看到dmc firmware
和huc firmware
两个固件的信息。
下载并创建LXC容器
下载CT模板
在PVE的web界面,找到local-CT模板-模板
,弹窗中搜索debian
,选中debian12的模板下载。
新建LXC容器
下载完成后,右键节点,使用debian12的模板新建LXC容器,注意去除勾选无特权容器
配置LXC容器
基础配置
创建完成后,先不启动,在LXC容器的配置文件中映射主机的核显设备
编辑配置文件/etc/pve/lxc/218.conf
1 | nano /etc/pve/lxc/218.conf |
最下方添加以下内容
1 | lxc.cgroup2.devices.allow: c 226:0 rwm |
完成后启动LXC容器,在PVE控制台中登录,开启ssh远程登录权限。
1 | nano /etc/ssh/sshd_config #编辑sshd配置文件 |
对LXC容器进行换源、更新操作。
1 | nano /etc/apt/sources.list #编辑源文件 |
安装intel_gpu_top,在命令行查看核显占用。
1 | apt install intel-gpu-tools |
终端输入intel_gpu_top
看到如下信息,Ctrl+C取消。
挂载NFS
影音文件保存在NAS中,NAS开启NFS分享,在LXC容器中挂载以供Jellyfin服务使用。
1 | apt install nfs-common -y #安装nfs-common |
挂载完成后查看文件是否存在,挂载得到的文件权限可以在NFS服务端做出配置。如无问题,则修改/etc/fstab
文件开机自动挂载NFS目录。
安装docker版Jellyfin
1 | apt install curl -y && curl -sSL https://get.docker.com/ | sh #安装docker |
配置docker在NFS挂载后启动
默认情况下docker和NFS挂载动作的执行是不区分先后顺序的,这会导致开机以后docker服务已经启动但NFS挂载点未就绪,于是在docker应用中就无法正常的看到存储池中的文件。
终端执行systemctl list-units | grep mount
寻找与fstab中配置对应的信息,我的挂载任务为:mnt-share_nfs.mount
编辑docker服务配置,将上面找到的挂载任务设置为After项目以及Wants项目。
1 | nano /lib/systemd/system/docker.service #编辑配置文件 |
如有远程连接docker需求,可在下方的ExecStart中添加-H tcp://0.0.0.0:2375
(上图为已添加)。
修改完成后执行systemctl daemon-reload
重载系统服务。systemctl restart docker
重新启动docker。
由于我的NFS存储服务由运行在虚拟机里的Unraid提供,需要设置LXC容器开机自启动时添加延时180秒,一般情况下需要重启主机,Unraid虚拟机可以在3分钟内就绪。
配置Jellyfin
开启核显硬解转码
由于使用的是nyanmisaka
定制的镜像(镜像特点),只需在控制台-播放
开启硬解即可。
安装插件
MetaShark刮削插件(豆瓣)
进入 Jellyfin 控制台 > 插件 > 存储库,点击添加
输入存储库名称:MetaShark
MetaTube刮削插件(成人)
进入 Jellyfin 控制台 > 插件 > 存储库,点击添加
输入存储库名称:MetaTube
输入存储库URL:https://raw.githubusercontent.com/metatube-community/jellyfin-plugin-metatube/dist/manifest.json
MeiamSubtitles字幕插件
进入 Jellyfin 控制台 > 插件 > 存储库,点击添加
输入存储库名称 :MeiamSubtitles
输入存储库 URL:https://github.com/91270/MeiamSubtitles.Release/raw/main/Plugin/manifest-stable.json
SkinManager主题美化插件
进入 Jellyfin 控制台 > 插件 > 存储库,点击添加
输入存储库名称 :SkinManager
输入存储库 URL:https://raw.githubusercontent.com/danieladov/JellyfinPluginManifest/master/manifest.json
存储库设置完成后,在插件Tab页下找到 MetaTube
、Shooter Subtitles
、Thuner Subtitles
、SkinManager
,依次点击安装,安装完成需要重启Jellyfin。
测试硬解
4k-120Mbps转码,可以看出GPU占用如下:
此时的CPU占用处于较低的水准。则说明核显硬解配置成功。