vmware虚拟机玩GPU显卡直通

部署运行你感兴趣的模型镜像

 安装好exsi以后,找到管理----硬件-----PCI设备,勾选想要直通的显卡,然后点击“切换直通”

切换以后可以看到列表中的直通列显示为活动就对了。

然后编辑虚拟机设置,CPU关闭硬件虚拟化(向客户机操作系统公开硬件辅助的虚拟化)

内存勾选锁定(预留所有客户机内存,全部锁定)

,虚拟机选项----引导选项-----关闭UEFU安全引导(这个必须要关,很重要)

添加其他设备-------PCI设备,在配置界面的最底部会多出来一个“新PCI设备”,选择想要直通的设备,

依次添加想要直通的显卡

看其他文章建议,将声卡也一块加进去,那就把声卡也加进去避免出现未知问题。下图是我正常工作以后的截图:

我这里安装的是ubuntu 22.04 server,内核是5.19.0-32,安装过程中不要勾选(安装第三方显卡或WIFI 驱动那个复选框),安装完系统以后在安装英伟达驱动前务必先apt update更新包,再apt upgrade升级所有包,特别是和核心有关的包都升级到最新版以后再开始安装英伟达驱动。

 按照下面的方法进行安装编译器等:

sudo apt install libglvnd-core-dev  libglvnd-dev  build-essential 

安装好了基本的编译环境以后,用你的浏览器打开

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local

如果你安装的系统和我的不一样就按照实际情况选择你的操作系统类型,如果都一样就应该可以直接打开就能用,最后得到下面这样的内容:

wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin
sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.4.1/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.1-550.54.15-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda-toolkit-12-4

如果你的网络不好,可以用迅雷等提前将第三行命令wget那个deb安装包下载下来然后上传到虚拟机里面使用,上面的命令都执行完就行了。

Official Drivers | NVIDIA 这里下载对应的设备驱动.run文件,和在实体物理机器里面安装驱动不同,下面这一步必须用这个.run文件进行安装,主要是要这个-m=kernel-open参数。

执行你下载得到的.run文件,例如

sudo chmod +x ./NVIDIA-Linux-x86_64-550.107.02.run
sudo ./NVIDIA-Linux-x86_64-550.107.02.run -m=kernel-open

 执行以后有大量的选项让你选择,按照提示进行选择安装就可以了。

 如果安装的是ubuntu server系统,按照提示直接安装完reboot就可以用了,如下:

后续就是安装cuda开发环境

https://developer.nvidia.com/cudnn-downloads?target_os=Linux&target_arch=x86_64&Distribution=Ubuntu&target_version=22.04&target_type=deb_local

和前面的安装过程类似,也是打开上面这个地址,根据你的实际系统类型进行选择,选择完了以后得到一个差不多是这样的命令清单,按照提示执行一遍就可以了。

wget https://developer.download.nvidia.com/compute/cudnn/9.1.1/local_installers/cudnn-local-repo-ubuntu2204-9.1.1_1.0-1_amd64.deb
sudo dpkg -i cudnn-local-repo-ubuntu2204-9.1.1_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-ubuntu2204-9.1.1/cudnn-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cudnn

安装好以后配置一下环境变量,vi  /etc/profile在文件的最后添加以下内容:

export PATH=/usr/local/cuda/bin:$PATH
export CPATH=$CPATH:/usr/include:/usr/local/cuda/include
export LIBRARY_PATH=$LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/usr/local/cuda/lib64
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib/x86_64-linux-gnu:/usr/local/cuda/lib64

  到这里在虚拟机里面的英伟达显卡驱动、cuda这些就都安装好了,上面是针对ubuntu 22.04 server版本的安装配置过程,如果你用的是ubuntu 22 desktop,需要按照下面的方法安装,在执行.run文件之前先编辑以下文件并添加内容如下:

sudo nano /etc/modprobe.d/blacklist-nvidia-nouveau.conf

blacklist nouveau
options nouveau modeset=0

sudo nano /etc/modprobe.d/nvidia.conf

options nvidia NVreg_OpenRmEnableUnsupportedGpus=1

sudo update-initramfs -u

reboot

重启完成以后上传下载得到的.run文件到ubuntu 22.04 desktop,chmod +x 赋予可执行权限,然后

./NVIDIA-Linux-x86_64-550.107.02.run -m=kernel-open

所有能选择yes的都选择yes,安装完成以后reboot,执行nvidia-smi,可以看到下面的画面:

到这里就都安装完了,跑AI算法应该是没问题的,但是想正常使用ubuntu 的gui应该是有点问题,反正我这里是不行,也不知道是哪里有问题。

-----------------------------------------------------------------------------------------------------------------------------

下面的资料是来回折腾尝试配置的时候的资料,不用看了,按照上面的方法安装就可以用了,不需要修改什么虚拟机的配置参数值,手动配置什么参数=0啊,配置什么参数=TRUE之类的,都不用,直接用就行。

1. Go to: /etc/modprobe.d/
2. Make a file: blacklist-nvidia-nouveau.conf
3. Put this in the file:
blacklist nouveau
options nouveau modeset=0
4. Make a other “nvidia.conf” file and put this in the file: options nvidia NVreg_OpenRmEnableUnsupportedGpus=1
5. Updat kernel init ram fs: sudo update-initramfs -u
6. Reboot
7. Go to the Nvidia site to the page to download the driver that you want.
8. Copy the URL of the download butten and past it behind wget to download it to the current folder
9. Sudo chmod 700 the file
10. Run the install file: sudo .\filename.run
a. For open source: sudo .\filename.run -m=kernel-open
b. Watch out! See that the nvidia.conf file exist in the modprobe folder and you have rebooted (and run the update-initramfs commando). Then only the GTX/RTX/QUADRO cards wil work!
11. After the instalation reboot the server
12. Test with nvidia-smi
13. Great succes!

pciPassthru.use64bitMMIO配置为TRUE

VMkernel.Boot.disableACSCheck配置为TRUE   

pciPassthru.64bitMMIOSizeGB配置为64  

nano /etc/modprobe.d/blacklist.conf 在文件的最后添加以下内容后重启

blacklist nouveau
blacklist rivafb
blacklist nvidiafb
blacklist rivatv
blacklist nv

如果你前面的步骤没有禁用uefi安全启动,安装驱动的时候会有下面的提示:会要求你输入两遍密码,记住输入的密码,过一会重启以后要用。

重启以后会出现下面这样的界面,选择第二个Enroll MOK,选择continue,一直到要你输入密码后reboot

 都安装好以后如果提示找不到设备,可以敲以下命令进行排查

nvidia-smi  这个现在我执行是提示没有设备

root@vgpu1:~# lspci | grep NVIDIA
03:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)
03:01.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
03:01.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)
root@vgpu1:~#  lsmod | grep nvidia
nvidia_uvm           4677632  0
nvidia_drm             98304  0
nvidia_modeset       1343488  1 nvidia_drm
nvidia              54030336  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        200704  2 vmwgfx,nvidia_drm
drm                   581632  8 vmwgfx,drm_kms_helper,nvidia,drm_ttm_helper,nvidia_drm,ttm
root@vgpu1:~#  dmesg | grep nvidia
[    6.244921] audit: type=1400 audit(1723624822.923:4): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe" pid=785 comm="apparmor_parser"
[    6.244926] audit: type=1400 audit(1723624822.923:5): apparmor="STATUS" operation="profile_load" profile="unconfined" name="nvidia_modprobe//kmod" pid=785 comm="apparmor_parser"
[    6.898620] nvidia: loading out-of-tree module taints kernel.
[    6.898632] nvidia: module license 'NVIDIA' taints kernel.
[    7.046885] nvidia-nvlink: Nvlink Core is being initialized, major device number 236
[    7.048732] nvidia 0000:03:00.0: enabling device (0000 -> 0003)
[    7.049766] nvidia 0000:03:00.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    7.099483] nvidia 0000:03:01.0: enabling device (0000 -> 0003)
[    7.100327] nvidia 0000:03:01.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=none:owns=none
[    7.220493] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  550.54.15  Tue Mar  5 21:59:57 UTC 2024
[    7.257032] [drm] [nvidia-drm] [GPU ID 0x00000300] Loading driver
[    8.143173] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000300] Failed to allocate NvKmsKapiDevice
[    8.143332] [drm:nv_drm_register_drm_device [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000300] Failed to register device
[    8.143448] [drm] [nvidia-drm] [GPU ID 0x00000301] Loading driver
[    9.024981] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000301] Failed to allocate NvKmsKapiDevice
[    9.025120] [drm:nv_drm_register_drm_device [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000301] Failed to register device
[    9.111670] nvidia_uvm: module uses symbols nvUvmInterfaceDisableAccessCntr from proprietary module nvidia, inheriting taint.
[    9.141323] nvidia-uvm: Loaded the UVM driver, major device number 234.
root@vgpu1:~# lshw -c video
  *-display
       description: VGA compatible controller
       product: SVGA II Adapter
       vendor: VMware
       physical id: f
       bus info: pci@0000:00:0f.0
       logical name: /dev/fb0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: vga_controller bus_master cap_list rom fb
       configuration: depth=32 driver=vmwgfx latency=64 resolution=1176,885
       resources: irq:16 ioport:840(size=16) memory:f0000000-f7ffffff memory:ff000000-ff7fffff memory:c0000-dffff
  *-display:0
       description: VGA compatible controller
       product: GA102 [GeForce RTX 3090]
       vendor: NVIDIA Corporation
       physical id: 0
       bus info: pci@0000:03:00.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list
       configuration: driver=nvidia latency=248
       resources: irq:17 memory:fc000000-fcffffff memory:c0000000-cfffffff memory:d2000000-d3ffffff ioport:d80(size=128)
  *-display:1
       description: VGA compatible controller
       product: GA102 [GeForce RTX 3090]
       vendor: NVIDIA Corporation
       physical id: 26
       bus info: pci@0000:03:01.0
       version: a1
       width: 64 bits
       clock: 33MHz
       capabilities: pm msi pciexpress vga_controller bus_master cap_list
       configuration: driver=nvidia latency=248
       resources: irq:18 memory:fb000000-fbffffff memory:b0000000-bfffffff memory:d0000000-d1ffffff ioport:d00(size=128)
root@vgpu1:~# lspci | grep NVIDIA
03:00.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
03:00.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)
03:01.0 VGA compatible controller: NVIDIA Corporation GA102 [GeForce RTX 3090] (rev a1)
03:01.1 Audio device: NVIDIA Corporation GA102 High Definition Audio Controller (rev a1)

sudo journalctl -b

如果需要卸载旧的驱动或者删除有问题的驱动,可以尝试将下面的内容存为shell 脚本去执行

sudo nvidia-uninstall
sudo apt purge -y '^nvidia-*' '^libnvidia-*'
sudo rm -r /var/lib/dkms/nvidia
sudo apt -y autoremove
sudo update-initramfs -c -k `uname -r`
sudo update-grub2
read -p "Press any key to reboot... " -n1 -s
sudo reboot

 参考文章:https://linuxconfig.org/how-to-install-the-nvidia-drivers-on-manjaro-linux  

Nvidia-smi "No devices were found" - VMWare ESXI Ubuntu Server 20.04.03 with RTX3070 - #38 by frostywite - Linux - NVIDIA Developer Forums

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

<think>好的,我现在需要处理用户关于在VMware虚拟机中配置和启用GPU直通功能的请求。首先,我得回忆一下VMware的相关知识,特别是GPU直通的部分。记得GPU直通允许虚拟机直接访问物理GPU,这对于需要图形处理或计算任务的应用非常有用,比如AI训练或3D渲染。 用户提到了引用[1]和[2],其中引用[1]提到VMware虚拟机可以使用GPU,但需要硬件支持、合适的版本和配置。而引用[2]讨论了KVM的GPU使用,但用户现在关注的是VMware。我需要确保提供的信息准确,并且符合VMware的具体步骤。 首先,我需要确认哪些VMware版本支持GPU直通。通常,VMware vSphere ESXi支持PCI直通,而Workstation可能不支持。用户可能使用的是ESXi,因为直通功能在Type-1 hypervisor中更常见。所以步骤应该基于ESXi的环境。 接下来,硬件要求。主机的CPU需要支持VT-d或AMD-Vi,这是Intel和AMD的I/O虚拟化技术。主板BIOS中必须启用这些功能。同时,GPU本身需要支持直通,比如NVIDIA的某些专业显卡,而消费级的GeForce可能有限制,需要查证。 然后是具体步骤:在ESXi主机上启用PCI设备直通,将GPU标记为直通设备,重启主机,然后将该GPU分配给虚拟机。配置虚拟机时,需要确保安装正确的驱动程序。可能还需要注意虚拟机兼容性设置,比如硬件版本是否支持直通。 另外,用户可能遇到的问题包括兼容性问题、驱动安装失败或性能不佳。需要提醒用户检查这些点,并建议在生产环境中使用前进行测试。 最后,生成相关问题时,要考虑用户可能进一步想知道的内容,比如性能优化、不同VMware版本的区别,或者与其他虚拟化技术的对比,如KVM的GPU直通方法。 现在需要把这些步骤结构化,用清晰的中文说明,同时确保LaTeX格式正确,行内公式用$...$,独立公式用$$...$$,但这个问题可能不涉及数学公式。不过如果有涉及性能分析或计算的地方,可能需要用到,但此处可能较少。检查是否有需要添加引用标识的地方,比如在提到需要硬件支持时引用[^1]。 需要确保回答步骤正确,没有遗漏关键点,比如BIOS设置、ESXi配置、驱动安装等。同时,语言要简洁明了,让用户能够逐步跟随操作。</think>### VMware虚拟机配置GPU直通功能步骤 #### 1. **确认硬件和软件兼容性** - **硬件要求**: - **CPU支持虚拟化技术**:需启用Intel VT-d或AMD-Vi(I/O虚拟化功能),需在主板BIOS中开启[^1]。 - **GPU兼容性**:GPU必须支持PCI直通(如NVIDIA Tesla/Quadro系列或AMD FirePro系列)。消费级显卡(如GeForce)可能受限。 - **VMware版本**:需使用**VMware ESXi**(vSphere Hypervisor),Workstation或Fusion不支持直通功能。 #### 2. **启用ESXi主机的PCI直通功能** - **步骤**: 1. 登录ESXi主机管理界面(通过vSphere Client或Web UI)。 2. 进入「主机 → 管理 → 硬件 → PCI设备」。 3. 找到目标GPU设备,点击「切换直通」将其状态改为`活动`。 4. **重启ESXi主机**使配置生效。 #### 3. **将GPU分配给虚拟机** - **步骤**: 1. 编辑虚拟机设置,选择「添加其他设备 → PCI设备」。 2. 选择已启用直通的GPU。 3. 确保虚拟机操作系统类型匹配GPU驱动(如Windows需安装对应NVIDIA/AMD驱动)。 ```plaintext 注:虚拟机需关闭(关机状态)才能添加PCI设备。 ``` #### 4. **安装GPU驱动程序** - **虚拟机内操作**: 1. 启动虚拟机,安装与GPU型号匹配的官方驱动(如NVIDIA GRID驱动或AMD FirePro驱动)。 2. 验证设备管理器是否识别到GPU(无感叹号或错误提示)。 #### 5. **验证直通功能** - **测试方法**: - 运行GPU-Z或CUDA Toolkit检测GPU状态。 - 执行图形密集型任务(如渲染或AI推理)观察性能提升。 --- ### 常见问题与注意事项 - **性能问题**:直通后GPU独占使用,主机无法同时调用该GPU。 - **兼容性限制**:部分GPU需额外许可证(如NVIDIA vGPU需企业授权)。 - **多GPU配置**:若需为多个虚拟机分配GPU,需使用支持SR-IOV或vGPU技术的硬件。 ---
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

peihexian

你的鼓励是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值