🌊

生きろ NVIDIA ドライバ

2023/11/11に公開

はじめに

さーて、かわいい Ubuntu ちゃんのソフトウェアアップデートでもするかなー。

$ sudo apt update
$ sudo apt upgrade
$ sudo reboot now

よしよし。インストールが終わったねー。

$ 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.

またおまえか。更新して壊れるんなら勝手にアップグレードするんじゃねぇ。ぶっXすぞ。

原因

わかりません。一般に、NVIDIA ドライバは清き心の持ち主のもとでしか長生きしないことが知られています。

対処

原因がわからない以上はインストールし直したほうが早い。昨日まで元気に走り回っていたんだからまた元気になるはず、なんて甘い考えは捨てろ。NVIDIA ドライバは死んだんだ

私だって救おうとしたさ…… sudo apt --fix-broken installで治してやりたかった。sudo aptitude installで提案された治療法もすべて試した。sudo apt-mark hold nvidia*で自動アップデートからも守ってやろうとした。

でも何度やってもダメなんだ……何度繰り返しても NVIDIA ドライバは助からなかった。

そいつはもうおまえの知っている NVIDIA ドライバじゃない。焼き払えすべてだ

滅びのバーストストリィィィィム!!
$ sudo apt list --installed | grep nvidia

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

nvidia-compute-utils-545/不明,now 545.23.06-0ubuntu1 amd64 [インストール済み、自動]
nvidia-container-toolkit-base/不明,now 1.14.3-1 amd64 [インストール済み]
...
$ sudo apt remove --purge *nvidia*
$ sudo apt autoremove
$ sudo apt list --installed | grep nvidia

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

$ sudo apt list --installed | grep cuda

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

cuda-cccl-11-6/不明,不明,now 11.6.55-1 amd64 [インストール済み、自動]
cuda-cccl-11-8/不明,now 11.8.89-1 amd64 [インストール済み、自動]
...
$ sudo apt remove --purge *cuda*
$ sudo apt autoremove
$ sudo apt list --installed | grep cuda

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

フッ。塵も残さず消し飛んだようだな。

さぁ我らが居城に新たな NVIDIA ドライバを出迎えようではないか。

https://docs.nvidia.com/datacenter/tesla/tesla-installation-notes/index.html

※ 以下のコマンドで wget するときディストリビューションごとに参照先が異なるので気を付けてください。詳しくは公式で確認してください。

$ sudo apt-get install linux-headers-$(uname -r)
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
$ sudo dpkg -i cuda-keyring_1.0-1_all.deb
$ sudo apt-get update
$ sudo apt-get -y install cuda-drivers
$ sudo reboot now
$ nvidia-smi
Sat Nov 11 00:27:09 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06              Driver Version: 545.23.06    CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
...

これで NVIDIA ドライバは蘇った。だが本当にそれでいいのだろうか? ある友人がいま死んでしまったとして、その友人のような姿で、その友人のように振る舞う誰かが明日からその友人の代わりを完璧に務めたとする……私はそんな存在を受け入れられるのだろうか?

ともあれまだ追加作業が残っている。CUDA のツールもインストールしなければいけない。

$ nvcc -V

コマンド 'nvcc' が見つかりません。次の方法でインストールできます:

sudo apt install nvidia-cuda-toolkit

$ sudo apt install nvidia-cuda-toolkit
$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2019 NVIDIA Corporation
Built on Sun_Jul_28_19:07:16_PDT_2019
Cuda compilation tools, release 10.1, V10.1.243

なんか CUDA のバージョン古くないか。私の環境だと CUDA のパッケージリポジトリを既に追加してあったので以下のコマンドで別バージョンのインストールができた。

sudo apt install cuda-11-6
sudo apt install cuda-11-8

最後に Docker との連携。

https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html#installing-with-apt

$ sudo apt install nvidia-container-toolkit
$ sudo nvidia-ctk runtime configure --runtime=docker
$ sudo systemctl restart docker
$ sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
Fri Nov 10 16:25:35 2023
+---------------------------------------------------------------------------------------+
| NVIDIA-SMI 545.23.06              Driver Version: 545.23.06    CUDA Version: 12.3     |
|-----------------------------------------+----------------------+----------------------+
...

オマケ。自動アップデートから守るおまじない。

$ sudo apt-mark hold nvidia*
$ sudo apt-mark hold libnvidia*

結界で守られているパッケージは以下のコマンドで確認可能。

$ dpkg --get-selections | grep hold

手動アップデート時はこのおまじないが逆に悪さすることもあるので、作業前に以下のコマンドで解除する。

$ sudo apt-mark unhold nvidia*
$ sudo apt-mark unhold libnvidia*

おしまい

最近こんなんばっかで環境に振り回されることに何も感じなくなった。無我の境地である。

Discussion