前言
首先,这个问题在还未公测的时候就存在了。套件版本的Emby无法识别NVIDIA独显,没法进行硬件解码。从去年过年后出现的,这都要一年了。依旧没有修复。
我当时以为是Emby的问题,因为当时出现了插件导致Emby无法启动的BUG,所以我就没把这个问题放在套件上。一直寄希望于Emby的修复。后面因为各种原因,个人忙起来了,没去探究。而且飞牛影视也越来越好,我就没再去关注。
直到马上要过年了,我寻思还是Emby好用,有些功能飞牛影视还是没有做好,如搜索结果不全,不是单页,对于影视搜索结果很多的时候不便翻阅。然后是Emby有些插件,可以刮削很多源,且支持听歌。
探索
我最开始是看了一下Emby会不会好了,毕竟中间更新了这么多版本,还公测了,驱动也更新过。于是我重新使用回了套件的Emby,然而我发现依旧识别不到。
于是我打算去论坛看看,在搜索结果中发现有人发布了自己打包的Emby,于是我下了两个。分别是帖子: Emby更新 版本为beta v4.9.2.6 本地fpk安装 与 Emby Server for fnOS 4.9.3.0 自动更新
我发现前者可以识别,后者无法识别。这就有意思了。在前往 飞牛应用开放平台 了解了结构后。我解包看了一下两个fpk。于是我使用SSH连接飞牛,在套件Emby的路径下进行了筛查。没多久就定位到了一个字段:/var/apps/EmbyServer4-9/config/privilege文件里的 defaults.run-as。
其值在官方套件Emby里是 package。
这个字段的含义是什么呢?我们可以到飞牛的开发文档中得知:✨ 创建应用 | 飞牛应用开放平台。
应用目录 config文件夹下的 privilege文件是负责 应用权限配置。而 运行身份,默认为 package(应用用户)这个注释就解释了原因。在 📚 【基础】应用权限 | 飞牛应用开放平台 中也解释了为什么Emby需要 Root 权限。
因为Emby要调用独显就必须要有访问硬件设备的能力。所以其必须使用 Root 权限运行。
探究
然而,我们可以看到有着对GPU正常调用的飞牛影音、飞牛相册都能够正常的调用独显。其权限采用的均是 Root 运行。我不禁思考到,为什么会出现这种问题。对于有着合作的官方套件版百度网盘也是以 Root 权限运行。
在开发文档 📚 【基础】应用权限 | 飞牛应用开放平台 部分中的重要提醒里写到:Root 权限模式仅适用于飞牛官方合作的企业开发者。第三方应用默认无法在应用中心发布需要 root 权限的应用。
难道因为官方套件版本的百度网盘是有着官方合作tag的。所以才能给 Root 权限运行?而Emby并非官方合作,且在社区分类里,没有飞牛官方的角标,所以按照产品相关制度不能给 Root 权限运行?
我随手点了安装的Aria2,其运行权限居然也是 Root。我又点开了 Tailscale,其权限又是package。这两个的发布者明显就不是官方。那到底是怎么判定的呢?套件Emby又标注的是官方发布者。
我有了一个猜测,在早期的时候,飞牛还未对应用权限进行严格限制,所以那时 root 给了就给了。而Aria2是早期加入的应用,而且一直没有进行什么更新。所以就一直保留着原有的 root 运行权限。而Emby因为在去年过年间出现了插件导致的应用不可用事件。所以官方对其进行了修改。由于没仔细核查,这才从 root变成了 package。于是Emby突然无法使用NVIDIA的故障就这么突然出现了。
无论如何,这种故障能够接近1年还未解决,也确实有点离谱了。
修复
知道了原因,现在修复就简单了。
首先SSH连接到飞牛,将其值从 package改为 root即可。
- ssh连接飞牛
- 先把文件权限给改了,不然没法写
sudo chmod 666 /var/apps/EmbyServer4-9/config/privilege
sed -i 's/"run-as": "package"/"run-as": "root"/' privilege 或 vi /var/apps/EmbyServer4-9/config/privilege 输入 cw进行编辑,将 package改为 root后,按下Esc键,再输入 :wp进行退出保存。
- 最后把文件权限给恢复一下
sudo chmod 644 /var/apps/EmbyServer4-9/config/privilege
如果使用那种支持SSHFS的软件会方便一些。如MobaXterm。使用XTerminal也挺方便的。
预览


