0%

PVE下lxc搭建emby实现intel核显硬解

lxc搭建emby的笔记!本文使用PVE x86平台最新版8.2版本

PVE检查核显固件

1
cd /lib/firmware/i915 && ls ehl_guc*.bin && ls ehl_huc*.bin && ls icl_dmc*.bin

显示类似如下内容则说明不缺固件,否则需要补固件
img
如果缺固件,则补固件

1
2
3
4
mkdir -p /lib/firmware/i915 && cd /lib/firmware/i915
curl -LO https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/ehl_guc_70.1.1.bin
curl -LO https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/ehl_huc_9.0.0.bin
curl -LO https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/icl_dmc_ver1_09.bin

检查核显是否正确加载

1
dmesg | grep i915

img
没有显示GuC、HuC内容说明没有正确加载核显驱动,需要修改i915.conf文件

修改i915.conf文件

1
echo "options i915 enable_guc=3" >> /etc/modprobe.d/i915.conf

修改后重启机器

1
reboot

再次检查i915驱动是否正确加载

1
dmesg | grep i915

显示如下,正确加载,驱动核显成功!
img

在PVE下已经把核显成功驱动了,接下来挂载到lxc里面使用就行!

lxc使用特权容器,非特权容器会有权限问题!!!

查看cgroup版本

PVE高版本都是使用cgroup2,为了保险起见,可以查看一下

1
mount | grep cgroup

如图,显示是cgroup2
img

编辑lxc配置文件

以lxc 110为例

1
nano /etc/pve/lxc/110.conf

将下列内容粘贴到打开的配置文件最下方

1
2
lxc.cgroup2.devices.allow: c 226:* rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

重启lxc并进入

1
pct reboot 110 && lxc-attach 110

安装EMBY

emby下载页,如不是debian,自行选择对应系统及安装方法

1
2
wget https://github.com/MediaBrowser/Emby.Releases/releases/download/4.8.8.0/emby-server-deb_4.8.8.0_amd64.deb
dpkg -i emby-server-deb_4.8.8.0_amd64.deb

解决EMBY权限问题

emby安装完默认是emby用户运行,可能导致一系列权限问题,比如调用GPU无权限、挂载的媒体库目录无写入权限,有两种方法解决问题。

方法一:直接root用户运行emby

建议此方法,最简单,方便,快速,一劳永逸!

修改emby-server.service文件
1
nano /lib/systemd/system/emby-server.service

这样如下修改

1
2
3
4
5
6
7
8
9
10
11
12
13
[Unit]
Description=Emby Server is a personal media server with apps on just about every device
After=network.target

[Service]
EnvironmentFile=/etc/emby-server.conf
WorkingDirectory=/opt/emby-server
ExecStart=/opt/emby-server/bin/emby-server
RestartForceExitStatus=3
User=root # 原本应该为emby,修改此处用户为root即可

[Install]
WantedBy=multi-user.target
重载systemd
1
systemctl daemon-reload
重启emby-server
1
systemctl restart emby-server

方法二:给emby用户各种权限

以赋予核显权限为例,媒体库目录如果无法写入也可类似方法解决!

查看lxc容器内核显
1
ls -lh /dev/dri/

img
不知为何,发现lxc内核显设备用户组与PVE中不一样,需要给emby用户访问权限

查看emby用户的组权限
1
groups emby
将emby用户加入核显设备的用户组

缺啥补啥,我只缺sgx组权限,则只加sgx组

1
usermod -aG sgx emby

img

重启emby-server
1
systemctl restart emby-server

进入emby web

接下来进入emby就可以看到硬解的编码器了
img
播放时调整视频分辨率后有显示硬解图标
img

可安装intel_gpu_tools查看gpu占用

1
apt install intel_gpu_tools -y

查看gpu占用

1
intel_gpu_top

img
视频播放时显示占用,完美硬解!