一、平台信息
PVE版本:7.1-8
容器:Ubuntu20.04
Jellyfin:10.7.7
Cpu:G6505T十代U
显卡:intelHD630核显
二、配置步骤
1、登录pve,查询设备编号
root@pve:~# ls -l /dev/dri
drwxr-xr-x 2 root root 80 Dec 17 00:04 by-path
crw-rw---- 1 root video 226, 0 Dec 17 00:04 card0
crw-rw---- 1 root render 226, 128 Dec 17 00:04 renderD128
2、pve主机安装intel核显驱动
apt install intel-media-va-driver-non-free
安装vainfo程序
apt install vainfo
安装完成后,查询显卡信息,显示如下,说明驱动安装完成。
可看到,以上加载的是iHD driver,不是网上多数教程说的i965。这里不安装i965驱动,因为i965适合以前老版本的cpu,8代cpu最好安装以下驱动。
注意:应该先安装显卡驱动intel-media-va-driver-non-free
,再安装vainfo软件。如果先安装vainfo会自动把i965和intel-media-driver
驱动一起装上,实际上,我们只需要intel-media-driver
即可。
三、将设备映射给LXC容器
这里默认建立好Ubuntu20.04特权容器
修改容器配置
vim /etc/pve/lxc/102
注:这里的102是PVE中显示的LXC 容器ID 改成自己的
在最后添加以下配置信息
lxc.cgroup2.devices.allow: c 226:0 rwm //映射的设备
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.autodev: 1 //初始化设备
lxc.hook.autodev: /var/lib/lxc/102/mount_hook.sh //运行的脚本,需要编写
(注意:网上好多教程这里的配置都是lxc.cgroup.devices.allow,但在较新版本里,参数已改成了cgroup2)
编写初始化脚本/var/lib/lxc/102/mount_hook.sh
mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
mknod -m 777 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128
避免权限问题这里直接给777权限
到此,PVE主机上配置完毕!
下一步,使用pct start ctid
启动容器,ssh进入容器系统配置(这里是ubuntu系统)
四、Ubuntu安装核显驱动
这里的安装的驱动跟pve主机一样的。一样不需要安装i965-va-driver-shaders
查询是否显示显卡信息。显示如下,说明容器可以识别核显设备了。
(注意:因为系统版本不一样,所以,显示的vaapi版本和驱动版本和pve主机也不一样.)
五、配置jellyfin硬件加速
登录jellyfin——控制台——播放,启动硬件加速。
播放视频,在(容器)Ubuntu系统使用intel_gpu_top工具监测,核显是否工作。
apt install intel_gpu-tools
不播放视频时,GPU无负载
播放需要转码的视频时,GPU处于负载状态
Jellyfin播放数据,可以看到转码信息。说明,硬件加速生效!
一些问题的处理办法
全部都操作完了,依然调用不了核显硬解。具体表现为vainfo
可以查看列出显卡信息同时intel_gpu_top
也可以查看显卡信息
- 使用
chmod - R 777 /dev/dir
设置权限 - 配置 systemctl jellyfin 服务的用户为root
参考文献
作者:养狗只养法斗 https://www.bilibili.com/read/cv14489336 出处:bilibili
https://www.cyril.vip/blog/note/system/lxc-uses-intel-iris-xe-graphics-card-in-pve/