LXC容器运行硬件解码的JellyFin

运行环境:
主板:Asrock J3455M (经典NAS主主板了)
CPU:Intel J3455
系统:Proxmox 6.2-12

前期测试:
装个vainfo看看支不支持硬解,这个不是重点随便百度一下都行~

创建容器:
1、创建时候勾选特权容器
这样容器的gid和uid就没有前缀
root用户为例 主机 0:0 特权容器 0:0 普通容器 10000:10000

特权容器


2、使用的是 Ubuntu 18.04 的镜像

容器模板

配置容器:
因为需要让容器可以调用物理机的显卡所以修改容器配置添加显卡的权限和挂载路径(Linux万物皆文件)

确认显卡的emmm运行一下
ls -l /dev/dri

total 0
drwxr-xr-x 2 root root         80 Jan 31 22:30 by-path
crw-rw---- 1 root video  226,   0 Jan 31 22:30 card0
crw-rw---- 1 root render 226, 128 Jan 31 22:30 renderD128

然后修改lxc的conf,添加下面这几行

lxc.cgroup.devices.allow: c 226:0 rwm
lxc.cgroup.devices.allow: c 226:128 rwm
lxc.autodev: 1
lxc.hook.autodev: /var/lib/lxc/va_hook.sh

创建/var/lib/lxc/va_hook.sh文件,填入如下内容

mkdir -p ${LXC_ROOTFS_MOUNT}/dev/dri
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/card0 c 226 0
mknod -m 666 ${LXC_ROOTFS_MOUNT}/dev/dri/renderD128 c 226 128

文件挂载:
因为,LXC内不能挂载SMB所以需要先把NAS的共享文件挂载到主机的某个目录,然后映射到容器内

挂载命令(参考)
mount -o username=z5n0w,password=passWORD,uid=1000,gid=1000,rw -t cifs //192.168.1.100/download /media/dsm_share

映射命令(参考)
pct set 101 -mp1 /media/dsm_share,mp=/media