1、下载镜像并安装
下载地址1:清华大学开源软件镜像站
下载地址2:官方下载
下载地址3 百度网盘: https://pan.baidu.com/s/19QnUFfeaOHfSiR2CYJRAuw 提取码: 6fhi
注:使用UEFI启动,因为需要加载驱动|安装时DNS选择阿里云或者国内的DNS比如:223.5.5.5
小满推荐:Ventoy,没有U盘且目标机器支持PXE启动可以使用iVentoy引导并安装
2、修改国内源
1、自带的源为国外的源,速度很慢,这里更改为国内中科大的源。
rm /etc/apt/sources.list
nano /etc/apt/sources.list
2、编辑这份文件,把下方的代码复制进去,Ctrl+X退出,按Y回车保存。
deb https://mirrors.ustc.edu.cn/debian bullseye main contrib non-free
deb https://mirrors.ustc.edu.cn/debian bullseye-updates main contrib non-free
deb https://mirrors.ustc.edu.cn/debian-security bullseye-security main contrib non-free
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve bullseye pve-no-subscription
3、删除企业订阅,如果你购买了企业订阅,可以忽略这一步。
rm /etc/apt/sources.list.d/pve-enterprise.list
4、然后更新一下源和系统
apt update
apt upgrade -y
5、有时会因为网络问题,更新错误,请再重试多更新几次,直到更新无错误。或者更换其它源。或者你未填写DNS,无法访问域名。
nano /etc/resolv.conf #Ctrl+X退出,按Y回车保存
6、安装5.19内核以及linux-header
apt install -y pve-headers-5.19.7-2-pve
apt install -y pve-kernel-5.19.7-2-pve
3、安装依赖
1、安装所需的软件包,如 git、编译器和其他一些工具。(如果上一步更新出错,这里可能无法安装软件包)
apt install -y git build-essential dkms pve-headers mdevctl
Git 存储库和 安装Rust编译器
克隆vgpu_unlock-rs 存储库
#克隆仓库
cd /opt
git clone https://mirror.ghproxy.com/https://github.com/mbilker/vgpu_unlock-rs.git
#安装Rust编译器
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
source ~/.cargo/env
#编译
cd vgpu_unlock-rs/
cargo build --release
4、创建用于 vGPU 解锁的文件
1、vgpu_unlock-rs库需要一些文件和文件夹才能正常工作,让我们创建它们
#回到root根目录
cd
#创建配置文件夹
mkdir /etc/vgpu_unlock
#创建配置文件
touch /etc/vgpu_unlock/profile_override.toml
然后,`为 systemd 创建文件夹和文件,以便在启动 nvidia vgpu 服务时加载 vgpu_unlock-rs 库
mkdir /etc/systemd/system/{nvidia-vgpud.service.d,nvidia-vgpu-mgr.service.d}
echo -e "[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so" > /etc/systemd/system/nvidia-vgpud.service.d/vgpu_unlock.conf
echo -e "[Service]\nEnvironment=LD_PRELOAD=/opt/vgpu_unlock-rs/target/release/libvgpu_unlock_rs.so" > /etc/systemd/system/nvidia-vgpu-mgr.service.d/vgpu_unlock.conf
5、启用IOMMU并更新引导
一定要跟据自己的CPU选择下面的二行代码执行其一
1、intel的CPU请执行下面代码
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"/g' /etc/default/grub
# 更新Grub
update-grub
2、amd的CPU请执行下面代码
sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"/g' /etc/default/grub
# 更新Grub
update-grub
6、加载所需的内核模块并将开源 nvidia 驱动程序列入黑名单
我们必须加载这些内核模块才能使vGPU工作:vfio vfio_iommu_type1 vfio_pci vfio_virqfd
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" >> /etc/modules
Proxmox 附带了适用于 nvidia GPU 的开源的新驱动程序,但是我们必须使用我们修补的 nvidia 驱动程序来启用 vGPU。所以要阻止PVE驱动程序加载。
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
应用内核配置并重启
update-initramfs -u -k all
reboot
重启后,执行下方代码查看日志,确认 IOMMU已经启用。
dmesg | grep -e DMAR -e IOMMU
电脑不同,输出结果稍有不同。在我的输出中,重要的行是第三行,如果您看到类似内容,则表示已启用 IOMMU。DMAR: IOMMU enabled
7、安装NVIDIA 驱动程序
此补丁包含在非标准的vGPU卡或者消费者显卡上使用 vGPU 的修补程序。这些补丁是二进制补丁,这意味着每个补丁仅适用于特定的驱动程序版本。你必须使用和此补丁同样版本的驱动。
驱动和补丁下载地址:
1、链接: https://pan.baidu.com/s/1Nz4MEeIWL6rIHYoK97UmTg 提取码: rfkr
2、链接:https://pan.yhdzz.cn/s/VP9t2?password=v5imse
以下驱动程序版本有补丁:、
- 15.1 (525.85.07)
- 15.0 (525.60.12)
- 14.4 (510.108.03)
- 14.3 (510.108.03)
- 14.2 (510.85.03)
您可以选择要使用的版本,如果没有特别情况,通常建议使用最新版本(在本例中为15.1)
修补官方驱动程序,把下载的到的驱动和补丁文件通过其它工具上传到服务器某个目录里,这里使用WinSCP工具上传到root目录
执行下方代码,使驱动程序可执行
chmod +x NVIDIA-Linux-x86_64-525.85.07-vgpu-kvm.run
如果你的显卡是类似于Tesla P4或此列表中的任何其他vGPU这样的专业卡,请直接安装驱动程序,不要进行修补。
./NVIDIA-Linux-x86_64-525.85.07-vgpu-kvm.run –dkms
# 安装完成后重启
reboot
如果你的显卡是消费者显卡或不受支持的VGPU卡,请执行下一步“修补驱动“
修补驱动程序
./NVIDIA-Linux-x86_64-525.85.07-vgpu-kvm.run --apply-patch 525.85.07.patch
成功应该如下图所示
应该有一个名为 NVIDIA-Linux-x86_64-525.85.07-vgpu-kvm-custom.run的文件,这是您修补的驱动程序。
安装修补后的驱动程序
./NVIDIA-Linux-x86_64-525.85.07-vgpu-kvm-custom.run --dkms
发现问题,Would you like to register the kernel module sources with DKMS? ………选择Yes。
如果一切顺利,您将看到下图消息。
单击OK退出安装程序。
#重启服务器
reboot
重启完成后检查驱动程序安装是否有效
nvidia-smi
验证 vGPU 解锁是否正常工作,请键入以下命令
mdevctl types
安装正确将输出类似下图的结果
如果解锁失败,没有任何返回,或者返回No supported devices in vGPU mode,则无法继续,请仔细检查。
配置说明
很多类似nvidia-46的是指vGPU配置类型编号,我们需要选择一个我们打算使用的配置。
需要关注的是Name: GRID P40-1Q,在它的下一行也写明了该配置的刷新率、显存大小、最大分辨率等。一般windows我们使用Q结尾的vGPU,1Q=1G显存 2Q=2G显存……
A = Virtual Applications (vApps)
B = Virtual Desktops (vPC)
C = AI/Machine Learning/Training (vCS or vWS)仅适用于Linux,不要尝试在Windows上使用它们,它根本不起作用。
Q = Virtual Workstations (vWS)(在OpenGL应用程序/游戏中为您提供较好的性能)
在此,我们要选择好我们使用的vGPU配置型号,选择时要注意,一旦选择,则所有虚拟机都将锁定为该类型,而且显存只能被平均分配,比如你是1060 6G的显卡,可以选择
1G+1G+1G+1G+1G+1G=6个,那么就选择nvidia-46这个型号。
2G+2G+2G=3个,,那么就选择nvidia-47这个型号。
不能是1G+2G+3G的存在。
9、开始使用
之前我们已经创建了文件,使用该文件,可以覆盖 vGPU 实例的许多参数:例如,您可以更改最大分辨率、启用/禁用帧速率限制器、启用/禁用对 CUDA 的支持/etc/vgpu_unlock/profile_override.toml
## 编辑
nano /etc/vgpu_unlock/profile_override.toml #Ctrl+X然后按Y回车
把下方代码复制到profile_override.toml文件内,Ctrl+X然后按Y回车,保存退出。注意:下面代码不一定适用你的电脑,请编辑好再保存。详细说明看下方。
[profile.nvidia-46]
num_displays = 1
display_width = 1920
display_height = 1080
max_pixels = 2073600
cuda_enabled = 1
frl_enabled = 0
framebuffer = 0x38000000
framebuffer_reservation = 0x8000000
[profile.nvidia-46]这是针对nvidia-46 vgpu型号的配置。为1G显存。若需要配置的vgpu型号为nvidia-47,则需要改成nvidia-47。
num_displays 最大显示器数量
display_width = 1920
display_height = 1080
max_pixels = 2073600 虚拟显示器的分辨率,max_pixels是长乘宽。
cuda_enabled = 1 是否开启cuda
frl_enabled = 0 是否限制帧数,0为不限制。实际用处不大,因为vGPU配置文件已确定刷新率。
framebuffer和framebuffer_reservation为显存帧缓冲大小
常见的显存尺寸帧缓冲设置
1GB:
framebuffer = 0x38000000
framebuffer_reservation = 0x8000000
2GB:
framebuffer = 0x74000000
framebuffer_reservation = 0xC000000
3GB:
framebuffer = 0xB0000000
framebuffer_reservation = 0x10000000
4GB:
framebuffer = 0xEC000000
framebuffer_reservation = 0x14000000
5GB:
framebuffer = 0x128000000
framebuffer_reservation = 0x18000000
6GB:
framebuffer = 0x164000000
framebuffer_reservation = 0x1C000000
8GB:
framebuffer = 0x1DC000000
framebuffer_reservation = 0x24000000
10GB:
framebuffer = 0x254000000
framebuffer_reservation = 0x2C000000
12GB:
framebuffer = 0x2CC000000
framebuffer_reservation = 0x34000000
16GB:
framebuffer = 0x3BC000000
framebuffer_reservation = 0x44000000
20GB:
framebuffer = 0x4AC000000
framebuffer_reservation = 0x54000000
24GB:
framebuffer = 0x59C000000
framebuffer_reservation = 0x64000000
32GB:
framebuffer = 0x77C000000
framebuffer_reservation = 0x84000000
48GB:
framebuffer = 0xB2D200000
framebuffer_reservation = 0xD2E00000
0欺骗vGPU绕过nvidia授权**
id,这样在win10系统内,会识别这个vgpu为p40-1Q之类的型号。随后安装nvidia-vgpu驱动,会作为一个vgpu设备来使用,但需要nvidia授权(YaoQian)才可以正常使用。pci_device_id的主要作用是改写vgpu信息,使其在虚拟机内,能被识别为专业卡,从而绕过vgpu的驱动限制,无需授权。
注意:这仅适用于Windows,不要费心在Linux上尝试。
示例
[profile.nvidia-46]
其它代码
pci_device_id = 0x1c31
pci_id = 0x1c3112BA
0x开头表示是16进制开头
pci_device_id是要欺骗到的卡中的 PCI ID。也就是一个专业卡的id编号,这里是1c31是专业卡Quadro P2200的ID.
pci_id可以拆分为两部分:第一部分可以与pci_device_id相同。第二部分是二级制造商编码。
如何获取自己所需要的pci_device_id
您可以从此处获取 pci_device_id。只需按 Ctrl+F 并搜索自己显卡的型号,比如搜索1060,会发现1060显卡的芯片是GP106,然后找到GP106GL的专业卡,大多数情况下,GL是同芯片的专业卡。复制它在左侧显示的 ID 并将其用于 pci_device_id = 0x1c31。
pci_id获取
完成pci_device_id操作后,单击左侧你选择的id,示例是1c31,会打开一个新页面,其中列出了子系统。如果未列出任何值,尝试使用 0000作为pci_id的第二个值。但是如果列出有一些值,则必须选择现有的值并将其id用作第二个值。第二值有时会引起掉驱动的情况发生,如果有掉驱动的情况,尝试更换这个值。
比如示例的1c31并未列出任何值 ,我们这里直接使用pci_id = 0x1c310000,也可以用pci_id = 0x1c3112BA。
假如你的显卡是2080用来模拟Quadro RTX 6000,会如下图所示,必须选择一个现有的值做为pci_id第二个值。pci_id = 0x1E3012BA
完整的profile_override.toml文件示例
6台虚拟机
**[profile.nvidia-46]**
**num_displays = 1**
**display_width = 1920**
**display_height = 1080**
**max_pixels = 2073600**
**cuda_enabled = 1**
**frl_enabled = 0**
**framebuffer = 0x38000000**
**framebuffer_reservation = 0x8000000**
**pci_device_id = 0x1c31**
**pci_id = 0x1c3112BA**
12台虚拟机
[profile.nvidia-54]
num_displays = 1
display_width = 1920
display_height = 1080
max_pixels = 2073600
cuda_enabled = 1
frl_enabled = 0
framebuffer = 0x1A000000
framebuffer_reservation = 0x6000000
pci_device_id = 0x1bb1
pci_id = 0x1bb10000
可选示例,我们还可以单独对某个VM进行单独的定义,vm.100是指虚拟机id,不必指定所有参数,只需指定您需要/想要的参数即可。可以理解为[profile.nvidia-46]是全局参数,[vm.100]单独定义参数。如果需要单独定义多个虚拟机,复制此区块即可。
[profile.nvidia-46]
num_displays = 1
display_width = 1920
display_height = 1080
max_pixels = 2073600
cuda_enabled = 1
frl_enabled = 0
framebuffer = 0x38000000
framebuffer_reservation = 0x8000000
pci_device_id = 0x1c31
pci_id = 0x1c3112BA
[vm.100]
frl_enabled = 1
11. 创建虚拟机并安装系统
创建一个虚拟机,seabios和ovmf都可以,芯片组必须是Q35!**此时不要添加VGPU设备,先安装好WIN10。*(如果添加了显卡,win10可能会给显卡安装驱动,特别是一些GHOST系统会给显卡安装驱动,这个驱动是不能用的)
参考配置如下
12. 直通vgpu设备
12.1 在直通vgpu之前我们最好先安装一个远程控制软件,比如Todesk。因为直通完vgpu后,会有双显示器的情况出现。
12.2 在硬件面板,点击添加PCI设备,选中这块显卡(如果不显示显卡的名称,选中ID 03:00.0一样的,nvidia-smi命令可以查看显卡ID),勾选PCI-Express。在Mdev类型中选择vgpu类型。选哪种,请参考上文。
记得勾选PCI-Express
12.3 启动虚拟机进入win10,设备管理器已经发现该显卡。
12.4 安装驱动
这里需要注意的是,WINDOWS VM安装的驱动版本必须和PVE安装的驱动版本一致。使用较新的驱动程序将不起作用,甚至可能使您的 VM 崩溃。如果您不小心安装了此类驱动程序,建议重新安装Windows VM。15.1(525分支)的驱动程序可以在这里官方下载。也可以在上方我提供的网盘里下载,一样的。
安装比较简单了,一路回车即可。
12.5 安装完后,我们可以看到显卡已经被模拟成p2200,如果你要禁用PVE自带的虚拟显卡,请先安装好其它远程控制软件,否则禁用自带显卡会导致PVE控制台无法访问VM桌面。
13、共享盘设置**
输入
nano /etc/pve/qemu-server/101.conf
编辑母板配置(101根据自已的实际情况修改),将共享盘路径复制出来
输入
nano /etc/pve/qemu-server/102.conf
编辑克隆虚拟机配置,将母板共享盘路径添加进去然后保存。
1.本站大部分内容均收集于网络!若内容若侵犯到您的权益,请发送邮件至:xiaoman1221@yhdzz.cn,工作室将第一时间处理!
2.资源所需价格并非资源售卖价格,是收集、整理、编辑详情以及本站运营的适当补贴,并且本站不提供任何免费技术支持。
3.所有资源仅限于参考和学习,版权归原作者所有。