Proxmox 7.4 使用vgpu_unlock,为GTX1060开启vGPU支持

打印 上一主题 下一主题

主题 546|帖子 546|积分 1638

本文在 2021年发布的博客《Proxmox 5.4使用vgpu_unlock,为GTX1060开启vGPU支持》,介绍了 Proxmox VE 5.4 上部署vGPU unlock 的操作步骤。 
后续有发布了在  Proxmox VE 7.x 上支持 vGPU的博客《Proxmox 7.2 部署 DoraCloud桌面云,支持vGPU》, 实现了通过 3个脚本完成 vGPU的配置。   
本文在上述两个文章的基础上,实现通过4个脚本,实现利用消费级显卡实现vGPU。包含了对 Proxmox VE的更新,启用iommu,安装 nvidia grid 驱动,以及加载 vgpu_unlock。
 
准备工作:

硬件: 一台服务器,配置有ssd硬盘, 安装有GTX 1060 显卡。 
软件: 安装了 Proxmox VE 7.4 。
网络: 网络中可以访问互联网。 
步骤1:换源,更新
  1. curl -o- http://www1.deskpool.com:9000/software/gpu01.sh |bash
复制代码
上面的脚本的内容,为了方便阅读,贴在这里
  1. #!/bin/sh
  2. # Author: DoraCloud Technology Ltd.co
  3. #
  4. # Date: 2022/05/07
  5. #
  6. # DoraCloud for Proxmox Enable vGPU
  7. # Phase 1: update source to mirrors.ustc.edu.cn
  8. cp /etc/apt/sources.list /etc/apt/sources.list.backup
  9. sed -i 's|^deb http://ftp.debian.org|deb https://mirrors.ustc.edu.cn|g' /etc/apt/sources.list
  10. sed -i 's|^deb http://security.debian.org|deb https://mirrors.ustc.edu.cn/debian-security|g' /etc/apt/sources.list
  11. mv /etc/apt/sources.list.d/pve-enterprise.list /etc/apt/sources.list.d/pve-enterprise.list.bak
  12. CODENAME=`cat /etc/os-release |grep PRETTY_NAME |cut -f 2 -d "(" |cut -f 1 -d ")"`
  13. #echo "deb https://mirrors.nju.edu.cn/proxmox/debian/pve $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
  14. #echo "deb https://mirrors.ustc.edu.cn/proxmox/debian $CODENAME pve-no-subscription" > /etc/apt/sources.list.d/pve-no-subscription.list
  15. wget https://mirrors.ustc.edu.cn/proxmox/debian/proxmox-release-$CODENAME.gpg -O /etc/apt/trusted.gpg.d/proxmox-release-$CODENAME.gpg
  16. #更新
  17. apt update && apt install  pve-kernel-5.15 pve-headers-5.15 dkms mdevctl -y
复制代码
 
步骤2: 启用iommu 
  1. curl -o- http://www1.deskpool.com:9000/software/gpu02.sh |bash
复制代码
上面的脚本的内容,为了方便阅读,贴在下方 
  1. #!/bin/sh
  2. # Author: DoraCloud Technology Ltd.co
  3. #
  4. # Date: 2022/05/07
  5. #
  6. # Enable IO-MMU on PVE Server
  7. # 复制如下脚本,启用IO-MMU
  8. echo ""
  9. echo "********************************************"
  10. echo "***  Enable IO-MMU on proxmox host       ***"
  11. echo "********************************************"
  12. # /etc/default/grub 的GRUB_CMDLINE_LINUX_DEFAULT,增加 intel_iommu=on iommu=pt
  13. sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="quiet"/GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"/g' /etc/default/grub
  14. echo ""
  15. echo "    Update grub .... "
  16. update-grub
  17. # 加载 vfio vfio_iommu_type1 vfio_pci vfio_virqfd 4个Modules
  18. echo vfio >> /etc/modules
  19. echo vfio_iommu_type1 >> /etc/modules
  20. echo vfio_pci >> /etc/modules
  21. echo vfio_virqfd >> /etc/modules
  22. echo "options vfio_iommu_type1 allow_unsafe_interrupts=1" > /etc/modprobe.d/iommu_unsafe_interrupts.conf
  23. echo "options kvm ignore_msrs=1 report_ignored_msrs=0" > /etc/modprobe.d/kvm.conf
  24. echo "blacklist nouveau" >>/etc/modprobe.d/disable-nouveau.conf
  25. echo "options nouveau modeset=0" >>/etc/modprobe.d/disable-nouveau.conf
  26. update-initramfs -u
  27. echo ""
  28. echo "    Proxmox host reboot ............."
  29. reboot
复制代码
 
步骤3:安装 NVIDIA GRID 16.2的驱动 
  1. curl -o- http://www1.deskpool.com:9000/software/gpu03f.sh |bash
