SMB 网络共享视频缩略图修复记录
日期:2026-05-18
系统:Ubuntu 24.04.4 LTS
问题路径:smb://mynas.local/jellyfin/media/新建文件夹/001极品
问题描述
Nautilus 文件管理器在 SMB 网络共享目录中无法显示视频文件缩略图,~/.cache/thumbnails/fail/ 下持续产生 50 个失败标记。
根因分析
根本原因:Ubuntu 24.04 默认启用 AppArmor 对非特权 user namespace 的限制:
/proc/sys/kernel/apparmor_restrict_unprivileged_userns = 1Nautilus(GNOME 46)的所有 thumbnailer 都通过 bwrap --unshare-all 沙箱运行。该限制导致 bwrap 在创建 network namespace 后设置 loopback 时被内核拒绝:
bwrap: loopback: Failed RTM_NEWADDR: Operation not permitted沙箱起不来 → wrapper 根本没有机会执行 → 每个文件被直接打上 fail 标记。
次要原因:bwrap 沙箱内只挂载 /usr,~/.local/bin/ 路径在沙箱内不可见,thumbnailer wrapper 必须安装到 /usr/local/bin/。
修复步骤
1. 关闭 AppArmor 非特权 userns 限制(持久化)
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0写入持久化配置 /etc/sysctl.d/60-apparmor-userns.conf:
# Re-allow unprivileged user namespaces for bwrap-based thumbnailers, flatpak, etc.
kernel.apparmor_restrict_unprivileged_userns=02. 安装 SMB URI 解析 wrapper
文件:/usr/local/bin/ffmpegthumbnailer-gvfs(755)
功能:将 smb:// URI 解析为 gvfs FUSE 本地路径(/run/user/1000/gvfs/smb-share:...),再调用 /usr/bin/ffmpegthumbnailer。
sudo install -m 0755 ~/.local/bin/ffmpegthumbnailer-gvfs /usr/local/bin/ffmpegthumbnailer-gvfs3. 注册用户级 thumbnailer
文件:~/.local/share/thumbnailers/ffmpegthumbnailer.thumbnailer
[Thumbnailer Entry]
TryExec=/usr/local/bin/ffmpegthumbnailer-gvfs
Exec=/usr/local/bin/ffmpegthumbnailer-gvfs -i %u -o %o -s %s -f
MimeType=video/jpeg;video/mp4;video/mpeg;...(完整 MIME 列表)关键:使用 %u(URI)而非 %i(本地路径),因为 SMB 文件对 GIO 是 non-native,%i 会被跳过。
4. 清理失败缓存
rm -rf ~/.cache/thumbnails/fail
nautilus -q5. 确认 Nautilus 设置
gsettings set org.gnome.nautilus.preferences show-image-thumbnails 'always'
gsettings set org.gnome.nautilus.preferences thumbnail-limit 4096验证结果
修复后 ~/.cache/thumbnails/x-large/ 生成 84 个缩略图 PNG,fail 目录为空。
x-large: 84 files
fail: 0 files注意事项
- 关闭
apparmor_restrict_unprivileged_userns会放开本机所有非特权 user namespace(影响 Chromium 沙箱、Flatpak、bwrap 等)。如需更精细控制,可改为单独为/usr/bin/bwrap写 AppArmor profile。 - 重启后 sysctl 由
/etc/sysctl.d/60-apparmor-userns.conf自动加载,无需额外操作。 - 大文件首次扫描较慢(需通过 SMB 读取首帧),属正常现象。


评论 (0)