インストール - NVIDIAグラフィックドライバ

提供:MochiuWiki - SUSE, Electronic Circuit, PCB
ナビゲーションに移動 検索に移動

概要

パッケージ管理システムを使用して、NVIDIAグラフィックドライバをインストールすることを推奨する。
NVIDIAの公式WebサイトにあるNVIDIAグラフィックドライバに関する情報は、「難しい方法」を参照すること。

グラフィックカードを交換する場合は、まず、NVIDIAグラフィックドライバをアンインストールすることを推奨する。


NVIDIAグラフィックドライバをインストールする前に

まず、X11の設定をバックアップする。

sudo cp /etc/X11/xorg.conf.install /etc/X11/xorg.conf.install_org.conf
sudo cp /etc/X11/xorg.conf.d /etc/X11/xorg.conf.d_org
sudo cp /usr/share/X11/xorg.conf.d /usr/share/X11/xorg.conf.d_org



NVIDIAリポジトリの追加

NVIDIAグラフィックドライバは、ライセンスの関係でRHEL / SUSEの公式リポジトリに入っていない。
しかし、NVIDIAの公式Webサイトにリポジトリが存在するため、追加およびダウンロードすることができる。

RHEL

NVIDIAグラフィックドライバがインストールされているかどうかを確認する。

sudo lspci -nn | grep -i nvidia


DNFパッケージリポジトリのキャッシュを更新する。

sudo makecache


RHEL 9 CodeReady Builderパッケージリポジトリを有効にする。

sudo subscription-manager repos --enable codeready-builder-for-rhel-9-$(uname -i)-rpms


epel-releaseパッケージをインストールする。

sudo dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm


必要ならば、オプションのリポジトリを有効にする。

subscription-manager repos --enable=rhel-9-for-x86_64-appstream-rpms
subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms
subscription-manager repos --enable=codeready-builder-for-rhel-9-x86_64-rpms


全ての変更が有効になるように、DNFパッケージリポジトリのキャッシュを再度更新する。

sudo makecache


必要ならば、NVIDIA CUDAパッケージの公式リポジトリをシステムに追加する。

sudo dnf config-manager --add-repo http://developer.download.nvidia.com/compute/cuda/repos/rhel9/$(uname -i)/cuda-rhel9.repo


SUSE

NVIDIAリポジトリを追加する。

# SLE 15 SP6
sudo zypper addrepo --refresh 'https://download.nvidia.com/suse/sle15sp6/' NVIDIA

# SLE 15 SP5
sudo zypper addrepo --refresh 'https://download.nvidia.com/suse/sle15sp5/' NVIDIA

# SLE 15 SP4
sudo zypper addrepo --refresh 'https://download.nvidia.com/suse/sle15sp4/' NVIDIA

# SLE 15 SP3
sudo zypper addrepo --refresh 'https://download.nvidia.com/suse/sle15sp3/' NVIDIA

# openSUSE Leap 15.6
sudo zypper addrepo --refresh 'https://download.nvidia.com/opensuse/leap/15.6/' NVIDIA



NVIDIAグラフィックドライバのインストール

現在、PCに挿入しているNVIDIAグラフィックカードの情報を表示する。

sudo lspci | grep VGA
sudo  lscpu | grep Arch
または
hwinfo --gfxcard | grep Model
hwinfo --arch


適切なNVIDIAグラフィックドライバを決定する方法を、以下に2つ示す。

プロプライエタリのグラフィックドライバ : 手動インストール

プロプライエタリのドライバをインストールするには、以下の手順に従う。
また、ドライバをインストールすると、自動的にNouveauドライバがブラックリストに登録される。(/etc/modprobe.d/nvidia-default.confファイル)

  1. NVIDIAの公式Webサイトにアクセスして、目的のグラフィックドライバをダウンロードする。
  2. ダウンロードしたグラフィックドライバに対して、以下のコマンドを実行する。
    chmod u+x NVIDIA-Linux-x86_64-<バージョン>.run
    sudo ./NVIDIA-Linux-x86_64-<バージョン>.run
  3. 表示されるメッセージにしたがってインストールする。
  4. インストール完了後、PCを再起動する。