复制代码
上面的脚本的内容,请自己阅读。 这里选择相对稳定的 16.2 版本。 
#!/bin/sh
# Author: DoraCloud Technology Ltd.co
#
# Date: 2022/05/07
#
# Install NVIDIA Linux vGPU Driver 535.129.03
echo ""
echo "********************************************************"
echo "*** Install NVIDIA Grid vGPU Driver 16.2 V535.129.03 ***"
echo "********************************************************"
echo "    Downloading NVIDIA driver "
wget http://www1.deskpool.com:9000/software/NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm.run
chmod +x NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm.run

echo ""
echo "    Extracting driver .... "
./NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm.run -x
cd NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm/

echo ""
echo "    Installing driver .... "
./nvidia-installer -dkms -s
echo ""
echo "    deamon-reload && rebooting ...."
systemctl daemon-reload
reboot
 
步骤4:运行 vgpu_unlock 和 vgpu_unlock-rs  
  1. curl -o- http://www1.deskpool.com:9000/software/gpu03u.sh |bash
复制代码
上面的脚本的内容,请自己阅读。
#!/bin/sh
# Author: DoraCloud Technology Ltd.co
#
# Date: 2022/05/07
#
# Unlock NVIDIA GTX 1060
echo ""
echo "********************************************************"
echo "***  Unlock NVIDIA GTX1060                           ***"
echo "********************************************************"

echo ""
echo ""
echo "    Download vgpu_lock "
echo ""
apt install git-core -y
git clone https://gitlab.com/polloloco/vgpu-proxmox.git
 
echo ""
echo ""
echo "********************************************************"
echo "    Apply vgpu_unlock to 535.129.03 "
echo ""
./NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm.run --apply-patch ~/vgpu-proxmox/535.129.03.patch
./NVIDIA-Linux-x86_64-535.129.03-vgpu-kvm-custom.run --dkms -s
 
echo ""
echo ""
echo "********************************************************"
echo "    Install RUST "
echo ""
#设置rustup的source为 USTC
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 -s -- -y
#wget -qO- https://cdn.jsdelivr.net/gh/rust-lang-nursery/rustup.rs/rustup-init.sh |sh  -s -- -y
echo ""
echo ""
echo "********************************************************"
echo "    Config cargo "
echo ""
#加载cargo的环境变量
source ~/.cargo/env
#设置cargo的源镜像为 USTC
cat >~/.cargo/config  /etc/systemd/system/nvidia-vgpu-mgr.service.d/vgpu_unlock.conf
 

echo ""
echo ""
echo "********************************************************"
echo "    Reboot Proxmox VE .....  "
echo "    run  mdevctl types to check vGPU is installed.     "
echo ""
sync
reboot
 
