Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Teslaのnvidiaドライバーの正しいインストール方法

2020/04 おそらくこの記事の内容はもう古いです. GPUサーバーに今はもう触れてないので記事の更新および検証が出来ない状態です.

背景

NVIDIAのドライバー関連の完備かつ簡便なインストール方法は現状存在しない.これが重要

とあるGPUサーバーに環境構築を頼まれてやっていたところ、業者がドライバーをインストールしているのにDKMSを入れていなかった+寝ぼけてsudo apt-get updateした結果、いじる必要のないはずだったNVIDIAドライバーが使用不能になり、GUIが壊れ、事態は迷宮入りしたのだった…

業者許さん

TL;DR

  • aptを信用してはいけない
  • 面倒でもrunファイルを使うべき
  • DKMSは入れよう
  • GeForceでないものでaptは特に危ない模様

失敗する(ログインループに陥る)方法

sudo apt-get update
sudo ubuntu-drivers autoinstall
sudo reboot

なーんだ、Canonicalやるやん…そう思った俺がアホやった

これでうまく行く人も一定数居るようだがクリーンインストール直後で駄目なら下の方法を試したほうが多分うまく行く

正しい方法

nouveauを止める

lsmod | grep -i nouveau

↑のコードでnouveauを含む行を観測したら

/etc/modprobe.d/blacklist-nouveau.conf
blacklist nouveau
options nouveau modeset=0

を新規作成する

sudo update-initramfs -u
sudo reboot

これでもう一度lsmod(以下略)して1行も出なければOK

必要なものを先に入れる

sudo apt-get install build-essential
sudo apt-get install dkms

CUDAとドライバーのインストール

ドライバーとCUDAはCUDAから先に入れる
バージョンの不整合に注意して共々runファイルを
https://developer.nvidia.com/cuda-downloads
http://www.nvidia.com/Download/index.aspx?lang=jp
まず上でCUDAのバージョン適当に選んで、次に下で対応するバージョンのドライバーをダウンロードする

後はrun叩くだけ chmod忘れないこと
ここからが今回の本題

./cuda_version_requiringdriverversion_linux-run --silent --toolkit --no-opengl-libs
./NVIDIA-Linux-arch-driverversion.run --silent --no-opengl-files --no-libglx-indirect --dkms

ここで--no-なんたらのオプションが足りないと皆様おなじみログインループに入る。
cudaのサンプルが欲しい人は --samples --samplespath=/hoge/fuga/
をcudaのrunのオプションにつけるとよしなにやってくれる

ここでcudaのログにライブラリが足りないと言われたら(例としてlibhogeとしておく)素直に

sudo apt-get install libhoge(-dev)

すればいいのだが、cudaのrunファイルはどういうことか/usr/lib/直下しか見てくれない そこでインストールされたlibhoge(-dev)の実体を探して(大体/usr/lib/x86_64-linux-gnuらへんに居る)、

sudo ln -s /usr/lib/x86_64-linux-gnu/libhoge.so /usr/lib/libhoge.so

としてやる必要がある。全く面倒である。

最後に、rebootする前に下を適当にbashrcの末尾なりprofile.dに新規sh設置するなりして終了

export CUDA_HOME="/usr/local/cuda-<version>" 
export PATH="$CUDA_HOME/bin:$PATH" 
export LD_LIBRARY_PATH="/usr/local/lib:$CUDA_HOME/lib64:$LD_LIBRARY_PATH" 
export CPATH="/usr/local/include:$CUDA_HOME/include:$CPATH" 
export INCLUDE_PATH="$CUDA_HOME/include" 

CUDNN関連はただコピーするだけだし省略

参考

https://help.sakura.ad.jp/hc/ja/articles/115000122721-CUDA-Toolkit-GPU%E3%82%AB%E3%83%BC%E3%83%89%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E5%B0%8E%E5%85%A5%E6%89%8B%E9%A0%86
さくら様様 大体の方針はこれでうまく行った だがnouveauについてや、libが足りないエラーについては特に書かれていなかったのでちょっと躓いた
Ubuntu周り、Qiitaも含め思い思いの解決策が載っていたがどれも当たらなかったのでこのサイトにたどり着くまで無限に時間消費したのが辛い

https://qiita.com/sasayabaku/items/2323a2c501e58c0621b6
blacklist nouveau関連はこれがミニマムになりそう
他にもinitramfs関連色々いじれる人はいじっていけばいいと思いました

npkk
実質無職の人
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away