プロプライエタリのグラフィックドライバをアンインストールするには、以下の手順に従う。

  1. NVIDIAの公式Webサイトにあるプロプライエタリのドライバをダウンロードする。
  2. 以下のコマンドを実行して、グラフィックドライバをアンインストールする。
    chmod u+x NVIDIA-Linux-x86_64-<バージョン>.run
    sudo ./NVIDIA-Linux-x86_64-<バージョン>.run --uninstall
  3. Xorgの元の構成をバックアップから復元する。
    sudo nvidia-xconfig --restore-original-backup
  4. Nouveauモジュールを有効にするため、/etc/modprobe.d/nvidia-default.confファイルにあるブラックリストをコメントアウトする。
    sudo vi /etc/modprobe.d/nvidia-default.conf

    # 変更前
    blacklist nouveau
    # 変更後
    # blacklist nouveau
  5. PCを再起動する。


プロプライエタリのグラフィックドライバ : 自動インストール

NVIDIAのリポジトリを登録して、プロプライエタリのドライバをインストールする。
搭載されているGPUに応じて、最新の専用ドライバをインストールする。

RHEL

最新のNVIDIAグラフィックドライバをインストールする。

sudo dnf module install nvidia-driver:open-dkms

# 特定のバージョン (例: version 535) をインストールする場合
sudo dnf module install nvidia-driver:535


PCの再起動後、NVIDIAグラフィックドライバが正常に読み込まれているかどうかを確認する。 これは、nouveauモジュール (オープンソースのNVIDIAグラフィックドライバ) が読み込まれていないことを確認することで判断可能である。

# 何らかの出力がある場合は成功である
sudo lsmod | grep nvidia

# 何も出力されていない場合は成功である
sudo lsmod | grep nouveau  # Should return nothing


さらに、nvidia-smiを実行してドライバが正しく動作していることを確認する。
nvidia-smiは、NVIDIAグラフィックドライバに関する情報を表示する。

NVIDIAグラフィックドライバをアンインストールするには、以下の手順に従う。

sudo dnf remove nvidia-driver
sudo dnf module reset nvidia-driver


SUSE

まず、NVIDIAのリポジトリを追加する。

# SLES 15 SP6
sudo zypper addrepo --refresh https://download.nvidia.com/suse/sle15sp6/ NVIDIA

# SLES 15 SP5
sudo zypper addrepo --refresh https://download.nvidia.com/suse/sle15sp5/ NVIDIA

# openSUSE Leap 15.6
sudo zypper addrepo --refresh https://download.nvidia.com/opensuse/leap/15.6/ NVIDIA


  1. パッケージ管理システムまたは以下のコマンドを実行して、利用可能なパッケージを確認する。
    sudo zypper se x11-video-nvidiaG0*
    または
    sudo zypper se -s x11-video-nvidiaG0*
  2. 次に、NVIDIAグラフィックドライバをインストールする。
    install-new-recommendsパッケージは、ゲーム等の不要なソフトウェアも追加されるので注意すること。
    sudo zypper install nvidia-computeG05 nvidia-gfxG05-kmp-default* nvidia-glG05 x11-video-nvidiaG05
    または
    sudo zypper install-new-recommends


NVIDIAグラフィックドライバをアンインストールするには、以下の手順に従う。

  1. 以下のコマンドを実行する。
    sudo zypper remove nvidia-computeG05 nvidia-gfxG05-kmp-default* nvidia-glG05 x11-video-nvidiaG05
  2. Xorgの元の構成をバックアップから復元する。
    sudo nvidia-xconfig --restore-original-backup
  3. Nouveauモジュールを有効にする。(/etc/modprobe.d/nvidia-default.confファイルにあるブラックリストをコメント化)
    sudo vi /etc/modprobe.d/nvidia-default.conf

    # 変更前
    blacklist nouveau

    # 変更後
    # blacklist nouveau
  4. PCを再起動する。



MOKデータベースへの登録

セキュアブートが有効化されているLinuxでは、署名されていないカーネルモジュールのロードを拒否する。

セキュアブートシステムへのnVidiaグラフィックドライバのインストール中において、
MOKキーペアが作成され、作成された秘密鍵でカーネルモジュールが署名されている。

