現象
nvidia-smiが突然使えなくなり、driverの再インストールを試みたが上手くいかなかった
結論
最新版のドライバで --no-cc-version-check が使えず、gccのversion mismatchが起こり続けていた。gccのバージョン上げてシンボリックリンクを正しくすると解決
環境
- Ubuntu 22.04
- GPUドライバ (NVIDIA-Linux-x86_64-535.146.02)
内容と推測
Ubuntu 22.04で使っていたGPUがいつの間にか反応しなくなり、nvidia-smiをしたところ反応せず。
GPUのドライバが使えない状況になっていた。
Ubuntuのセキュリティアップグレード等をしたかもしれないので、その影響かも
やったこと
GPUドライバのインストール
いつも通りNVIDIAのホームページからGPUドライバをダウンロード
- 事前準備
画面が消えるので、SSHでアクセスできるようにしている
sudo apt-get update
sudo apt-get install build-essential
sudo apt-get install openssh-server
ip address
- nouveauの無効化
sudo vi /etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0
sudo update-initramfs -u
- gdmのサービス停止
sudo service gdm stop
- ドライバインストール
sudo sh ./<ドライバ名> --dkms
gccのバージョンミスマッチが起きていたので、臨時対処でオプション追加
sudo sh ./<ドライバ名> --dkms --no-cc-version-check
これでもgccのバージョンをチェックされてインストールできない。。。
おとなしくgccのバージョンアップを実施
エラーログを見るとv12を要求されていたのでインストール
sudo apt-get update
sudo apt-get -y install gcc-12
これだけだと既にあるv11が使用されるため不十分
シンボリックリンクの確認と変更
シンボリックリンクを変えないと、ドライバインストール時に参照されるのがv11のままになってしまう
ここからは具体的な実行結果も
- gccの確認
user@user:~$ ls /usr/bin/gcc* -l
user@user:/usr/bin$ ls -l gcc*
lrwxrwxrwx 1 root root 6 1月 14 23:08 gcc -> gcc-11
lrwxrwxrwx 1 root root 23 5月 13 2023 gcc-11 -> x86_64-linux-gnu-gcc-11
lrwxrwxrwx 1 root root 23 5月 13 2023 gcc-12 -> x86_64-linux-gnu-gcc-12
lrwxrwxrwx 1 root root 9 8月 5 2021 gcc-ar -> gcc-ar-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-ar-11 -> x86_64-linux-gnu-gcc-ar-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-ar-12 -> x86_64-linux-gnu-gcc-ar-12
lrwxrwxrwx 1 root root 9 8月 5 2021 gcc-nm -> gcc-nm-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-nm-11 -> x86_64-linux-gnu-gcc-nm-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-nm-12 -> x86_64-linux-gnu-gcc-nm-12
lrwxrwxrwx 1 root root 13 1月 14 23:10 gcc-ranlib -> gcc-ranlib-11
lrwxrwxrwx 1 root root 30 5月 13 2023 gcc-ranlib-11 -> x86_64-linux-gnu-gcc-ranlib-11
lrwxrwxrwx 1 root root 30 5月 13 2023 gcc-ranlib-12 -> x86_64-linux-gnu-gcc-ranlib-12
gcc-11に紐づけられていることが分かる
- シンボリックリンクの変更と確認
user@user:~$ cd /usr/bin/
user@user:~$ sudo ln -nfs gcc-12 /usr/bin/gcc
user@user:~$ sudo ln -nfs gcc-ranlib-12 /usr/bin/gcc-ranlib
user@user:/usr/bin$ ls -l gcc*
lrwxrwxrwx 1 root root 6 1月 14 23:08 gcc -> gcc-12
lrwxrwxrwx 1 root root 23 5月 13 2023 gcc-11 -> x86_64-linux-gnu-gcc-11
lrwxrwxrwx 1 root root 23 5月 13 2023 gcc-12 -> x86_64-linux-gnu-gcc-12
lrwxrwxrwx 1 root root 9 8月 5 2021 gcc-ar -> gcc-ar-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-ar-11 -> x86_64-linux-gnu-gcc-ar-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-ar-12 -> x86_64-linux-gnu-gcc-ar-12
lrwxrwxrwx 1 root root 9 8月 5 2021 gcc-nm -> gcc-nm-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-nm-11 -> x86_64-linux-gnu-gcc-nm-11
lrwxrwxrwx 1 root root 26 5月 13 2023 gcc-nm-12 -> x86_64-linux-gnu-gcc-nm-12
lrwxrwxrwx 1 root root 13 1月 14 23:10 gcc-ranlib -> gcc-ranlib-12
lrwxrwxrwx 1 root root 30 5月 13 2023 gcc-ranlib-11 -> x86_64-linux-gnu-gcc-ranlib-11
lrwxrwxrwx 1 root root 30 5月 13 2023 gcc-ranlib-12 -> x86_64-linux-gnu-gcc-ranlib-12
とりあえずgccとgcc-ranlibをgcc-12にリンクしなおした。正しいかは分からないのでご注意を
GPUドライバインストール
sudo service gdm stop
sudo sh ./<ドライバ名> --dkms
インストールできた!