N5105软路由 PVE下核显硬解转码 LXC套娃Debian Docker Jellyfin

2022-05-09 650 0

老高往期回顾:

上期咱们做了N5105在PVE和Hyper-V下多个系统的安装,发现N5105在PVE7.1-12下暂时不能直通核显给虚拟的Windows系统。分析了当时的Linux内核平台暂时无法对11代及以上的核显直通的情况,另辟蹊径:通过安装WinServer2019,在intel的win平台核显驱动加持下,成功吃上emby等媒体服务器的全部硬解解码器,可以正常硬解、推流和转码。

随着PVE的更新和Jellyfin大神nyanmisaka无私奉献下终于有了实质性进展。下面我们开始了……

您的订阅点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!看完片子,加爱折腾的群和讨论组:http://diyforfun.565856.xyz/

声明:爱折腾的老高视频及技术交流群仅供数码爱好者正规合法讨论技术交流。不涉及任何违法违规技术交流。请不要在评论或私聊中提及任何违法违规技术问题,一概不予回答谢谢合作。请各位朋友不在在群中讨论任何相关违法违规及风险问题,群规见群公告。所分享资源均来自互联网公开资源,均有其各自的作者和出处,尊重知识产权。相关设备和服务请购买正版。各厂商服务商请不要群内发广告、图片及二维码等。如有合作意向,敬请与老高联系:QQ 86549271

您的订阅关注点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!看完片子,加爱折腾的群和讨论组:https://diyforfun.565856.xyz/

pve的安装过程,请观看往期视频:https://www.bilibili.com/video/BV18L4y1F7gN/

我们采用的是jellyfin开发组 国人大神nyanmisaka的jellyfin版docker中集成了驱动,并且N大优化了很多。链接是:https://hub.docker.com/r/nyanmisaka/jellyfin

下面从安装完pve之后开始:

确保PVE已经升级到7.3-3及以上版本
1、更新PVE内核到5.19(2022-9-13官网更新)

apt update && apt install pve-kernel-5.19

2、检查PVE下915 guc huc dmc固件是否齐全(正常情况下PVE7.3-3默认系统自带)

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

是否包含以下固件,如果齐全进步骤3
ehl_guc_70.1.1.bin
ehl_huc_9.0.0.bin
icl_dmc_ver1_09.bin

如不全,则补全缺少的915 guc huc dmc固件

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

3、lxc模板安装debian 11,安装时一定把非特权容器前面的勾去掉,去掉,去掉。我们需要一个特权的容器。完成后不要启动!

4、在宿主PVE节点下指派核显及Docker相关权限映射给lxc下的debian

#查看核显
ls -l /dev/dri
nano /etc/pve/lxc/101.conf
# 粘贴
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.apparmor.profile: unconfined
lxc.cap.drop:

ctrl+x,y,回车

nano /etc/modprobe.d/i915.conf
#粘贴大补丸:
options i915 enable_guc=3

reboot 重启后验证低功耗编码HuC和GuC是否开启命令如下:

journalctl -b -o short-monotonic -k | egrep -i "i915|dmr|dmc|guc|huc"

返回信息中有以下HuC和GuC成功开启:
[ 3.862964] pve kernel: i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/icl_dmc_ver1_09.bin (v1.9)
[ 3.884978] pve kernel: i915 0000:00:02.0: [drm] GuC firmware i915/ehl_guc_70.1.1.bin version 70.1
[ 3.884987] pve kernel: i915 0000:00:02.0: [drm] HuC firmware i915/ehl_huc_9.0.0.bin version 9.0
[ 3.899160] pve kernel: i915 0000:00:02.0: [drm] HuC authenticated
[ 3.899505] pve kernel: i915 0000:00:02.0: [drm] GuC submission enabled
ctrl+x,y,回车

5、启动LXC的Debian,开启Debian远程root账号第三方SSH登录工具

nano /etc/ssh/sshd_config
PermitRootLogin yes
PasswordAuthentication yes

ctrl+x,y,回车

service ssh restart

Lxc下Debian更改国内源:

备份源存储文件:

mv /etc/apt/sources.list /etc/apt/sources.list.bk
nano /etc/apt/sources.list

添加国内源

中科大源