作成された証明書(公開鍵)は、/var/lib/nvidia-pubkeysディレクトリ内のファイルにあるが、
登録されるMOK pubkeysのリストにインポートする必要がある。

最初の再起動後、この証明書は簡単にMOKデータベースに登録することができる。(EFIツール mokutilが自動的に起動する)
EFIツールにおいて、[Enroll MOK] - [Continue] - [Yes]を選択する。
パスワードは、ルートパスワード(USキーボードレイアウトに注意すること)を使用する。
これにより、証明書がMOKデータベースに追加されて(信頼されているとみなされる)、一致する署名を持つカーネルモジュールをロードできるようになる。

EFIツールを終了するには、"Reboot"を選択する。

もし、初回再起動後に証明書登録の設定を行っていない場合は、以下のコマンドを実行して、証明書を再インポートできる。

sudo mokutil --import /var/lib/nvidia-pubkeys/MOK-nvidia-gfxG0<数字>-<バージョン>-<カーネルバージョン>.der --root-pw


次に、Linuxを再起動して、上記の証明書を登録する。

セキュアブートに問題がある場合に備えて、自己責任でカーネルモジュールの検証を無効にすることができる。

sudo mokutil --disable-validation



nVidiaグラフィックドライバのアップデート

ドライバの更新において、古い公開鍵が登録されて使用されなくなった場合は、MOKのデータベースから削除される。
そのため、Linuxを再起動すると、[Enroll MOK]メニュー項目に加えて[Delete MOK]項目がEFIツールに表示される。

MOKデータベースから削除するには、[Delete MOK] - [Continue] - [Yes]を選択する。
パスワードは、ルートパスワード(USキーボードレイアウトに注意すること)を使用する。
間違ったキーを削除しないように、[View Key X]を選択すると、公開鍵の証明書 / 説明を表示することができる。
この時、任意のキーを押下すると、そこから先に進むことができる。


NVIDIAグラフィックドライバのアンインストール

パッケージ管理システム

  1. YaSTを起動して、[ソフトウェア] - [ソフトウェア管理]を選択する。
  2. [表示]タブ - [リポジトリ]から、NVIDIAリポジトリを選択する。
  3. nVidiaリポジトリからインストールされているパッケージを削除する。
    コンフリクトを無視して、"依存関係を壊す"を選択する。
  4. YaSTに戻り、[ソフトウェア] - [ソフトウェアリポジトリ]を選択する。
  5. nVidiaリポジトリを無効に設定する。
    次回において、リポジトリがサーバと同期された時に有効に戻るため、削除しないこと。


プロプライエタリなドライバをアンインストールすると、以前のX11の設定ファイルがあれば復元される。
その間にハードウェアが変更されている場合は、このファイルを手動で編集する必要がある。

手動

以下のコマンドを実行して、NVIDIAグラフィックドライバをアンインストールする。

sudo zypper remove x11-video-nvidiaG04
または
sudo zypper remove x11-video-nvidiaG05


もし、全てのパッケージが削除されない場合、以下のコマンドを実行する。

sudo zypper se -ir NVIDIA
または
sudo zypper lr
sudo zypper se -ir <リポジトリ番号>


また、NVIDIAグラフィックドライバのインストーラが、ブラックリストにnouveauを追加している可能性があるため、
modeset DDXドライバやnouveau DDXドライバを再び実行できるようにする。
/etc/modprobe.dディレクトリ内のファイル群において、blacklist nouveauという単語を含むファイルがないことを確認する。

アンインストール後、以下のコマンドを実行する必要がある。

sudo mkinitrd



トラブルシューティング

GDM(GNOME)を使用している場合、NVIDIAのプロプライエタリドライバのインストール後、
Linuxのログイン画面の前にコンピュータがフリーズする時は、/etc/gdm/custom.confファイルに以下を追記する。

 WaylandEnable=false


NVIDIAグラフィックドライバが正常に読み込まれているか確認するには、以下のコマンドを実行する。(数値は無視する)

lsmod | grep nvidia

# 出力
nvidia_drm <数値> <数値>
nvidia_modeset <数値> <数値> nvidia_drm
nvidia_uvm <数値> <数値>
nvidia <数値> <数値> nvidia_uvm、nvidia_modeset
drm_kms_helper <数値> <数値> nvidia_drm、i915
drm <数値> <数値> drm_kms_helper、nvidia_drm、i915


