2024年4月7日日曜日

nvidiaのドライバーを更新したのでdocker環境も再インストールしたよ

 一つまえの記事でUbuntu(20.04)のnvidia関連パッケージを一度すべて削除してしまったので、docker関係の環境も再インストールしなければいけなかった。

 下記に従って実行してみた。自分の記載はあやしいのと、当然下記のnvidiaのリンク先のほうが記載が新しくなってる可能性があるので、なにか変だと思ったらnvidia.comにあたったほうが良い。
https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html

1.パッケージのインストール

$ sudo apt install nvidia-container-toolkit

2.設定の変更

$ sudo nvidia-ctk runtime configure --runtime=crio

3.dockerデーモンの再起動

 $ sudo systemctl restart docker

4.確認する

下記でGPUの情報が ホストでnvidia-smiを実行したときと同じように表示されればOKのはず

$ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
Sat Apr  6 16:34:33 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      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 3060        Off |   00000000:04:00.0  On |                  N/A |
|  0%   49C    P8             11W /  170W |     539MiB /  12288MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

ホストOS上でnvidia-smiを実行したときが下記。大丈夫そう。

$ nvidia-smi
Sun Apr  7 01:40:48 2024       
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 550.54.15              Driver Version: 550.54.15      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 3060        Off |   00000000:04:00.0  On |                  N/A |
|  0%   50C    P5             18W /  170W |     560MiB /  12288MiB |      2%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

 

Ubuntuをアップデートしたら起動しなくなったけど色々やったら起動するようになった(nvidiaドライバー)

 久しぶりにUbuntu(20.04)を起動したのでパッケージのアップデートをしようとおもった。

 「ソフトウェアの更新」を実行すると、「部分的にしかアップデートできない」旨の表示が出た。が、特に気にせず、依存関係か何かで何回かに分けてアップデートしないといけないのかなとおもいってそのまま実行、再起動を行った。

起動メニュでUbuntuを実行すると、黒いコンソールの 画面までは進むが、たぶんデスクトップに切り替わるタイミングで画面がフリーズして起動しないという現象に遭遇した。

理由はわからないが、はじめにUbuntu環境をインストールしたときのGPUがGTX1070で、そのままRTX3060に換装して使い続けていたので、なにか不整合が起きてしまっていたのかもしれない(表面上は動いていた、と思う)。

困った。ということでいろいろ調べながらやって復旧した(たぶん)なのでやったことメモ。LinuxおよびUbuntuに詳しい訳ではないので、余計なことをやったりしているかもしれません。実際にはもっといろいろ試行錯誤しているが、結果的に整理すると意味あったのは以下だけだと思う。

1.Ubuntuをリカバリーモードで起動

 これは環境によってやり方がまちまちかもしれない。私の場合はGRUBのメニューの"Advanced options for Ubuntu"みたいなやつを選んで、とにかくRecoveryモードでUbuntuを起動する。まずNetworkを選択するとネットワークが使えるようになるらしいので、それを選んだあとにRootを選んでプロンプトを表示。

 ※このとき苦し紛れにメニューにあるdpkg項目を選んで、gcc関係のパッケージの修復?が行われたようなのだが、これが関係あったかどうかはわからない(たぶんない)

2.起動ログを確認

# journalctl -p err -b

で、起動時のエラーログを見ることができるらしい。気になったのは、

Failed to start nvidia-powered service
とかいうあたりで、ググったりした結果Nvidiaのドライバが壊れてるんだろうとあたりをつけた

3.nvidiaのドライバ類をすべて削除

# sudo apt-get remove --purge '^nvidia-.*'
# sudo apt autoremove

で、いちどnvidia関連のパッケージをすべて削除した。
ついでにdockerのnvidia関連パッケージも消えてしまったがこの際作り直すことにしていったん忘れる。

(※こうするとnouveauドライバが有効になるはずだぜという記事もみつけたのだが、少なくとも自分の環境では起動しなかった(soundがどうとかいうエラーが残っていた。これも調べるとnvidia関連が原因に見えた)。 miniPC+eGPUという環境なのも影響しているのかもしれないし、それでなにか設定が残ってしまっていたのかもしれない)

4.nvidiaのドライバを再インストール

仕方ないのでリカバリーモードのままnvidiaのドライバの再インストールをした。
Nvidiaのサイトのままに、

# sudo ubuntu-drivers install

を実行して、自動的に最適なドライバを検出してもらった。ここは問題なくインストールが完了した。よく考えたらリカバリーモードでrootに入っているのでsudoいらんことに気づいた(今)。

 5.再起動

# sudo  reboot

 で再起動をかけると、無事に起動してデスクトップが表示された。

 

TODO:docker関係の構築をやりなおさなければいけない。