给 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获取
|
启动后在 控制台 -> 播放 -> 转码 菜单中作如图配置

大功告成!