收起左侧

铭凡 N5 Pro (Radeon 890M) PVE 直通飞牛 OS 硬解问题排查记录

0
回复
35
查看
[ 复制链接 ]

6

主题

10

回帖

0

牛值

fnOS系统内测组

fnOS1.0上线纪念勋章社区上线纪念勋章飞牛百度网盘玩家

铭凡 N5 Pro (Radeon 890M) PVE 直通飞牛 OS 硬解问题排查记录

一、环境概述

项目 配置
主机 铭凡 N5 Pro
CPU/GPU AMD Ryzen AI 9 HX 370 (Radeon 890M)
虚拟化平台 Proxmox VE 9.2.3
虚拟机系统 飞牛 OS (FNOS) 1.2.0010
目标 将 Radeon 890M 核显直通给飞牛 VM,实现影视硬件转码

二、BIOS 设置(铭凡 N5 必须配置)

进入 BIOS 后确认以下选项:

选项 状态
SVM Enabled
IOMMU Enabled
Above 4G Decoding Enabled
CSM Disabled
Secure Boot Disabled
UMA Frame Buffer 512MB 或更高
iGPU Multi-Monitor Disabled(如存在)

三、PVE 宿主机配置

1. GRUB 参数

编辑 /etc/default/grub

text

GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt initcall_blacklist=sysfb_init pci=realloc"

执行 update-grub 并重启。

2. 屏蔽宿主机 amdgpu 驱动

bash

echo "blacklist amdgpu" > /etc/modprobe.d/pve-blacklist.conf
update-initramfs -u -k all

3. 虚拟机配置(100.conf)

text

bios: ovmf
machine: q35
hostpci0: c5:00.0,pcie=1,rombar=1,x-vga=1
hostpci1: c5:00.1,pcie=1
args: -device pcie-pci-bridge -device pcie-root-port

关键点rombar=1 是必须的,否则虚拟机内无法读取 VBIOS。


四、飞牛 OS 内配置

1. 安装驱动和固件

bash

apt update
apt install -y firmware-amd-graphics mesa-va-drivers mesa-vulkan-drivers libdrm-amdgpu1 libva2 vainfo

2. 替换飞牛自带的 VA-API 库

飞牛自带的 libvalibdrm 版本较旧,需要替换为系统库:

bash

# 备份并替换 libva 库
mv /usr/trim/lib/mediasrv/lib/libva.so.2{,.bak}
mv /usr/trim/lib/mediasrv/lib/libva-drm.so.2{,.bak}
mv /usr/trim/lib/mediasrv/lib/libdrm.so.2{,.bak}
ln -sf /usr/lib/x86_64-linux-gnu/libva.so.2 /usr/trim/lib/mediasrv/lib/libva.so.2
ln -sf /usr/lib/x86_64-linux-gnu/libva-drm.so.2 /usr/trim/lib/mediasrv/lib/libva-drm.so.2
ln -sf /usr/lib/x86_64-linux-gnu/libdrm.so.2 /usr/trim/lib/mediasrv/lib/libdrm.so.2

3. 替换 libdrm_amdgpu 库

bash

mv /usr/trim/lib/mediasrv/lib/libdrm_amdgpu.so.1{,.bak}
mv /usr/trim/lib/mediasrv/lib/libdrm_amdgpu.so{,.bak}
ln -sf /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1 /usr/trim/lib/mediasrv/lib/libdrm_amdgpu.so.1
ln -sf /usr/lib/x86_64-linux-gnu/libdrm_amdgpu.so.1 /usr/trim/lib/mediasrv/lib/libdrm_amdgpu.so

4. 修复 VA-API 驱动链接

bash

rm -f /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
ln -sf ../libgallium-25.0.7-2~bpo12+1.so /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so

5. 配置 mediasrv 环境变量

bash

cat > /etc/systemd/system/mediasrv.service.d/override.conf << 'EOF'
[Service]
Environment="LIBVA_DRIVER_NAME=radeonsi"
Environment="LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri"
Environment="GST_VAAPI_DRM_DEVICE=/dev/dri/renderD128"
EOF

systemctl daemon-reload
systemctl restart mediasrv

五、验证结果

1. 检查 GPU 设备

bash

ls -la /dev/dri/
# 应看到 card0 和 renderD128

2. 验证 VA-API

bash

vainfo
# 应显示 Radeon 890M Graphics 的编码/解码列表

3. mediasrv VA-API 加载成功

text

Jun 19 22:24:40 FnOS mediasrv[121496]: libva info: VA-API version 1.17.0
Jun 19 22:24:40 FnOS mediasrv[121496]: libva info: User environment variable requested driver 'radeonsi'
Jun 19 22:24:40 FnOS mediasrv[121496]: libva info: Trying to open /usr/lib/x86_64-linux-gnu/dri/radeonsi_drv_video.so
Jun 19 22:24:40 FnOS mediasrv[121496]: libva info: Found init function __vaDriverInit_1_17
Jun 19 22:24:40 FnOS mediasrv[121496]: libva info: va_openDriver() returns 0

六、当前问题

现象mediasrv 成功加载 VA-API 驱动,但在实际转码时出现 VPE 初始化失败:

text

SIVPE ERROR ../src/gallium/drivers/radeonsi/si_vpe.c:947 si_vpe_construct_blt 
Failed in checking process operation and build settings(9)

分析

  • VA-API 驱动(libgallium)已正确加载
  • /dev/dri/renderD128 设备存在
  • GPU 直通和驱动层工作正常
  • mediasrv 在转码时尝试调用 VPE(Video Processing Engine)进行视频处理
  • VPE 初始化失败导致整个 GPU 加速被跳过,fallback 到软解
  • 环境变量 AMD_VPE_DISABLE=1 对当前 Mesa 版本无效

疑似原因:飞牛 mediasrv 的转码模块与 Radeon 890M 的新版 Mesa 驱动(25.0.7)存在兼容性问题。


七、建议

飞牛官方:建议在新版中优化 mediasrv 的 GPU 检测逻辑,增加对 Radeon 890M(RDNA 3.5)的兼容性支持,或提供禁用 VPE 的配置选项。


八、相关日志

  • journalctl -u mediasrv -f
  • /usr/trim/logs/mediasrv.log
  • dmesg | grep -i amdgpu

九、参考信息

  • GPU:AMD Radeon 890M(Device ID: 1002:150E)
  • 内核:6.18.18.c788-trim
  • Mesa:25.0.7-2~bpo12+1
  • 飞牛影视服务端版本:0.8.35
收藏
送赞
分享
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则