Skip to content

N5105软路由 ESXI下直通核显硬解转码以fedora 官方jellyfin为例 非pve下LXC安装Debian 转自爱折腾的老高

R86S 到手也很久了,在ESXI平台上,其他功能都开发的差不多了,唯一的遗憾是没有搞定的是核显转码的问题,黑群晖等都尝试过了,后通过大佬的帖子得知,需要5.17以上的linux内核才能支持。

其他折腾内容见本人其他帖子:R86S-N5100进阶玩法ESXI7.03直通EMMC,添加音、视频输出,变身wifi6路由

随着linux 内核版本的不断更新,这一个问题终于得到了解决,现将相关经验分享给有需要的朋友。

本贴内容参考了许多大佬的文章,在此对他们表示感谢。本教程不是纯新手教程,需要有一定的折腾经验。

   fedora linux的安装

     我用的linux为Redhat旗下的fedroa linux,相关ubuntu、debian来说,原生内核5.17,且包含了解码需要的核显驱动,还有webui可以进行远程管理,有图形界面,非常方便新手,需要的输入的命令少。


我的ESXI版本为7.0U3sd-19482531

首先去官网下载fedora server版镜像,https://getfedora.org/en/server/download/    ,选择 Standard ISO image for x86_64,或者点击这个链接直接下载 https://download.fedoraproject.org/pub/fedora/linux/releases/36/Server/x86_64/iso/Fedora-Server-dvd-x86_64-36-1.5.iso

镜像下载好后,开始安装fedora:

1.1、虚拟机设置
       虚拟机操作系统选 Redhat fedora(64位),cpu、内存、硬盘可以根据自己的实际来选,硬盘太小可能会影响转码的缓存,当然也可以将缓存映射到其他位置。引导选项中,选择EFI,安全引导不要打勾。

本帖隐藏的内容

1.2、fedora linux的安装
        如第三步时,俩个红色感叹号的位置,需要进行确认,建议启用root用户,开启远程登陆。安装完成后,重启就可以看到系统的内核版本,以及远程管理地址了。

进入webui后,先进行一个安装所有更新吧,这个操作可以升级到最新的5.18内核及驱动程序。更新完内核可能不是最新版本,需要在启动时,手动选择一次。

1.3、核显驱动的确认,需要用到以下命令

  1. ls -l /lib/firmware/i915/ehl_guc_69*
  2. ls -l /lib/firmware/i915/ehl_huc_9*
  3. ls -l /lib/firmware/i915/icl_dmc_ver1_09*

复制代码

为了防止ip地址变动,导致管理不变,我们把fedora设置为固定ip(请根据自己的ip进行修改),后面的操作会使得fedora在esxi中不显示ui界面。

1.4、切换直通
    先关闭虚拟机,切换核显为直通状态,启用ESXI的ssh服务,输入esxcli system settings kernel set -s vga -v FALSE 

  禁用ESXI对核显的调用。

  1. esxcli system settings kernel set -s vga -v FALSE

复制代码

接下来设置fedora虚拟机,预留内存全部锁定,添加jasperlake PCI设备。

在高级,编辑配置参数,将svga.present的值由true改成false,重启虚拟机可以看到窗口变成了空白状态。

进入webui,可以看到,核显已经直通到了fedroa虚拟机。

输入 ls -l /dev/dri 可以查看核显是否驱动起来了

  1. ls -l /dev/dri

复制代码

1.5、开启低功耗解码
输入:vim /etc/default/grub

  1. vim /etc/default/grub

复制代码

添加以下代码

  1. GRUB_CMDLINE_LINUX_DEFAULT=”intel_iommu=on i915.enable_guc=3 quiet”

复制代码

:wq,保存退出。
输入:grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg  ,更新引导。

  1. grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

复制代码

然后输入reboot,重启生效。
重启后输入:

  1. journalctl -b -o short-monotonic -k | egrep -i “i915|dmr|dmc|guc|huc”

复制代码

有以下输出,表示相关功能已经开启。

1.6 、安装docker,可以用以下命令。也尝试过在fedora下直接按照jellyfin,但是遇到些问题,docker下倒是正常,以下内容为docker下jellfyin的安装教程。

  1. dnf update
  2. dnf install docker
  3. systemctl start docker
  4. systemctl enable docker

复制代码

docker 安装完成后,下拉jellyfin镜像,这里用N大的docker,采用以下命令  docker pull nyanmisaka/jellyfin

  1. docker pull nyanmisaka/jellyfin

复制代码

第一种挂载NFS共享,在群晖中为存放视频的文件夹开启NFS共享,在新增NFS规则中,服务器ip为fedora的ip地址。

在fedora的webui中挂在nfs共享,这里的ip填群晖的ip,挂载点填/media,和jellyfin保持一致,其他名称也可以用。

第二种方式,挂载smb共享,用到的是cifs,fedora默认已经安装好了,没有图形界面,需要输入命令行来实现。

  1. mkdir /mnt/media2

复制代码

在mnt文件夹下创建挂载点media2文件夹

  1. mount -t cifs -o username=xxx,password=xxx //ip/viedo文件夹/ /mnt/media2

复制代码

挂载smb共享文件夹
这种挂载方式属于一次性的,重启后就失效了,主要零时挂载,测试挂载路径及命令用。永久挂载需要修改以下文件。

  1. vim /etc/fstab

复制代码

增加以下代码

  1. //ip/video文件夹    /mnt/media2    cifs     defaults,user=xxx,password=xxx     0 0

复制代码

然后:wq,保存重启,就可以自动挂载了。

镜像下拉完成后,用以下命令建立2个jellyfin的映射文件夹,方便后面修改。

  1. mkdir /etc/jellyfin
  2. mkdir /etc/jellyfin/config
  3. mkdir /etc/jellyfin/cache

复制代码

用NFS方式挂载的用以下命令,建立jellyfin容器

  1. docker run –privileged -d -v /etc/jellyfin/config:/config -v /etc/jellyfin/cache:/cache -v /media:/media –net=host –device=/dev/dri:/dev/dri –restart=always –name jellyfin  nyanmisaka/jellyfin:latest

复制代码

如果是挂载的SMB文件夹,则用以下命令建立jellyfin容器,二者的区别是挂载路径不一样

  1. docker run –privileged -d -v /etc/jellyfin/config:/config -v /etc/jellyfin/cache:/cache -v /mnt/media:/media –net=host –device=/dev/dri:/dev/dri –restart=always –name jellyfin  nyanmisaka/jellyfin:latest

复制代码

这样,docker环境下jellyfin已经按照好了,这时候通过ip:8096访问的话,会访问不到,那是英文防火墙没有开放相关端口。在防火墙添加以下自定义端口,局域网也可以直接关闭防火墙。

这时候就可以进行jellyfin设置了,添加媒体库,选择刚才映射的 /media文件夹,其他选项根据自己的需求添加。

完成设置后,播放一段,4k-h264视频,可以看到cpu占用70%,而且播放还不流畅,卡顿明显。

进入播放设置界面, 开启硬件解码,选择Intel QuickSync(QSV),其他选项看图。

  设置完成后,再次播放刚才的视频,cpu占用明显降低,并且可以随意调节分辨率,都能流畅播放,说明核显转码成功。

对本图文教程有不明白的地方,需要看视频教程的,可以去油管搜索  “爱折腾的Mr Gao”,感谢他提供的方法。

Comments are closed, but trackbacks and pingbacks are open.