Last update: 2025/1/31
以下のページでNvidiaのDriverをインストールしたが、nvidia-smiコマンドを打つと以下のようにエラーが出た。
$ nvidia-smi
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure that the latest NVIDIA driver is installed and running.
なお、Driver自体はインストールされている。
$ dkms status
nvidia/570.86.15, 5.14.0-503.22.1.el9_5.x86_64, x86_64: installed
原因は2つあり、まず1つ目はSecure bootがenableになっていた。
2つ目は、nvidiaのDriverではなくNouveauがloadされていた。
$ lsmod | grep nvidia
$ lsmod | grep nouveau
nouveau 3174400 0
drm_ttm_helper 12288 1 nouveau
ttm 106496 2 drm_ttm_helper,nouveau
gpu_sched 69632 1 nouveau
i2c_algo_bit 16384 1 nouveau
drm_gpuvm 49152 1 nouveau
drm_exec 16384 2 drm_gpuvm,nouveau
mxm_wmi 12288 1 nouveau
drm_display_helper 286720 1 nouveau
drm_kms_helper 274432 2 drm_display_helper,nouveau
drm 782336 9 gpu_sched,drm_kms_helper,drm_exec,drm_gpuvm,drm_display_helper,drm_ttm_helper,ttm,nouveau
video 73728 1 nouveau
wmi 45056 4 video,wmi_bmof,mxm_wmi,nouveau
まずSecure bootをdisableにする。これについてはBIOS/UEFIで設定するため実行環境によって操作が異なるが、私の環境では起動時にF11を押してUEFIの設定画面を開き、Secure bootをdisableにした。
次に、Nvidiaの以下のページを参考にして、Nouveauを無効化する。
Disable Nouveau — NVIDIA AI Enterprise: VMware Deployment Guideまずgrub2の今の設定を確認して、上のページと同じ状態になっていることを確認。
$ sudo cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=/dev/mapper/rl-swap rd.lvm.lv=rl/root rd.lvm.lv=rl/swap rd.driver.blacklist=nouveau modprobe.blacklist=nouveau"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
以下のdenylist.confファイルをviやnanoなどのエディタで編集(無ければ作成)する。
$ sudo vi /etc/modprobe.d/denylist.conf
ファイルに以下の2行を追加して、保存して閉じる。
blacklist nouveau
options nouveau modeset=0
このあと初期RAMディスクイメージのNouveauを無効にするが、念のため現在の初期RAM ディスクイメージのバックアップを作成しておく。
$ sudo cp /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).bak.$(date +%m-%d-%H%M%S).img
以下で新しい初期 RAM ディスクイメージを生成する。
$ sudo dracut --force
最後にrebootする。
$ sudo reboot
reboot後、以下のコマンドを打ったところnvidiaのDriverがロードされて動いていることが確認できた。また、nvidia-smiも実行できるようになった。
$ lsmod | grep nvidia
nvidia_drm 143360 0
nvidia_modeset 1548288 1 nvidia_drm
nvidia_uvm 3956736 0
nvidia 89878528 2 nvidia_uvm,nvidia_modeset
drm_kms_helper 274432 2 nvidia_drm
drm 782336 4 drm_kms_helper,nvidia,nvidia_drm
video 73728 1 nvidia_modeset
$ nvidia-smi
Fri Jan 31 20:28:44 2025
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.86.15 Driver Version: 570.86.15 CUDA Version: 12.8 |
|-----------------------------------------+------------------------+----------------------+
| 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 GTX 750 Ti Off | 00000000:10:00.0 On | N/A |
| 32% 21C P8 1W / 38W | 10MiB / 2048MiB | 0% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
基本的には参考文献などを読みつつ試したのだが、最初nouveauを無効化しただけではDriverが有効にならなかった。試しに
$ modprobe nvidia-drm
を実行したところ、「Key was rejected by service」というErrorが出たため、Secure bootが怪しそうだったのでUEFIからdisableにしたらDriverが有効になった。
3.10. システムの起動時にカーネルモジュールが自動的にロードされないようにする | Red Hat Product Documentation
NVIDIAドライバのLinuxへのインストール・トラブルシューティング総まとめ - turgenev’s blogCopyright (c) 2024 kd