前言:
之前一直是跟着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
重新加载模块