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を含む行を観測したら
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関連色々いじれる人はいじっていけばいいと思いました