25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2018-06-20

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関連色々いじれる人はいじっていけばいいと思いました

25
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
25
25

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?