Ubuntu Weekly Recipe

第454回 Ubuntu 16.04 LTSにNVIDIA製ドライバーをインストールする3つの方法

この記事を読むのに必要な時間:およそ 12 分

NVIDIAのGPUを搭載したグラフィックボードが人気です。2016年はVR・深層学習といった技術が大きく飛躍した年でした。その2016年リリースされたPascalアーキテクチャのグラフィックボードは,VRにも深層学習にも真価を発揮するとあって非常によく売れているようです。実際Pascalのおかげで,今年のNVIDIAの売上高は前年比35%アップなんて調査もあるくらいです。今回はそんなNVIDIAのGPUドライバーをUbuntuにインストールする方法を紹介します。

NVIDIA製GPUのドライバーについて

Ubuntuで一般的に使われているNVIDIA製GPU向けドライバーには,次の2種類が存在します。

  • コミュニティ製のFLOSSなドライバー(nouveau)
  • NVIDIA製のプロプライエタリなドライバー

Ubuntuをインストールした直後であれば,自動的にnouveau(ヌーヴォー)ドライバーを使用していることでしょう。このnouveauドライバーは,利用者にとって便利で高性能な自由ソフトウェアとしてのドライバーを提供することを目的として,コミュニティで開発されているドライバーです。開発した成果はカーネルに取り込まれているので,カーネルのバージョンによってサポートしているデバイスが異なります。たとえば最新のPascalアーキテクチャーを採用したGPUをサポートしているのはKernel 4.8以降です。現在はKernel 4.4を使用しているUbuntu 16.04 LTSの場合,次のようにエラーとなります※1)⁠

※1
Kernel 4.8を採用したUbuntu 16.10であれば認識はします。ただ同じPascalアーキテクチャーでも,モデルによってはサポート状況にばらつきがあります。たとえば一番新しい1050モデルだと,デスクトップ環境を起動するためには,より新しいカーネル(とユーザーランドのライブラリ)が必要になるかもしれません。なお将来的にUbuntu 16.04.2 LTSがリリースされ,そのイメージをインストールした場合はKernel 4.8を使うことになるはずです。NVIDIAとnouveauの関係はXDC2016のスライドが参考になるでしょう。
$ dmesg | grep -i nouveau
[    0.811191] nouveau 0000:01:00.0: enabling device (0000 -> 0003)
[    0.811682] nouveau 0000:01:00.0: unknown chipset (137000a1)
[    0.813001] nouveau: probe of 0000:01:00.0 failed with error -12

nouveauは今のところグラフィックドライバーとしての開発をメインターゲットにしているため,GPGPUとしてはほぼ利用できません。たとえばNVIDAのGPGPUライブラリであるCUDAを使う目的でNVIDIAのGPUを使うのであれば,NVDIIA製のドライバーが必要になります。つまりCUDAをインストールする前に,nouveauドライバーを無効化してNVIDIA製ドライバーをインストールする必要があるのです。

さてそのNVIDIA製ドライバーですが,Ubuntuの場合はさらに3種類のインストール方法が存在します。

  • Ubuntuの公式リポジトリからパッケージとしてインストールする方法
  • Graphics Drivers TeamのPPAからパッケージとしてインストールする方法
  • NVIDIAのサイトからダウンロードしてインストールする方法

まず最初にUbuntuでは公式リポジトリに複数のバージョンのNVIDIA製ドライバーをパッケージとして提供しています。

$ apt search "^nvidia-[0-9]{3}$"
ソート中... 完了
全文検索... 完了
nvidia-304/xenial-updates,xenial-security 304.132-0ubuntu0.16.04.2 amd64
  NVIDIA legacy binary driver - version 304.132

nvidia-331/xenial-updates,xenial-security 340.98-0ubuntu0.16.04.1 amd64
  Transitional package for nvidia-331

nvidia-340/xenial-updates,xenial-security 340.98-0ubuntu0.16.04.1 amd64
  NVIDIA binary driver - version 340.98

nvidia-346/xenial 352.63-0ubuntu3 amd64
  Transitional package for nvidia-346

nvidia-352/xenial 361.42-0ubuntu2 amd64
  Transitional package for nvidia-361

nvidia-361/xenial-updates,xenial-security 367.57-0ubuntu0.16.04.1 amd64
  Transitional package for nvidia-367

nvidia-367/xenial-updates,xenial-security 367.57-0ubuntu0.16.04.1 amd64
  NVIDIA binary driver - version 367.57

ここで「Transitional package」となっているものは,新しいバージョンへの移行を目的としたパッケージなので気にしなくてかまいません。実質,nvidia-304,nvidia-340,nvidia-367の3つのパッケージが提供されていることになります。

最新のグラフィックチップでなければ,基本的に公式リポジトリのパッケージで問題はないはずです。特にデスクトップの場合はシステム設定の「ソフトウェアとアップデート」「追加のドライバー」タブから,上記のパッケージをインストールできます。特定のバージョンでうまく動かない場合は,別のバージョンを使ってみてください。また公式Wikiにはいくつかのトラブルシューティングが掲載されていますので,そちらも参考になるでしょう。

Graphics Drivers TeamのPPAにはより新しいバージョンのドライバーパッケージが用意されています。これらは主に公式リポジトリに取り込むためのテスト目的のパッケージであるため,インストールすると何らかのトラブルが発生する可能性もあります。ただしより新しいGPUを搭載したグラフィックボードの場合は,公式リポジトリのパッケージではサポートしていない場合も多々あります。たとえばGeForce GTX 1050 Tiの場合は,バージョン375.20以降でサポートしているため,2017年1月時点での公式リポジトリのパッケージ(nvidia-367)では動作しません。よって必要に応じてこちらのPPAを利用してください。ちなみにテスト結果やパフォーマンステストの内容などは,Graphics Drivers Testersのメーリングリストに投稿されます。このPPAを使う前はメーリングリストの内容を確認しておくと良いでしょう。もちろん個人でパッケージをテストして報告すれば,より新しいドライバーがより早く公式リポジトリに取り込まれることになります。

いずれのパッケージもNVIDIAのサイトで公開されているドライバーが元になっています。つまりNVIDIAのサイトからドライバーをダウンロードする方法であれば,常に最新のドライバーを使用できるということです※2)⁠ただしNVIDIAで配布されているドライバーのインストールスクリプトは,Ubuntuだけでなく他のLinuxディストリビューションにも対応した作りになっています。さらにデスクトップ環境(X Window Systemが動いている環境)においてNVIDIA製のインストーラーを使うと,まずX Window Systemを止めておくようにと言われます。Ubuntu上にグラフィックスドライバーとしてNVIDIA製のドライバーをインストールしたい場合は,NVIDIAのインストールスクリプトではなく,より手間の少ない上記パッケージを使う方法をおすすめします。

※2
古いバージョンや各種アーキテクチャ向けのドライバーはUnix Driver Archiveのページからダウンロードできます。

もしGPGPUとして使うことのみが目的でありGUIが必要ない場合であれば,NVIDIAのインストールスクリプトを使うという選択肢も意味が出てくるでしょう。なぜならUbuntuパッケージのほうは,Xサーバーやディスプレイマネージャーのパッケージなどデスクトップ環境一式にも依存しているからです。このためUbuntuパッケージ版を使用すると,デスクトップ環境関連のパッケージもセットでインストールされます。⁠気にしない」のもひとつの手ではありますが,Ubuntuサーバー上でGPGPUを使いたいのであればNVIDIAのインストーラースクリプトを使うことでインストールするパッケージを必要最低限な量にとどめることができます。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。

コメント

コメントの記入