N5095-Ubuntu系统开启Jellyfin硬件解码

N5095-Ubuntu系统开启Jellyfin硬件解码

一、升级Ubuntu内核至5.18

ubuntu22.04安装后,默认的内核版本为5.15,而这个版本内含一个bug,导致11代IntelCPU无法正常开启硬件解码
下载ubuntu-mainline-kernel.sh并将其放在可执行路径中

wget https://raw.githubusercontent.com/pimlie/ubuntu-mainline-kernel.sh/master/ubuntu-mainline-kernel.sh
install ubuntu-mainline-kernel.sh /usr/local/bin/

使用脚本可以检查当前版本可以支持的内核版本,并安装v5.18.19版本,实测可以实现硬件解码,其他可行版本可以自行探索

ubuntu-mainline-kernel.sh -r
ubuntu-mainline-kernel.sh -i v5.18.19
Downloading index from kernel.ubuntu.com

# ...
# Installing 4 packages
# Cleaning up work folder

安装过程可能不尽相同,但是安装成功后会出现上面两行命令。安装后的版本可以使用脚本查看

ubuntu-mainline-kernel.sh -l
# v5.18.19-051819

重启后查看内核版本是否改变:

reboot
uname -r
# 5.18.19-051819-generic

返回的结果如上面显示,则证明新版本内核启用成功

二、Intel显卡驱动配置

使用以下命令查看是否存在显卡固件:

ls -l /lib/firmware/i915/ehl_guc_69*
ls -l /lib/firmware/i915/ehl_huc_9*
ls -l /lib/firmware/i915/icl_dmc_ver1_09*

确认文件存在后,编辑grub配置文件并强制开启HuC和GuC:

vim /etc/default/grub
# 按i进入编辑模式
# 找到GRUB_CMDLINE_LINUX_DEFAULT这一行参数,将其注释,增加下面一行
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=3 quiet"

保存配置文件后,更新grub菜单,然后重启等待设置生效

update-grub
# 或者使用另一命令
grub-mkconfig -o /boot/grub/grub.cfg
reboot

补充说明:GuC引导项不同参数的作用:

i915.enable_guc=1    ## 启用GuC提交和电源管理
i915.enable_guc=2    ## 只启用HuC认证
i915.enable_guc=3    ## 将两个功能结合在一起
##在内核4.16之前,HuC认证是通过设置:
i915.enable_guc_loading=1   ##4.16之前使用此参数开启huc认证

重启之后,安装intel-gpu-tools查看GPU的运行状态

apt -y install intel-gpu-tools
# 安装成功后查看GuC和HuC的状态
journalctl -b -o short-monotonic -k | egrep -i "i915|dmr|dmc|guc|huc"

忽略其他的错误,只要存在HuC和GuC成功开启的信息即可

[    4.532486] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/ehl_guc_69.0.3.bin
[    4.533796] debian kernel: i915 0000:0b:00.0: firmware: direct-loading firmware i915/ehl_huc_9.0.0.bin
[    4.695205] debian kernel: i915 0000:0b:00.0: [drm] GuC firmware i915/ehl_guc_69.0.3.bin version 69.0
[    4.695214] debian kernel: i915 0000:0b:00.0: [drm] HuC firmware i915/ehl_huc_9.0.0.bin version 9.0
[    4.709613] debian kernel: i915 0000:0b:00.0: [drm] HuC authenticated
[    4.709763] debian kernel: i915 0000:0b:00.0: [drm] GuC submission enabled

如果报错显示缺少某个文件,需要手动下载文件并放入/lib/firmware/i915文件夹下,下载地址为index : kernel/git/firmware/linux-firmware.git,并重新执行以上步骤

三、安装Docker

Ubuntu22.04可能需要先安装curl包

sudo apt-get install curl
# 指定阿里源来安装Docker
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

执行docker ps后成功即代表docker安装成功

四、硬盘设置

由于媒体库采用USB连接至小主机,所以需要挂载硬盘硬盘至系统

# 使用命令找到对应的盘符
lsblk
# 挂载硬盘至目录
mkdir /home/mount_dir
mount /dev/sda1 /home/mount_dir

挂载硬盘时,出现了$MFTMirr does not match $MFT (record 0)错误,可以使用以下命令进行修复
安装ntfsprogs包并修复硬盘

sudo apt-get install ntfsprogs
# sudo ntfsfix /dev/partitionName,这里我的盘符是/dev/sda1,所以
sudo ntfsfix /dev/sda1
# 在使用mount命令即可:
mount /dev/sda1 /home/mount_dir

为了每次开机可以自动挂载硬盘至对应的位置,需要将挂载动作设为开机自动执行
找到/etc/fstab,并进行如下修改

/dev/sda1 /home/mount_dir  ntfs-3g  rw  0  0

保存后,使用sudo mount -a命令执行硬盘挂载,无报错即可。以后每次重启主机都可以自动挂载硬盘至指定路径

