N5095使用经验分享 Step By Step (一 核显直通jellyfin) 您所在的位置:网站首页 志强e52696v4有核显吗 N5095使用经验分享 Step By Step (一 核显直通jellyfin)

N5095使用经验分享 Step By Step (一 核显直通jellyfin)

2023-05-20 01:59| 来源: 网络整理| 查看: 265

作者:zzzfi

1. 前言

前面写的折腾日记系列随心所欲的写了写,都只涉及了想法和思路。没有基础的人可能很难get到我说的点,也没办法参照着使用起来。因此想另外写一个Step By Step系列,基本遵循可操作的原则。

因为不是软路由的专家,所以此系列也不敢称为教程,只做是经验分享。

废话说完了,这篇主要是介绍一下N5095在PVE上如何进行核显直通,并进行硬件解码。

2. PVE核显直通配置

2.1 更改grub

修改/etc/default/grub文件,在GRUB_CMDLINE_LINUX_DEFAULT中增加下面的参数:

Intel_iommu=on video=efifb:off

2.2 更新grub

执行 update-grub命令,可以看到下面的信息。

2.3 配置开机加载vfio模块

编辑/etc/modules,写入下面的模块名

vfio

vfio_iommu_type1

vfio_pci

vfio_virqfd

2.4 配置禁止加载显卡驱动

编辑/etc/modprobe.d/pve-blacklist.conf文件,增加下面的内容

blacklist i915

2.5 更新initrd

执行update-initramfs -u命令

2.6 重启PVE

3. 创建虚拟机

这里以创建Archlinux为例说明(5.15左右的版本内核存在一个bug会导致核显无法使用,每个发行版的内核版本的差异还是有一些的,可能在其他版本的内核上也会遇到这个bug)

3.1 下载archlinux虚拟机的镜像

从arch官方下载了镜像,地址如下:

https://gitlab.archlinux.org/archlinux/arch-boxes/-/jobs/63736/artifacts/browse/output

选择basic就好了。

3.2 把镜像拷贝到PVE中

命令可以参考下面的,其中192.168.50.3是我的PVE地址

scp Arch-Linux-x86_64-basic-20220528.58196.qcow2 [email protected]:/root/

3.3 创建虚拟机

在PVE中创建一个新的虚拟机,不需要带磁盘,相关配置如下

cpu按需求选择就好了。习惯性的选上了aes,默认应该也会启用

memory按需选择就好了。我喜欢把balloon去掉。

network 也是按需选择

一个不带磁盘的虚拟机就创建好了。

3.4 导入磁盘

把之前下载的archlinux的镜像导入到虚拟机中。看一下上一步创建的虚拟机id,和需要使用的存储。这里虚拟机id为103,存储为local-lvm

执行下面的命令导入磁盘

qm importdisk 103 Arch-Linux-x86_64-basic-20220528.58196.qcow2 local-lvm

三个参数分别是 虚拟机id,下载的镜像名,导入的存储名

3.5 启用导入的磁盘

3.6 设置从导入的磁盘启动

钩上,再拖动到第一个

3.7 添加核显

这里是00:02.0。如果跟我设备不一样的话,需要执行命令查看一下 lspci | grep VGA

3.8 启动虚拟机

不出意外的话,就可以进来了。外面已经配置完成了,到里面了。用户名:arch 密码:arch

3.9 进入虚拟机

查看一下ip,并开启sshd服务,命令如下(通过ssh连进去可以拷贝)。

ip a

sudo systemctl start sshd

上面在启动sshd服务的时候太慢了,我停了重启了一次,直接等也是可以的。

不出意外的话,就已经可以看到显卡的节点了。

3.10 设置软件源

切换到root用户,设置ustc源。顺便把vim也装上。命令如下(注意:下面两个$前面都需要一个反斜杠,这里没办法打出来)

sudo su

echo "Server = https://mirrors.ustc.edu.cn/archlinux/$repo/os/$arch" > /etc/pacman.d/mirrorlist

pacman -Sy

pacman -S vim

3.11 设置核显驱动参数

设置guc,安装核显的firmware,然后重启。命令如下:

echo “options i915 enable_guc=3” > /etc/modprobe.d/i915.conf

pacman -S linux-firmware

reboot

启动之后可以看到guc,huc启动成功的日志

虚拟机的配置到这里就完成了。

4. jellyfin

不知道多少人是因为jellyfin才需要硬解的

4.1 安装启动docker

sudo pacman -Sy docker docker-compose

sudo systemctl start docker

4.2 安装jellyfin

创建个目录,新建docker-compose.yml,把下面的内容拷贝进去。需要自定义目录或者端口的话,需要自己改一下。

version: “2.1”

services:

    jellyfin:

        image: nyanmisaka/jellyfin

        container_name: jellyfin

        volumes:

            - /home/cfs/jellyfin/config:/config

            - /home/cfs/jellyfin/tvseries:/data/tvshows

            - /home/cfs/jellyfin/movies:/data/movies

        ports:

            - 8096:8096

            - 8920:8920 #optional

        devices:

            - /dev/dri:/dev/dri #optional

        restart: unless-stopped

执行下面的命令安装jellyfin

sudo docker-compose up -d

jellyfin已经安装完成了

4.3 测试jellyfin硬解

进入到jellyfin的容器中,找到ffmpeg。相关命令如下

sudo docker exec -it jellyfin /bin/bash

硬解使用的是ffmpeg的qsv编解码器

安装一个wget,下载一个测试的视频

apt update && apt install wget

视频可以自己随便找一个

wget https://f7881eaf9ab44d-a.akamaihd.net/files/media_publication/16/wsb_B_02_r720P.mp4

测试命令,好像也不是很快,N5105应该会快很多

/usr/lib/jellyfin-ffmpeg/ffmpeg -i wsb_B_02_r720P.mp4 -vcodec hevc_qsv out.mp4

对比一下软件的编解码(惨不忍睹)

/usr/lib/jellyfin-ffmpeg/ffmpeg -i wsb_B_02_r720P.mp4 -vcodec libx264 out.mp4

jellyfin已经可以进行硬解了,其他配置就不说了。

5. 遗留问题

vbios一直报着错误,还不清楚原因和影响,不过好像并不影响使用

6. 后记

11代的核显直通,别人做过很多的尝试了。可以参考一下,尤其是windows。此处删除一个链接

GVT-g在八代以后的CPU中就已经不支持了,SR-IOV是用了替换GVT-g的技术。SR-IOV之前应该只用在了网卡上。

SR-IOV的性能比GVT-g应该会强一些的,但遗憾的是目前linux上还没有支持的方案。在intel的社区中,官方回复过,windows上的驱动是支持的,linux上的支持是受限的,依赖厂商的支持。

其实折腾了半天,我根本用不上jellyfin的硬解,甚至用不上jellyfin……

好吧,一切都是为了折腾……

另外,忘了说一件事。PVE现在是我的生产环境,所以没有重装来验证配置步骤,可能会出现有问题的地方。

再吐槽一句,排版太复杂了,各种特殊字符,格式也很难搞。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有