N5095使用经验分享 Step By Step (一 核显直通jellyfin) | 您所在的位置:网站首页 › 志强e52696v4有核显吗 › N5095使用经验分享 Step By Step (一 核显直通jellyfin) |
作者: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 实验室设备网 版权所有 |