里面的内容包括了安装 vgpu_unlock ,安装 rust 环境, 下载和编译 vgpu_unlock-rs, 配置 nvidia-vgpu 和nvidia-vgpu-mgr的服务,
生成vgpu_unlock 显卡配置文件 profile_override.toml 等内容。
全部执行完毕后,系统重启之后,运行 mdevctl types ,可以检查到 vGPU的类型已经生成。
  1. root@pve03:~# mdevctl types
  2. 0000:01:00.0
  3.   nvidia-156
  4.     Available instances: 12
  5.     Device API: vfio-pci
  6.     Name: GRID P40-2B
  7.     Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=12
  8.   nvidia-215
  9.     Available instances: 12
  10.     Device API: vfio-pci
  11.     Name: GRID P40-2B4
  12.     Description: num_heads=4, frl_config=45, framebuffer=2048M, max_resolution=5120x2880, max_instance=12
  13.   nvidia-241
  14.     Available instances: 24
  15.     Device API: vfio-pci
  16.     Name: GRID P40-1B4
  17.     Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=24
  18.   nvidia-283
  19.     Available instances: 6
  20.     Device API: vfio-pci
  21.     Name: GRID P40-4C
  22.     Description: num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=4096x2160, max_instance=6
  23.   nvidia-284
  24.     Available instances: 4
  25.     Device API: vfio-pci
  26.     Name: GRID P40-6C
  27.     Description: num_heads=1, frl_config=60, framebuffer=6144M, max_resolution=4096x2160, max_instance=4
  28.   nvidia-285
  29.     Available instances: 3
  30.     Device API: vfio-pci
  31.     Name: GRID P40-8C
  32.     Description: num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=4096x2160, max_instance=3
  33.   nvidia-286
  34.     Available instances: 2
  35.     Device API: vfio-pci
  36.     Name: GRID P40-12C
  37.     Description: num_heads=1, frl_config=60, framebuffer=12288M, max_resolution=4096x2160, max_instance=2
  38.   nvidia-287
  39.     Available instances: 1
  40.     Device API: vfio-pci
  41.     Name: GRID P40-24C
  42.     Description: num_heads=1, frl_config=60, framebuffer=24576M, max_resolution=4096x2160, max_instance=1
  43.   nvidia-46
  44.     Available instances: 24
  45.     Device API: vfio-pci
  46.     Name: GRID P40-1Q
  47.     Description: num_heads=4, frl_config=60, framebuffer=1024M, max_resolution=5120x2880, max_instance=24
  48.   nvidia-47
  49.     Available instances: 12
  50.     Device API: vfio-pci
  51.     Name: GRID P40-2Q
  52.     Description: num_heads=4, frl_config=60, framebuffer=2048M, max_resolution=7680x4320, max_instance=12
  53.   nvidia-48
  54.     Available instances: 8
  55.     Device API: vfio-pci
  56.     Name: GRID P40-3Q
  57.     Description: num_heads=4, frl_config=60, framebuffer=3072M, max_resolution=7680x4320, max_instance=8
  58.   nvidia-49
  59.     Available instances: 6
  60.     Device API: vfio-pci
  61.     Name: GRID P40-4Q
  62.     Description: num_heads=4, frl_config=60, framebuffer=4096M, max_resolution=7680x4320, max_instance=6
  63.   nvidia-50
  64.     Available instances: 4
  65.     Device API: vfio-pci
  66.     Name: GRID P40-6Q
  67.     Description: num_heads=4, frl_config=60, framebuffer=6144M, max_resolution=7680x4320, max_instance=4
  68.   nvidia-51
  69.     Available instances: 3
  70.     Device API: vfio-pci
  71.     Name: GRID P40-8Q
  72.     Description: num_heads=4, frl_config=60, framebuffer=8192M, max_resolution=7680x4320, max_instance=3
  73.   nvidia-52
  74.     Available instances: 2
  75.     Device API: vfio-pci
  76.     Name: GRID P40-12Q
  77.     Description: num_heads=4, frl_config=60, framebuffer=12288M, max_resolution=7680x4320, max_instance=2
  78.   nvidia-53
  79.     Available instances: 1
  80.     Device API: vfio-pci
  81.     Name: GRID P40-24Q
  82.     Description: num_heads=4, frl_config=60, framebuffer=24576M, max_resolution=7680x4320, max_instance=1
  83.   nvidia-54
  84.     Available instances: 24
  85.     Device API: vfio-pci
  86.     Name: GRID P40-1A
  87.     Description: num_heads=1, frl_config=60, framebuffer=1024M, max_resolution=1280x1024, max_instance=24
  88.   nvidia-55
  89.     Available instances: 12
  90.     Device API: vfio-pci
  91.     Name: GRID P40-2A
  92.     Description: num_heads=1, frl_config=60, framebuffer=2048M, max_resolution=1280x1024, max_instance=12
  93.   nvidia-56
  94.     Available instances: 8
  95.     Device API: vfio-pci
  96.     Name: GRID P40-3A
  97.     Description: num_heads=1, frl_config=60, framebuffer=3072M, max_resolution=1280x1024, max_instance=8
  98.   nvidia-57
  99.     Available instances: 6
  100.     Device API: vfio-pci
  101.     Name: GRID P40-4A
  102.     Description: num_heads=1, frl_config=60, framebuffer=4096M, max_resolution=1280x1024, max_instance=6
  103.   nvidia-58
  104.     Available instances: 4
  105.     Device API: vfio-pci
  106.     Name: GRID P40-6A
  107.     Description: num_heads=1, frl_config=60, framebuffer=6144M, max_resolution=1280x1024, max_instance=4
  108.   nvidia-59
  109.     Available instances: 3
  110.     Device API: vfio-pci
  111.     Name: GRID P40-8A
  112.     Description: num_heads=1, frl_config=60, framebuffer=8192M, max_resolution=1280x1024, max_instance=3
  113.   nvidia-60
  114.     Available instances: 2
  115.     Device API: vfio-pci
  116.     Name: GRID P40-12A
  117.     Description: num_heads=1, frl_config=60, framebuffer=12288M, max_resolution=1280x1024, max_instance=2
  118.   nvidia-61
  119.     Available instances: 1
  120.     Device API: vfio-pci
  121.     Name: GRID P40-24A
  122.     Description: num_heads=1, frl_config=60, framebuffer=24576M, max_resolution=1280x1024, max_instance=1
  123.   nvidia-62
  124.     Available instances: 24
  125.     Device API: vfio-pci
  126.     Name: GRID P40-1B
  127.     Description: num_heads=4, frl_config=45, framebuffer=1024M, max_resolution=5120x2880, max_instance=24
复制代码
 
剩下的工作是部署 GuestOS,并安装 NVIDIA GRID 驱动。 这里推荐部署 DoraCloud,下载 win10LTSC2021V3 模板。 内置了GRID 13.6的驱动。
部署的方法,参考  《Proxmox 7.2 部署 DoraCloud桌面云,支持vGPU》 ,以及  《ShareStation工作站虚拟化部署 (doracloud.cn) 》
 
最后分享以下, GTX 1060 虚拟化之后,vGPU 运行《原神》游戏的效果。

 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

欢乐狗

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表