2024年5月4日土曜日

ubuntu 22.04.4 with GPU passthrough on ESXi 8

画像生成AIで遊んでみたくなったので下記パーツでPC作成、ESXi 8を導入。
  • ASRock B550M Pro4
  • AMD Ryzen 7 5700X
  • Palit NED407S019K9-1043D (GeForce RTX 4070 SUPER Dual 12GB)
内蔵NICがRealtek RTL8111Hチップだったので、NICを増設してESXiセットアップは完了。
久々でvmklinux driverが利用できなくなったのを忘れてて時間を無駄にしました。
#vmware買収で無償版が無くなりホームラボ利用が衰退しそうで寂しい限りです。
#VMUG Advantageは大丈夫だろうか。

さて本題、ESXiでGPUパススルー設定後、ubuntu server 22.04.4 LTSのVM作成しましたが、NVIDIAのドライバインストールでハマりました。
結論、nvidia-driver-nnnでうまくいかない場合は、nvidia-driver-nnn-openを試してみよう。

環境
$ uname -r
5.15.0-105-generic
$ grep -i version /etc/os-release 
VERSION_ID="22.04"
VERSION="22.04.4 LTS (Jammy Jellyfish)"
VERSION_CODENAME=jammy
$
オープンソースドライバーNouveauの確認。
$ lsmod |grep nouveau
nouveau              2306048  0
mxm_wmi                16384  1 nouveau
i2c_algo_bit           16384  1 nouveau
drm_ttm_helper         16384  1 nouveau
ttm                    86016  3 vmwgfx,drm_ttm_helper,nouveau
drm_kms_helper        311296  2 vmwgfx,nouveau
video                  65536  1 nouveau
wmi                    32768  2 mxm_wmi,nouveau
drm                   622592  7 vmwgfx,drm_kms_helper,drm_ttm_helper,ttm,nouvea
$
Nouveau無効化設定とkernel initramfs再構築。
$ cat << EOF | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
EOF
$
$ sudo update-initramfs -u
リブートしNouveauドライバーがロードされていないことを確認。
$ lsmod |grep nouveau
$
ドライバーの検索。
$ ubuntu-drivers devices
ERROR:root:aplay command not found
== /sys/devices/pci0000:02/0000:02:05.0 ==
modalias : pci:v000010DEd00002783sv00001569sd0000F302bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-550-open - distro non-free
driver   : nvidia-driver-550 - distro non-free recommended
driver   : nvidia-driver-550-server-open - distro non-free
driver   : nvidia-driver-550-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

== /sys/devices/pci0000:00/0000:00:0f.0 ==
modalias : pci:v000015ADd00000405sv000015ADsd00000405bc03sc00i00
vendor   : VMware
model    : SVGA II Adapter
manual_install: True
driver   : open-vm-tools-desktop - distro free

$ 
recommendedなパッケージをインストールする。
$ sudo apt install nvidia-driver-550
リブート後に確認。
$ lsmod |grep -i nvidia
nvidia_uvm           4648960  0
nvidia_drm             94208  0
nvidia_modeset       1343488  1 nvidia_drm
nvidia              54018048  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        311296  2 vmwgfx,nvidia_drm
drm                   622592  7 vmwgfx,drm_kms_helper,nvidia,nvidia_drm,ttm
$
$ nvidia-smi
No devices were found
$
$ lspci |grep -i nvidia
02:05.0 VGA compatible controller: NVIDIA Corporation AD104 [GeForce RTX 4070 SUPER] (rev a1)
02:05.1 Audio device: NVIDIA Corporation Device 22bc (rev a1)
$
上手くいっていない。
dmesgを見ると下記のメッセージがあり、初期化に失敗しています。
[    3.337870] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  550.67  Tue Mar 12 23:29:25 UTC 2024
[    3.339965] [drm] [nvidia-drm] [GPU ID 0x00000205] Loading driver
[    3.346790] ACPI Warning: \_SB.PC08.S6F0._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20210730/nsarguments-61)
[    5.381856] NVRM: GPU 0000:02:05.0: RmInitAdapter failed! (0x26:0x56:1598)
[    5.382198] NVRM: GPU 0000:02:05.0: rm_init_adapter failed, device minor number 0
[    5.385633] [drm:nv_drm_load [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000205] Failed to allocate NvKmsKapiDevice
[    5.386063] [drm:nv_drm_register_drm_device [nvidia_drm]] *ERROR* [nvidia-drm] [GPU ID 0x00000205] Failed to register device
apt list |grep nvidia-driverで以前のバージョンを確認し、545,535を試してみたがどれも同じ結果となりました。
パッケージ削除は下記を実行すれば良い。
$ sudo apt-get --purge remove nvidia-*
$ sudo apt-get --purge remove libnvidia-*
調べてみると参考URL※1が、同じエラーのようでopen driverを利用すれば良いとのこと。
$ sudo apt install nvidia-driver-550-open
リブート後確認。
$ lsmod |grep -i nvi
nvidia_uvm           4657152  0
nvidia_drm             94208  0
nvidia_modeset       1495040  1 nvidia_drm
nvidia               8577024  2 nvidia_uvm,nvidia_modeset
drm_kms_helper        311296  2 vmwgfx,nvidia_drm
drm                   622592  7 vmwgfx,drm_kms_helper,nvidia,nvidia_drm,ttm
$ nvidia-smi
Fri May  3 21:39:07 2024
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.67                 Driver Version: 550.67         CUDA Version: 12.4     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  NVIDIA GeForce RTX 4070 ...    Off |   00000000:02:05.0 Off |                  N/A |
| 30%   41C    P8             15W /  220W |       2MiB /  12282MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI        PID   Type   Process name                              GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+
$
成功。
Ubuntu Server Docs ※2をみると、-server版の方が用途に合っていたかもしれません。

参考URL)