【勉強メモ】UbuntuでNVIDIAドライバのマイナーバージョンを手動インストールする手順
はじめに
“あれっ?同じバージョンで入れたはずなのに微妙に違うじゃん!?”
こんにちは!
この記事を読んでいるということは、Ubuntu環境のNVIDIAドライバのバージョン違いで困っているのではないでしょうか。
実は私も同じ状況に陥り、「同じコマンドで入れたはずなのに、微妙に違うバージョンが入ってる…!」 という現象に悩まされました。
たとえば、以下のような nvidia-smi の出力があったとします:
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 570.181 Driver Version: 570.181 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 RTX 2080 Ti Off | 00000000:XX:XX.X On | N/A |
| 36% 45C P8 12W / 260W | 119MiB / 11264MiB | 14% Default |
| | | N/A |
+-----------------------------------------+------------------------+----------------------+
| 1 NVIDIA GeForce RTX 2080 Ti Off | 00000000:XX:XX.X Off | N/A |
| 30% 38C P8 18W / 260W | 6MiB / 11264MiB | 0% Default |
| | | N/A |
+-----------------------------------------------------------------------------------------+
ここで 570 がメジャーバージョン、181 がマイナーバージョンです。
私が最初に使っていたインストールコマンドは以下のものでした:
sudo apt-get install nvidia-driver-570
一見これで「570系ドライバ」が入るように見えますが、実際はマイナーバージョンを指定していないため、
APTリポジトリ上の「その時点での最新版(例:570.195.03)」が自動的にインストールされます。
そのため、同じUbuntu・同じコマンドでも、時期によって微妙に異なるドライバが入ってしまうんです。
そこで今回は、
🎯「NVIDIA公式サイトからマイナーバージョン(例:570.181)を手動で指定してインストールする方法」
を紹介します。
手順
1. 事前準備
ドライバのアップデートのためにはGUI(デスクトップ環境、マウスで操作するような直感的な動作のインターフェース)を停止する必要があります。
しかし、GUIを停止すると日本語入力ができなくなるため、Ubuntuで日本語を使えるようにするか、日本語が使える別のPCからSSH接続して操作するのがおすすめです。
その前に、以下の情報をメモしておきましょう。
- 対象マシンのIPアドレス(例:
100.75.xxx.xxx) - ドライバをダウンロードするディレクトリのパス(例:
~/Downloads/)
SSH接続例:
ssh ユーザー名@100.75.xxx.xxx
2. NVIDIA公式サイトからドライバをダウンロード
GUIが動いているうちに、
NVIDIA公式ドライバダウンロードページ にアクセスします。
設定例:
| 項目 | 値 |
|---|---|
| 製品タイプ | GeForce |
| 製品シリーズ | RTX 20 Series |
| 製品 | RTX 2080 Ti |
| OS | Linux 64-bit |
この状態でドライバを探すと、適用可能なドライバが出てくるので使いたいものをダウンロード
.run ファイル(例:NVIDIA-Linux-x86_64-570.181.run)をダウンロードします。
日本語入力できる環境ではないなら、英語名のフォルダに置くことで .run ファイルを走らせることができます。
3. GUIを停止
TeamViewerやAnyDeskなどリモートデスクトップは、GUI停止中は使えなくなります。
SSH経由で接続してから、以下を実行します。
sudo systemctl stop gdm
黒いテキスト画面(tty)に切り替わったら成功です。
4. ドライバを手動インストール
保存したフォルダに移動して実行します。
以下は、/Downloadsにドライバをダウンロードした時の例です:
cd ~/Downloads
sudo ./NVIDIA-Linux-x86_64-570.181.run --silent
途中で以下のような警告が出ても無視して大丈夫です。
WARNING: Unable to determine the path to install the libglvnd EGL vendor library config files.
これはGUI向けの設定であり、GPU計算やCUDAには影響しません。
5. 再起動
sudo reboot
再起動後、以下のコマンドで確認します。
nvidia-smi
出力にダウンロードしたバージョンが表示されれば成功です。
例: Driver Version: 570.181
6. GUIの再開
パソコンをテキストモードのみで操作したい変態じゃない限りは、GUIを起動することを推奨します。
sudo systemctl start gdm
7. Dockerコンテナが起動しなくなった場合の対処
ドライバを入れ直したあと、以下のようなエラーが出ることがあります:
Error response from daemon: could not select device driver "" with capabilities: [[gpu]]
これは、NVIDIA Container Toolkit がDockerと再リンクされていないためです。
以下の手順で復旧します。
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker
確認テスト:
今までのコンテナがstartできるようになっていたらOK。
無ければ以下のコマンドで簡易的にテスト。
docker run --rm --gpus all nvidia/cuda:12.1.1-base-ubuntu22.04 nvidia-smi
→ GPU情報が出ればOK。
おわりに
Ubuntuで sudo apt install nvidia-driver-570 を実行しても、
リポジトリにある最新のマイナーバージョンが自動で選ばれるため、
環境ごとに微妙に違うドライバが入ることがあります。
この方法なら、公式サイトから特定のマイナーバージョンを確実にインストールでき、
複数パソコン間での環境統一・再現性確保が可能になります。
Discussion