Featured image of post N100 主机上 Ubuntu 22.04 系统配置 Jellyfin 硬解教程

N100 主机上 Ubuntu 22.04 系统配置 Jellyfin 硬解教程

一些兼容性的坑

给 N100 小主机刷了 Ubuntu Server 作为 Homelab 中的服务器,用于运行各种除下载外的服务(如 Jellyfin、Komga 和 OpenWebUI 等等,Transmission 和 qBittorrent 运行在 NAS 中)。将存、算、网彻底分离到 NAS、服务器和路由器三台不同的物理机上。彻底避免了 all in boom 的可能。

Ubuntu 系统不自带显卡驱动,为了让 Jellyfin 能够硬件解码需要手动安装 Intel i915 驱动:

1
2
sudo apt update
sudo apt install -y intel-media-va-driver-non-free vainfo i965-va-driver

安装后验证 VAAPI是否正常识别 GPU 并确认设备节点存在:

1
2
3
4
vainfo
# 正常输出应包含 VAProfileH264、VAProfileHEVC 等
ls /dev/dri/
# 应该看到 card0 和 renderD128

如果你跟我一样,使用的是从官网下载的 Ubuntu Server 22.04 LTS,安装驱动后运行 vainfo 应该会报错,/dev/dri/ 目录也不存在。但奇怪的是运行 lsmod | grep i915 能够确认 i915 模块已正常加载,GPU 也被识别了,但 /dev/dri 就是不存在。

遂查看内核日志:

1
dmesg | grep -iE "drm|dri|i915|error"

日志中有一行:

1
sof-audio-pci-intel-tgl 0000:00:1f.3: init of i915 and HDMI codec failed

显示 i915 初始化失败,导致 /dev/dri 没有被创建。同时连锁反应导致音频驱动也在报错。问了 Claude 才明白根本原因是内核 5.15 对 N100 (46d1) 支持不完整

运行 uname -r 确认内核版本是5.15。然后运行下列命令升级 HWE 内核:

1
2
3
sudo apt update 
sudo apt install -y linux-generic-hwe-22.04 linux-firmware intel-microcode 
sudo reboot

重启后问题解决。启动容器时记得让容器挂载 GPU 设备:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
docker run -d \
  --name jellyfin \
  --restart unless-stopped \
  --network host \
  --device /dev/dri/renderD128:/dev/dri/renderD128 \
  --device /dev/dri/card0:/dev/dri/card0 \
  --group-add 109 \
  -v path_to_jellyfin_conf:/config \
  -v path_to_jellyfin_cache:/cache \
  -v path_to_jellyfin_media:/media \
  -e TZ=Asia/Shanghai \
  jellyfin/jellyfin:latest
# group-add 109 中的109通过getent group render获取

启动后在 控制台 -> 播放 -> 转码 菜单中作如图配置

Jellyfin转码配置

大功告成!

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy