admin管理员组

文章数量:1530353

事情缘由:

买了一块3090的显卡,部署在服务器上,在Ubuntu里面死活装不了驱动,之前以为是买到垃圾二手显卡了。后来用直通的windows安装驱动,很快就可以使用,所以,这个结果是打脸了自己原先的猜测——说明不是显卡本身问题,还是自己在Ubuntu上安装驱动不对。经过一系列排查,终于搞定了,这里总结了一些关键的坑,作为记录。

本文编写所在的环境:

ESXI版本:8.0

显卡型号:Nvidia 3090(24GB版本)

操作系统版本:Ubuntu22.04

备注:其实ESXI版本使用7.0系列的也差不多的操作,只是界面截图可能有所不同,至于操作系统,ubuntu20.04和22.04都差不多,我都试过,也是一样的操作步骤,都可以安装成功的。

关键问题1:关于ESXI的直通设置

这里我们使用的是ESXI 8.0版本,直通设置需要单独在【导航器】-【主机】-【管理】-【硬件】-【PCI设备】这里做切换,拉到下面找到这个显卡硬件,需要“切换直通”

关键问题2:虚拟机的设置,以及相关的参数设置

(1)虚拟机设置,需要单独为这台虚拟机添加PCI设备——即添加直通的显卡

(2)【虚拟机选项】-【引导选项】,这里必须设置为不启用UEFI安全引导,把勾去掉。或者干脆直接选“BIOS”,否则驱动程序可能由于安全保护机制导致安装失败(这个主要是为了保护内核安全的设置,这里必须去掉)

在ubuntu里面,可以用这个命令确认一下,你当前是否是内核保护状态,如果是enabled,则是,这种状态可能导致驱动程序安装不成功:

mokutil --sb-state

如果是显示:SecureBoot enabled,那么这种有可能是不行的;

如果显示: SecureBoot disabled,那么这种可以

(3)【虚拟机选项】-【高级】-【配置参数】,这里必须添加如下参数:

hypervisor.cpuid.v0 False

pciPassthru.use64bitMMIO True

pciPassthru.64bitMMIOSizeGB 32 (单张显卡,值为32;如果是多张显卡,设置值为64。)

关键问题3:ubuntu屏蔽nouveau,以及驱动安装相关的一些操作

(1)编辑blacklist.conf文件:

sudo vim /etc/modprobe.d/blacklist.conf

 末尾添加如下代码:

blacklist nouveau

options nouveau modeset=0

(2)编辑nvidia.conf文件

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

 末尾添加如下代码:

options nvidia NVreg_OpenRmEnableUnsupportedGpus=1

(3)更新以上配置生效

sudo update-initramfs -u
sudo reboot

(4)如果执行以下命令没有任何输出,那么就代表成功屏蔽了nouveau 

lsmod |grep nouveau

(5)再安装驱动就简单了,可以从官网下载对应的驱动版本 ,然后传到Ubuntu上面来,执行安装命令即可(找驱动和上传文件的步骤就不赘述了):

sudo apt install build-essential pkg-config libglvnd-dev
sudo chmod +x NVIDIA-Linux-x86_64-550.78.run
sudo ./NVIDIA-Linux-x86_64-550.78.run  -no-x-check -no-nouveau-check -no-opengl-files -m=kernel-open

备注:如果之前安装过,就先卸载原来的驱动,重启机器,再重新安装一次就行,卸载命令如下:

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 reboot

如果安装成功,就可以看到熟悉的信息打印界面了,使用nvidia-smi命令查看:

nvidia-smi

大功告成!!!

本文标签: 显卡关键ESXiUbuntuNVIDIA