五、硬盘SMB共享

为了方便其他设置(电脑,手机,平板)能够更好的访问媒体资源,而不仅仅给jellyfin使用,可以设置硬盘为SMB共享

# 安装SMB服务
sudo apt-get install samba
# 添加SMB用户
sudo smbpasswd -a jump  #jump为当前系统使用的,root外的用户名,后使用该用户名访问samba服务

修改SMB配置文件:

sudo gedit /etc/samba/smb.conf

将以下内容复制进文件的最后部分:

[mysmb] #共享时网络上显示的名称 
path = /home/mount_dir #共享路径
guest ok = yes    #匿名访问
comment = smb share     #注释信息
available = yes         #vailable用来指定该共享资源是否可用
browseable = yes        #browseable用来指定该共享是否可以浏览
public    = yes         #public用来指定该共享是否允许guest账户访问
writeable = yes         #writable用来指定该共享路径是否可写

重启SMB服务并查看SMB状态:

systemctl restart smbd
systemctl status smbd

Windows电脑登入SMB服务器,使用Win+R进入运行,输入\\IP,根据提示输入SMB添加的用户名及密码即可访问共享的硬盘资源

六、安装Jellyfin

创建jellyfin存在配置文件的路径,这里我定义为:

mkdir /home/jellyfin/config

使用以下命令拉起jellyfin容器,这里使用nyanmisaka的中国特供版:

docker pull nyanmisaka/jellyfin
docker run -d \
--device=/dev/dri:/dev/dri \
--privileged=true \
--name=jellyfin \
--restart=always \
-p 8096:8096 \
-p 7359:7359/udp `#optional` \
-p 1995:1995/udp `#optional` \
-v /home/jellyfin/config:/config \
-v /home/mount_dir:/media \
nyanmisaka/jellyfin

注意,--device--privileged两个参数必需,保证能够调用显卡对视频进行硬件解码
容器启动成功后,使用ubuntu主机的IP地址和端口进行访问http://ip:8096进行配置并开启硬件解码
Jellyfin配置及媒体资源刮削未完待续…

参考文档:
N5105 软路由安装 ESXi 7 直通核显给 Debian / Ubuntu 虚拟机通过 Docker 实现 jellyfin 硬件转码视频文件(硬解/编码)
ubuntu安装smb及配置
Ubuntu 20.04系统自动挂载NTFS的硬盘
解决‘$MFTMirr does not match $MFT (record 0)’

  • 17
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Ubuntu树莓派上安装Jellyfin,并配置硬件加速,您可以按照以下步骤操作: 1. 安装Jellyfin 首先,您需要安装Jellyfin。可以使用以下命令来添加Jellyfin的软件源并安装Jellyfin: ``` sudo apt-get install apt-transport-https wget -O - https://repo.jellyfin.org/jellyfin_team.gpg.key | sudo apt-key add - echo "deb [arch=$( dpkg --print-architecture )] https://repo.jellyfin.org/$( awk -F'=' '/^ID=/{print $2}' /etc/os-release ) $( awk -F'=' '/^VERSION_CODENAME=/{print $2}' /etc/os-release ) main" | sudo tee /etc/apt/sources.list.d/jellyfin.list sudo apt-get update sudo apt-get install jellyfin ``` 2. 安装VA-API驱动程序 接下来,您需要安装VA-API驱动程序,以便Jellyfin可以使用硬件加速。可以使用以下命令安装VA-API驱动程序: ``` sudo apt-get install vainfo libva-dev libva-drm2 libva2 mesa-va-drivers ``` 3. 配置VA-API 接下来,您需要配置VA-API。可以使用以下命令编辑VA-API配置文件: ``` sudo nano /etc/environment ``` 然后在文件末尾添加以下行: ``` LIBVA_DRIVER_NAME=rpi LIBVA_DRIVERS_PATH=/usr/lib/arm-linux-gnueabihf/dri ``` 保存并关闭文件。 4. 配置Jellyfin 最后,您需要配置Jellyfin以使用硬件加速。可以使用以下命令编辑Jellyfin配置文件: ``` sudo nano /etc/systemd/system/jellyfin.service.d/override.conf ``` 然后将以下内容添加到文件中: ``` [Service] Environment="LD_LIBRARY_PATH=/opt/vc/lib:/usr/lib/arm-linux-gnueabihf/dri" Environment="LIBVA_DRIVERS_PATH=/usr/lib/arm-linux-gnueabihf/dri" Environment="LIBVA_DRIVER_NAME=rpi" ``` 保存并关闭文件。 5. 重启Jellyfin 现在,您可以使用以下命令重启Jellyfin: ``` sudo systemctl daemon-reload sudo systemctl restart jellyfin ``` 现在,Jellyfin应该已经成功配置了硬件加速,可以在树莓派上流畅地运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值