前言:

之前一直是跟着Rsg大佬学习Unraid的各种骚操作,然而在月黑风高的某一天,我启动unraid的时候他崩了(不是一次两次),遂下定决心换了unraid,在和群友闲聊中,听闻OMV是各种稳,所以花心的我,直接转头OMV的怀抱。

因为有虚拟机的需求所以底层为PVE.

 

注:本文如有遗漏或者错误地方请及时联系。

参考文章:https://foxi.buduanwang.vip/virtualization/1683.html/

omv社区

环境:

宿主机:Pve

cpu:i3 8100

主板:z370m pro4

内存:32G

显卡:P4

Pve7.2 vgpu-unlock解锁vgpu给omv5做硬件解码。

pve vgpu-unlock这里就不写了,网上很多教程

实操:

新系统安装完成以后首先安装omv-extras

wget -O - https://github.com/OpenMediaVault-Plugin-Developers/packages/raw/master/install | bash

安装完成以后更新updata omv-updata等,更换内核如图:

然后reboot重启

安装Nvidia驱动程序:

安装必要软件包

apt -y install curl linux-headers-$(uname -r) build-essential libglvnd-dev pkg-config dkms

由于我的宿主机pve安装的n卡驱动为510.47.03版本,所以omv最好是安装相近或者低于此版本的驱动,这里我也提供下我使用的驱动,放在最后

将下载的驱动放在/opt目录(其实随意),给驱动程序赋予可执行权限

cd /opt

chmod +x 驱动

./驱动

运行命令后,会提示是否用dkms方式安装,选择yes,回车继续

出现xorg警告,可以忽略

出现询问是否启用32位兼容库,可选可不选,这里我选择虽然不知道有啥用

开始安装驱动,等待安装完成重启

reboot

验证是否安装成功

nvidia-smi

确认是否为如下内容

这样OMV5的显卡驱动就安装完成了,别急这只是第一步,下面还有

安装 Nvidia-docker

更新包列表

distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
&& curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.list |
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' |
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

安装nvidia-docker2包(和依赖项)

sudo apt-get update

sudo apt-get install -y nvidia-docker2

apt install -t buster-backports nvidia-container-runtime

编辑/etc/docker/daemon.json

{
"runtimes": {
"nvidia": {
"path": "/usr/bin/nvidia-container-runtime",
"runtimeArgs": []
}
},
"default-runtime": "nvidia",
"data-root": "/var/lib/docker"
}

重启docker

sudo systemctl restart docker

emby和plex要增加参数如下

version: "2.1"
services:
emby:
image: lscr.io/linuxserver/emby:latest
container_name: emby
network_mode: host
runtime: nvidia
environment:
- PUID=1000
- PGID=100
- TZ=Asia/Shanghai
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /srv/dev-disk-by-uuid-37b839e8-f317-41c2-a395-5e639664956a/appdata/emby:/config
- /srv/dev-disk-by-uuid-37b839e8-f317-41c2-a395-5e639664956a/appdata/media:/media
ports:
- 8096:8096
- 8920:8920
restart: unless-stopped

version: "2.1"
services:
plex:
image: lscr.io/linuxserver/plex:latest
container_name: plex
network_mode: host
runtime: nvidia
environment:
- PUID=1000
- PGID=100
- VERSION=docker
- NVIDIA_DRIVER_CAPABILITIES=compute,video,utility
- NVIDIA_VISIBLE_DEVICES=all
volumes:
- /srv/dev-disk-by-id-nvme-J.ZAO_QL_SERIES_256GB_SSD_MH2682T000681-part1/appdata/plex:/config
- /srv/dev-disk-by-uuid-c2ac8121-d6ec-42f5-97d8-7e7cd664c4fc/media:/data
- /srv/dev-disk-by-id-nvme-J.ZAO_QL_SERIES_256GB_SSD_MH2682T000681-part1/appdata/plex/transcode:/transcode
restart: unless-stopped

现在基本上就完成了,现在进emby或者plex看看转码能否成功。emby转码选项出现如下图,就是成功了

由于使用的 GRID 驱动程序的授权是有时间限制,因此我们需要在加载 nvidia 驱动程序时附加一些参数以绕过这些限制。(这样做是许可的无限制时间”设置为 1 天。之后重新加载 nvidia 驱动程序(模块)或重新启动omv。

echo 'options nvidia NVreg_RegistryDwords="UnlicensedUnrestrictedStateTimeout=0x5A0;UnlicensedRestricted1StateTimeout=0x5A0"' | sudo tee /etc/modprobe.d/nvidia.conf

sudo update-initramfs -u

sudo reboot

重启完成以后,授权将会变成一天,授权到期以后需要重新启动omv或者使用modprobe nvidia重新加载模块

发表回复

后才能评论