deb https://mirrors.ustc.edu.cn/debian/ bullseye main non-free contrib
deb-src https://mirrors.ustc.edu.cn/debian/ bullseye main non-free contrib
deb https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main
deb-src https://mirrors.ustc.edu.cn/debian-security/ bullseye-security main
deb https://mirrors.ustc.edu.cn/debian/ bullseye-updates main non-free contrib
deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-updates main non-free contrib
deb https://mirrors.ustc.edu.cn/debian/ bullseye-backports main non-free contrib
deb-src https://mirrors.ustc.edu.cn/debian/ bullseye-backports main non-free contrib

ctrl+x,y,回车

#更新
apt update && apt upgrade -y

5、挂载NAS NFS(smb)

PVE宿主机挂载SMB(NFS)

在PVE节点shell下运行

pct set 101 -mp0 /mnt/pve/share_nfs,mp=/mnt/share_nfs

LXC号 挂载点1 PVE下目录 LXC-debian下的存储目录
-mp2挂载点2
-mp3挂载点3

有群友问此命令什么意思,这里简单介绍一下:

100是机器号,也就是lxc建立的debian()括号里的号码

mp0是第一个挂载点。后面如果还有多个挂载点,按照顺序就是mp1,mp2,mp3

/mnt/pve/share_nfs 这是pve已经挂载好的目录(视频里有把smb/nfs挂载到pve的操作)

把这个pve挂载好的目录,映射给lxc,映射后在debian里面的位置是/mnt/share_nfs(以后安装在debian下的jellyfin设置媒体库的时候需要映射这个影音目录)

#重启后查看是否挂载正常
cd /mnt/share_nfs
ls -l

检查是否挂载完好

6、安装docker

一键安装Docker

apt install curl -y
curl -sSL https://get.docker.com/ | sh

启动docker服务

systemctl start docker

7、安装portainer

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name portainer portainer/portainer-ce

8、安装N大集成驱动的Docker版Jellyfin
nyanmisaka/jellyfin:latest

8096
8920
/media
/mnt/share_nfs

/dev/dri

注意:最近portainer新版貌似有点问题,导致安装报错,可以使用以下命令行安装N大jellyfin

docker run -d -p 8096:8096 -p 8920:8920 --volume jellyfin-config:/config --volume jellyfin-cache:/cache -v /mnt/share_nfs:/media --device=/dev/dri:/dev/dri --restart=always --name jellyfin nyanmisaka/jellyfin:latest

9、安装GPU监控应用

apt-get update && apt install intel-gpu-tools
intel_gpu_top

6、LXC开机自动修改解码器用户组权限
在LXC-Debian(ubuntu)下
先通过以下命令对systemd注入rc-local服务:

cat>>/etc/systemd/system/rc-local.service<<EOF
[Unit]
Description=/etc/rc.local
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
EOF

然后执行开机启动rc.local

systemctl enable rc-local.service

创建开始脚本

cat </etc/rc.local
!/bin/sh -e
#
#rc.local
#
#This script is executed at the end of each multiuser runlevel.
#Make sure that the script will "exit 0" on success or any other
#value on error.
#
#In order to enable or disable this script just change the execution
#bits.
#
#By default this script does nothing.
chmod 777 /dev/dri/*
sleep 30
systemctl restart docker
exit 0
EOF

并给文件赋权限

chmod +x /etc/rc.local

重启开机后检查权限是否自动更改解码器用户组为render

ls -l /dev/dri

重启开机后检查权限是否自动加权

reboot

您的订阅点赞分享充电打赏(三连投币分享)是对老高最大的支持和鼓励!看完片子,加爱折腾的群和讨论组:http://diyforfun.565856.xyz/

转载原创文章请注明,转载自: 爱折腾的老高博客 https://diyforfun.cn

相关文章

[老高分享]免费开源远程桌面神器RustDesk/支持多种系统搭建跨平台使用/支持硬件解码
2024新款升级铁威马F4-424NAS网络存储服务器评测
零刻GTi14 Ultra迷你电脑深度拆解测试双2.5G/WIFI7/PCIe内置电源
¥899铭凡最便宜的机器!轻度升级版UN100D迷你电脑深度拆解测试,双2.5G网口
玄派创世魔方:80W性能怪兽深度首发评测,全面解析
迷你电脑玩独显也可以很潇洒~逍遥君显卡扩展坞 兼容雷电4/雷电3/USB4

发布评论