Ubuntu20.04にNVIDIA GPUドライバを導入する際の罠
GPU導入の際に問題が発生
先日研究室にてUbuntu Server にNVIDIA RTX A4000を導入しました。
この際対処したエラー達が面白かったため、備忘録として情報を残しておきます。
対処した問題
Ubuntu20.04に以下の手順でnvidia-smiを導入しようとした
インストール可能なドライバをubuntu-driversで検索
ubuntu-drivers devices
その結果recommendされているドライバをインストールして、OSを再起動
sudo apt install nvidia-driver-530-open
sudo reboot
すると、作りかけのようなGUIログイン画面が出現。そのままログインするとフリーズしてしまった。
Ctrl + Alt + F2で仮想端末にログイン。nvidia-smiコマンドを使用すると
NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver. Make sure th
と表示される
対処方法
Ubuntu Server 20.04デフォルトのカーネルに不具合がある
上記記事を参考にしました。
Linuxカーネルのバージョンによってはnvidiaドライバをうまく読み込めないことがあります。今回の場合、Ubuntu Server 20.04のデフォルトカーネルがそのハズレに当たるようです。おとなしくカーネルのアップデートを行いましょう。
この記事で実際に動いたとされている5.10.0-1044-oem kernelにアップデートします。
- 既存のドライバを消去
sudo apt purge nvidia-*
sudo apt autoremove
sudo apt autoclean
- 5.10.0-1044-oem kernelのインストール
sudo apt install linux-image-5.10.0-1044-oem linux-headers-5.10.0-1044-oem
- NVIDIA nouveau driverをブラックリストに登録する(この記事を参考https://linuxconfig.org/how-to-disable-blacklist-nouveau-nvidia-driver-on-ubuntu-20-04-focal-fossa-linux)
sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
- GUI機能をオフにする
余計なGUI表示をオフにします。
sudo systemctl set-default multi-user
-
再起動。この際、GRUBにて Linux 5.10.0.1044-oem kernelでUbuntuが起動するかどうかを確認
-
既存のkernel imageをアンインストール
sudo apt purge linux-image-5.04* linux-headers-5.04*
sudo apt autoremove
sudo apt autoclean
- GRUBのアップデート
sudo update-grub
- NVIDIAドライバのインストール
recommendedのドライバをインストールする
(これは間違い)
sudo apt install nvidia-driver-530-open
- 再起動
さて、これで無事、nvidia-smiも動くでしょ...。
$ nvidia-smi
No devices were found
...?????
recommendedのドライバをインストールするとエラーになる
以上記事を参考にしました。
素直にrecommendedのドライバを使おうとするとエラーになります。
この対処として"-open"を取り除いたドライバをインストールします。
インストールしたら、一応既存のドライバを消去します。
sudo apt purge nvidia-*
sudo apt autoremove
sudo apt autoclean
sudo apt install -y nvidia-driver-530
sudo reboot
再起動後無事にnvidia-smiが使える状態になりました。
カーネルの不具合、recommendedの罠と非常に勉強になる事例でした。
Discussion