はじめに…

どうも、大学2年生だけどRCC1年生(?)のhirorittsuです。

さて、皆さん、Ubuntuをパソコンにインストールしたことがあるでしょうか?

Ubuntuはプログラミングをする環境としてはかなり良く、ネットや本の文献なども多いので、日頃からプログラミングして何かを作っている人は頻繁に触っているのではないでしょうか?ちなみに私はUbuntuのほうがWindowsよりも触っています。Windowsなんて滅b(ry

という前置きはともかく。今回は、UbuntuにGeforceのGPUドライバーの導入する話についてです。実は、Ubuntuが動いているPCのメーカーやバージョンによっては、GPUドライバーを入れるのが非常に困難な場合があります。特に大変なのが、ゲーミングノートPC。私はサークルの部費で購入したAlienwareに、UbuntuとGPUドライバーをインストールし、実際に使えるようになるまでになんと半年以上もかかりました(実は私以外にも同じAlienwareにGPUドライバーを導入しようと挑戦し、儚く敗れ去った方々も数人…それほどまでに手強かったです)

なのでこのアドベントカレンダーの小さなスペースではありますが、半年以上の苦労を経てようやく手に入れることができた、AlienwareのGPUドライバー導入の手順をここでご紹介させていただきます。

 GPUドライバーの導入が成功した環境

今回は以下のAlienwareにUbuntu16.04、そしてGPUドライバーを導入しました。

ALIENWARE
   CPU : Intel Core-i7 7700HQ
   GPU : GeForve GTX 1060
    OS : Ubuntu 16.04
Kernel : 4.15.0-36-generic
  CUDA : CUDA Toolkit 8.0 GA2 
NVIDIA : NVIDIA binary drive-version 396.44

https://static.bhphoto.com/images/images500x500/dell_aw15r4_7736slv_15_6_alienware_15_r4_1523566617000_1401175.jpg

 ネットワークが繋がらない&グラフィックが重い

まず最初にubuntuを入れると、ネットワークどころかまともに使えないほど描画が遅い現象が発生します。これはすべてドライバのせい。つまり、ハードウェアを調べ、それに該当するドライバを手動でインストールしてやれば治るはずです。そこでまずは、ハードウェアの種類を調べるため、以下のコマンドを端末に打ち込みます。

lscpi

LANのハードウェアは、ここコマンドで出てきた一覧の中の「Ethernet」です。なのでそこに書かれているメーカー名らしきものと型番をググって、ドライバを導入すれば正常に使えるようになります。Alienwareの場合は、以下のサイトの中盤にある”回答4”の項目が有効です(やたらURLが記載されてる回答)。ただし、ダウンロードに必要なファイルは6つほどありますが、残念ながら半分ほどURLのリンクが死んでいます。なので、URLの最後の部分(バージョンを示している部分)を削除し、改めて新しいバージョンを落としましょう。なお、dpkgでパッケージを展開すると途中でエラーが出ますが、気にせず再起動すればなんとかなりました笑。

https://askubuntu.com/questions/881479/install-atheros-e2600-drivers

ちなみに、ありがたいことに、上記のURLをすべて導入すると、ディスプレイの描画速度も治りました!良き良き。

なお、この際にすべてのソフトウェアのアップデート&アップグレードを行っておいてください。ただし、カーネルのアップデートは行わないでください。

 CUDAのインストール

さて。次はGPUに関係のあるドライバを導入していきます。その手始めとしてCUDAをインストールしましょう。

まず、https://developer.nvidia.com/cuda-toolkit-archiveのサイトから「CUDA Toolkit 8.0 GA2」のバージョンのCUDAを選択。OSなどの項目を的確に選択し、runfile(local)版をダウンロード&実行して導入は完了です。

ちなみに、CUDAを入れなくとも正常にGPUドライバーが導入されることがありますが、基本的にはCUDAを入れた後でなければ失敗します。

 GPUドライバ導入前の下準備

次に、GeForceドライバを入れるために必要(であろう)設定をしていきます。

sudo sed -e '$ a blacklist nouveau' /etc/modprobe.d/blacklist.conf &&
sudo sed -e '$ a blacklist lbm-nouveau' /etc/modprobe.d/blacklist.conf &&
sudo sed -e '$ a options nouveau modeset=0' /etc/modprobe.d/blacklist.conf &&
sudo sed -e '$ a alias nouveau off' /etc/modprobe.d/blacklist.conf &&
sudo sed -e '$ a alias lbm-nouveau off' /etc/modprobe.d/blacklist.conf &&
echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

とりあえずこのコマンドを全部実行すれば、後から幸せになれます。笑。nouveauドライバ系設定だとは思うんですが、これだけは未だに良く理解できていません。ごめんなさい。

 GPUドライバ導入

そしてついにGeForceのドライバをインストールします!まず設定から”ソフトウェアとアップデート”→”追加ドライバー”からnvidiaのドライバを導入する。導入完了後は以下のコマンドで再起動する。

sudo reboot

 カーネルのアップグレード

実は、このAlienwareはGPUドライバを入れてもグラボが有効になることはありません(多分)。有効にするには、カーネルのバージョンを上げる必要あります。アップデートの方法は、以下のコマンドを入力すれば簡単にできます。

sudo apt install linux-generic-hwe-16.04
sudo reboot

なお、執筆時のカーネルのバージョンは「4.15.0-36-generic」でした。

これで、GPUドライバーが導入されたと思います!なお、ドライバーが正常に導入されたかどうかは以下のコマンドで確認できます。

nvidia-smi

 ちなみに。

ちなみに、GPUの導入が失敗した場合はどうなるのかというと、「無限ログインループ」という現象が発生します。具体的には、ログイン画面にパスワードを入力し、認証成功して入れた、と思ったら1秒後にはまたログイン画面、という具合です。

これはGPUドライバーのバージョンとハードウェアの相性が合わず、ログイン時にエラーが出てしまうことが原因です。こうなってしまったら、まずログイン画面で「Ctrl + Alt + F2」でCUIモードに入り、以下のコマンドでドライバをアンインストールしましょう。

sudo ./〇〇(NVIDIAドライバのインストールスクリプトの名前).run --uninstall
もしくは
sudo apt purge nvidia*

 終わりに…

さて、これが半年以上もの時間をかけて得た知見です。これからGPUドライバーを入れる、もしくはなかなか導入ができずに困っているという方に是非参考にしてもらいたいと思います。

それでは!よきGPUライフを!!!

Twitterでフォローしよう

おすすめの記事