本片文章篇幅有点长:

首先:PVE7.2 的内核需要更新

1、更新PVE内核到5.19(2022-9-13官网更新)

如果你的PVE是新安装的,需要把自带的企业源更改掉,默认是需要订阅的:

#删除默认的企业源  
rm /etc/apt/sources.list.d/pve-enterprise.list  

# 添加官方,非订阅源  
echo 'deb http://download.proxmox.com/debian/pve bullseye pve-no-subscription' >> /etc/apt/sources.list.d/pve-no-subscription.list

开始更新内核:(2022-9-13官网更新)

apt update  
apt install pve-kernel-5.19  
reboot

查看当前使用内核

uname -a

2、补全PVE缺少的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,完成后不要启动

image-20221104200612889

image-20221104200949585

image-20221104201049550

4、在宿主PVE节点下指派核显给lxc下的debian(可以用finalshell或者PVE自己的shell命令工具)

查看核显(PVE宿主机的核显)

ls -l /dev/dri

正常情况下,你会看到反馈:

total 0  
drwxrwxrwx 2 root root         80 Nov  4 16:28 by-path  
crwxrwxrwx 1 root video  226,   0 Nov  4 16:28 card0  
crwxrwxrwx 1 root render 226, 128 Nov  4 16:28 renderD128

编辑LXC容器的config文件:

nano /etc/pve/lxc/101.conf  #这里101.conf的101是根据你自己的虚拟机序号来的,如下图,你自己是多少就改成多少。

image-20221104201705508

#在打开的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.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file  
lxc.apparmor.profile: unconfined

编辑 i915.conf文件,打开intle低压cpu的硬解参数

nano /etc/modprobe.d/i915.conf  

#打开后是空文件,直接复制黏贴一下内容  
options i915 enable_guc=3   #这里的值设置成2也可以  
ctrl+x,y,enter            #nano的保存退出

5、PVE开机自动赋权给核显及解码器

nano /lib/systemd/system/rc-local.service

文件尾部加入

[Install]  
WantedBy=multi-user.target

创建开始脚本

cat <<EOF >/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/*  
exit 0  
EOF

给脚本赋权限

chmod +x /etc/rc.local

然后启动服务

systemctl enable rc-local.service

6,接着开启LXC的虚拟机(用PVE自带的Shell工具,输入刚才的root账号和密码登录)

检查核显有没有正确的传递过来:

ls -l /dev/dri

如果看到和宿主机PVE一样的代码:那就说明核显已经顺利的接入进来了,为下一步开启硬解打开了大门

total 0  
drwxrwxrwx 2 root root         80 Nov  4 16:28 by-path  
crwxrwxrwx 1 root video  226,   0 Nov  4 16:28 card0  
crwxrwxrwx 1 root render 226, 128 Nov  4 16:28 renderD128

升级一下Debian的系统

apt update  
apt upgrade -y

7,开始安装jellyfin

apt install extrepo  
extrepo enable jellyfin  
apt update  
apt install jellyfin
#查看  
service jellyfin status  
#重启  
systemctl restart jellyfin  
#停止  
/etc/init.d/jellyfin stop

这个时候,浏览器输入你的LXC虚拟机的IP地址+8096的端口号,就可以看到jellyfin的登录界面了,第一次登录需要设置管理员的用户名和密码

image-20221104204004866

8,到这边开始,jellyfin的安装和硬解的准备工作都已经完成。

接着开始挂载远程NAS的媒体文件夹,为jellyfin添加媒体资料库,这里面有最重要的一点,先把你的LXC虚拟机给关了,要不然试了好几次,容器启动不了了。

关机Debian虚拟机。

9,开始做媒体资料库的映射,这里分两步走:

a,先把NAS里的媒体库映射到PVE的宿主机里

image-20221104204536010

b,接着把宿主机挂载的远程NAS媒体文件夹映射到LXC的Debian虚拟机里面。用一条命令来实现:(这是在PVE的Shell里面进行的)

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

#稍微解释一下,这里的101就是你之前虚拟机的号码,上面已经讲过了。后的-mp0是命令,做映射。/mnt/pve/media是PVE挂载的NAS文件夹,  
#/mnt/media是映射到Debian的文件夹的位置。  
#这条命令,相当于是在101.conf的文件里添加了一条 -mp0 /mnt/pve/media,mp=/mnt/media 启动命令  
#可以nano /etc/pve/lxc/101.conf查看一下

c,检查没问题后,开机Debian

进入Shell,输入root用户名和密码

cd /mnt            #进入mnt文件夹  
ls                 #查看media文件夹有没有被正确的映射过来  
ls -l /dev/dri     #查看核显有没有正确的映射过来

10,一切都没有问题

登录Jellyfin后台 Debian的IP+8096端口号,输入刚才设置的用户名+密码

开始Jellyfin的配置,

此文略过了,记得在播放设置里打开硬件解码,选择QSV

image-20221104210022723