Rocky Linux 9でNvidiaのDriverが有効にならない

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 blog

Copyright (c) 2024 kd