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)’