WaylandとNVIDIAグラフィックドライバ

NVIDIAリポジトリ( https://download.nvidia.com/opensuse または https://download.nvidia.com/suse )を通じて提供されるドライバは、
Waylandディスプレイプロトコル(2020年8月現在)と互換性が無いため、GDM等を起動する場合、ハングする可能性がある。

回避策として、NVIDIAグラフィックドライバを使用して、Waylandの代わりにXorgを使用することを推奨する。
これにより、nouveauドライバよりも多くの3Dグラフィックサポートが可能になる。

Xorgを使用するため、以下の手順を行う。

  1. まず、Linuxをマルチユーザモード(ランレベル3)で起動する。
  2. nouveauドライバをアンインストールする。
    または、/etc/modprobe.d/50-blacklist.confファイルに以下の設定を追記する。
    blacklist nouveau
  3. NVIDIAグラフィックドライバをインストールする。
    (上記のインストール手順を参照すること)
  4. /etc/gdm/custom.confファイルに以下の設定を追記する。
    WaylandEnable=false
  5. Linuxを再起動して、ディスプレイマネージャを起動する。


OS起動時のロード時間が長い

OS起動時にアニメーションを表示するPlymouthが、Nvidiaグラフィックドライバに対して正常に動作していないのが原因と予想される。

この問題を解決するために、以下に示す2つのファイルを作成する。

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


# /etc/modprobe.d/nvidia.confファイル

options nvidia_drm modeset=1


sudo vi /etc/dracut.conf.d/nvidia.conf


# /etc/dracut.conf.d/nvidia.confファイル

add_drivers+="nvidia nvidia_modeset nvidia_uvm nvidia_drm"
install_items+="/etc/modprobe.d/nvidia.conf"


上記で作成した設定ファイルを使用して、システムを更新する。

sudo dracut -f


エラー : Unable to load info from any available system

パッケージ管理システムからNVIDIAグラフィックドライバをインストールした時、このエラーが発生する原因は、
Linuxが、NVIDIAグラフィックドライバではなく、別のグラフィックドライバを実行しているからである。

解決するには、openSUSE Primeをインストールして、グラフィックドライバとしてNVIDIAを選択する必要がある。

  1. まず、openSUSE Primeをインストールする。
    sudo zypper install opensuse-prime
  2. Linuxを再起動する。
  3. prime-selectコマンドを実行して、グラフィックドライバを切り替える。
    sudo prime-select nvidia
  4. X11関連のディレクトリおよびファイルのバックアップを作成する。
    sudo cp /etc/X11/xorg.conf.install /etc/X11/xorg.conf.install_org.conf
    sudo cp /etc/X11/xorg.conf.d /etc/X11/xorg.conf.d_org
    sudo cp /usr/share/X11/xorg.conf.d /usr/share/X11/xorg.conf.d_org
  5. 設定を反映させるため、以下のコマンドを実行する。
  6. sudo nvidia-xconfig
  7. Linuxを再起動する。



ファームウェアの更新

NVIDIAグラフィックカードのファームウェアを更新するには、NVFlashと新しいファームウェアが必要である。

  1. まず、NVFlashをダウンロードして解凍する。
  2. グラフィックボードで使用している現在のファームウェアのバックアップを取る。
    sudo ./nvflash --save backup.rom
    または
    sudo ./nvflash -b backup.rom
  3. もし、グラフィックカードのプロセッサの数を確認する場合は、以下のコマンドを実行する。
    sudo ./nvflash -list
    sudo ./nvflash --protectoff
  4. グラフィックカードのファームウェアを更新するため、以下のコマンドを実行する。
    sudo ./nvflash <新しいファームウェアのファイル>.rom
  5. "ビデオカードのファームウェアを更新しますか?"というメッセージが表示されるので、[Y]キーを押下する。(他のキーを押下すると中断する)
  6. ファームウェアのアップデートが完了するとビープ音が鳴り、"Update successful"メッセージが表示される。
  7. PCを再起動する。
  8. CPU-XまたはCPU-Zでグラフィックカードの状態を確認する。
    新しいファームウェアのバージョンが記載されていれば、正常にアップデートされている。