Ubuntu Weekly Recipe

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

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]⁠。

$ 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のインストールスクリプトではなく、より手間の少ない上記パッケージを使う方法をおすすめします。

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

プロプライエタリなドライバーのインストール方法

ここからは実際のインストール手順を解説します。まず最初にNVIDIA製のドライバーをインストールする際の注意点です。

  • セキュアブートは無効化しておく
  • デクストップ環境が立ち上がらなくなった時のリカバリー手段を用意しておく
  • GPGPU目的ならグラフィックの出力先をNVIDIAのGPU以外にしておく

第444回でも紹介したようにセキュアブートは特定の鍵で署名されたブートローダーやカーネルのみを起動する仕組みです。Ubuntuの場合、カーネルモジュールも検証対象になります。つまりセキュアブートが有効化された環境では、Ubuntuのカーネルに同梱されていないカーネルモジュール(サードパーティのモジュール)はロードできません。もしセキュアブートを有効化した状態でサードパーティのモジュールをロードしたい場合は、自前で鍵を用意してmokutilコマンドで登録する方法もあります。ただし手順や鍵の管理が若干煩雑ですので、状況が許せばUEFIの設定ツールでセキュアブートを無効化してしまいましょう。なおセキュアブートを有効にしてUbuntuをインストールしたとしても、無効化したあとにUbuntuの再インストールが必要になることはありません。

ちなみに公式パッケージもしくはPPAのNVIDA製ドライバーをインストールする場合は、DKMSパッケージも一緒にインストールします。DKMSはもともとサードパーティのカーネルモジュールをインストールする際に使用する仕組みです。つまりそのままだとセキュアブート上ではDKMSが動作しませんので、セキュアブートが有効化された環境にインストールしようとした場合、update-secureboot-policyコマンドを実行し、⁠セキュアブートを無効化するかどうか」を問い合わせてきます。

図1 セキュアブートポリシーの変更
画像
図2 セキュアブートを無効化するかどうかの確認
画像

この画面の指示に従えば次回起動時にパスワード入力画面があらわれ、パスワードによる認証に成功すればセキュアブートが無効化される仕組みです。正確には次回起動時に、ブートローダーより前に/boot/efi/EFI/ubuntu/MokManager.efiが呼び出されます。このUEFIアプリケーションが、セキュアブートのオン・オフだけでなく、MOK(Machine Owner Key:第444回で紹介したPKやKEKなどの鍵一式)の設定変更なども行うのです。そのためMokManagerを使うためにはマシンに何らかのディスプレイを接続しておく必要があります。リモートでは変更できませんので注意してください。特にサーバー上でNVIDIA製ドライバーを使いたい場合は、あらかじめセットアップ時にUEFIファームウェアでセキュアブートを無効化しておく方法をおすすめします。もちろんよりセキュアな環境にしたいのであれば、セキュアブートは無効化せずに自前の鍵を作成・登録しその鍵でモジュールを署名する必要があります。

2つ目の注意点である「リカバリー手段」はグラフィックドライバーをうまくインストールできなくなった時の保険です。特にデスクトップ環境用にグラフィックドライバーのインストールに失敗したら、グラフィカルなログインができなくなる状況に陥ります。そこで何らかの方法でグラフィカルログインできなくなった時の対応を考えておきましょう。一番手っ取り早いのは、ログイン画面で「Ctrl-Alt-F1」ないしは「Alt-F1」を押して仮想コンソールに切り替えることです。黒い画面に白い文字でログインプロンプトが表示されるはずですので、そこからアカウント名とパスワードを入力してログインしましょう。あとはこのコンソールからの操作で、パッケージをアンインストールするなどの方法でリカバリーを試みます。グラフィカル環境に戻りたい場合は「Alt-F7」です。

別の手段としてあらかじめSSHサーバー(openssh-serverパッケージ)をインストールしておく方法もあります。ネットワークさえつながっていれば外部からログイン可能になりますし、仮想コンソールと異なり日本語の表示も可能です。ドライバーをインストールするマシンとは別のマシンが存在するのであれば有効な方法です。デスクトップ環境をインストールしないUbuntuサーバー上でGPGPUを使うのであれば、基本的にはこちらの方法を使うことになります。

最後の注意点である「グラフィックの出力先」はGPGPU専用としてNVIDIA製GPUを使う場合の注意点です。グラフィックカードとしてNVIDIA製GPUを外付けする場合、おそらくマザーボード(大抵の場合はCPU)には最初から何らかの内蔵GPUが搭載されていることでしょう。ディスプレイへの出力はその内蔵GPUに任せて、NVIDIA製GPUはGPGPU専用としたほうがGPUの性能を最大限利用できるというわけです。UEFIの設定ツールにてグラフィックの出力先を変更できるはずですので、あらかじめ内蔵GPU優先にしておきましょう。もちろんディスプレイのケーブルの接続先を変更することも忘れないでください。

ここまで注意しておけば、大抵はなんとかなります。

Graphics Drivers TeamのPPAの導入

使用しているGPUが新しすぎて公式リポジトリのパッケージではサポートしておらず、なおかつNVIDIA製のインストールスクリプトを使わない場合は、まずはGraphics Drivers TeamのPPAを導入しましょう。ちなみに公式リポジトリのパッケージで対応しているかどうかは、システム設定の「ソフトウェアとアップデート」「追加のドライバー」タブにNVIDIAのドライバーが表示されるかどうかでも判断できます。

(PPAを使う場合のみ実行する)
$ sudo add-apt-repository ppa:graphics-drivers/ppa
 Fresh drivers from upstream, currently shipping Nvidia.

## Current Status

Current official release: `nvidia-370` (370.28)
Current long-lived branch release: `nvidia-367` (367.57)

(中略)
 詳しい情報: https://launchpad.net/~graphics-drivers/+archive/ubuntu/ppa
[ENTER] を押すと続行します。ctrl-c で追加をキャンセルできます

gpg: 鍵リング「/tmp/tmp012277dn/secring.gpg」ができました
gpg: 鍵リング「/tmp/tmp012277dn/pubring.gpg」ができました
gpg: 鍵1118213Cをhkpからサーバkeyserver.ubuntu.comに要求
gpg: /tmp/tmp012277dn/trustdb.gpg: 信用データベースができました
gpg: 鍵1118213C: 公開鍵"Launchpad PPA for Graphics Drivers Team"をインポートしました
gpg: 処理数の合計: 1
gpg:               インポート: 1  (RSA: 1)
OK
$ sudo apt update

デスクトップ環境からパッケージをインストールする場合

デスクトップ環境が動いている状況で、NVIDIA製のGPUドライバーをデスクトップ用途でインストールしたい場合は、システム設定の「ソフトウェアとアップデート」「追加のドライバー」タブからインストールしたいバージョンを選択する方法が一番簡単です。

図3 追加のドライバーにパッケージリストが表示される
画像

少し待てば、インストール可能なドライバーパッケージのリストが表示されるはずです。インストールしたいドライバーが表示されない場合は、そのデバイスをサポートしているドライバーパッケージが存在しないということです。必要に応じて手動でインストールする方法などを模索してください。各項目の末尾の丸括弧が「オープンソース」ならmain、universeから、⁠プロプライエタリ」ならrestricted、multiverseからインストールすることになります[3]⁠。

インストールしたいドライバーを選択して「変更の適用」ボタンを押すと、インストールを開始します。NVIDIA製ドライバーの場合、カーネルインターフェースのコンパイル処理も走る都合上、インストール完了までそれなりに時間がかかりますので、のんびりと待ちましょう。必要なパッケージのインストールや設定はすべてパッケージが行ってくれます。インストールが完了したら再起動してください。

またデスクトップ関連の設定は、nvidia-settingsを実行して設定ダイアログを表示しましょう。端末からも起動できますし、デスクトップファイルが用意されているのでUnityのDashからも検索して起動できます。ここでダイアログで設定した内容は、~/.nvidia-settings-rcに保存されます。グラフィカルログインのたびに/etc/xdg/autostart/nvidia-settings-autostart.desktopが実行されて、設定ファイルの内容が反映される仕組みです。

図4 nvidia-settingsによる設定ダイアログ
画像

パッケージとしてインストールした場合は、/usr/share/doc/nvidia-375/html/index.htmlにNVIDIAドライバーのドキュメントがインストールされます。設定方法について疑問がある場合は、ウェブブラウザーで内容を確認してみましょう。nvidia-375の部分は、ドライバーのバージョンによって変わります。

デスクトップ環境以外からパッケージをインストールする場合

Ubuntuサーバー上でNVIDIAのドライバーをパッケージとしてインストールする場合は、次のコマンドを実行してください。

$ sudo apt install nvidia-375

最後のnvidia-375の数字は、どのバージョンのドライバーをインストールしたいかどうかによって変わります。ちなみにubuntu-driversコマンドを利用すると、⁠追加のドライバー」と同等の出力をコンソールに表示できます[4]⁠。

$ sudo ubuntu-drivers devices
== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
vendor   : NVIDIA Corporation
modalias : pci:v000010DEd00001C82sv00001458sd00003729bc03sc00i00
driver   : nvidia-375 - third-party free recommended
driver   : xserver-xorg-video-nouveau - distro free builtin

== cpu-microcode.py ==
driver   : intel-microcode - distro non-free

インストールが完了したら、再起動しましょう。パッケージ版のドライバーの場合、/etc/modprobe.d/nvidia-375_hybrid.conf/etc/modprobe.d/nvidia-graphics-drivers.confblacklist nouveauが記載されるため、nouveauドライバーはロードされなくなります。その代わり、⁠nvidia」という名前のついたドライバーがロードされます。

$ lsmod | grep nvidia
nvidia_uvm            749568  0
nvidia_drm             53248  2
nvidia_modeset        790528  3 nvidia_drm
nvidia              11943936  42 nvidia_modeset,nvidia_uvm
drm_kms_helper        155648  2 i915_bpo,nvidia_drm
drm                   364544  6 i915_bpo,drm_kms_helper,nvidia_drm

またnouveauドライバーだと「unknown chipset」になっていたGeForce GTX 1050Tiも以下のように認識されていることがわかります。

$ dmesg | grep -i nvidia
[    0.882221] nvidia: module license 'NVIDIA' taints kernel.
[    0.886132] nvidia: module verification failed: signature and/or required key missing - tainting kernel
[    0.890079] nvidia 0000:01:00.0: enabling device (0000 -> 0003)
[    0.891493] nvidia-nvlink: Nvlink Core is being initialized, major device number 244
[    0.892145] NVRM: loading NVIDIA UNIX x86_64 Kernel Module  375.26  Thu Dec  8 18:36:43 PST 2016 (using threaded interrupts)
[    0.894858] nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  375.26  Thu Dec  8 18:04:14 PST 2016
[    0.897217] [drm] [nvidia-drm] [GPU ID 0x00000100] Loading driver
[    4.209092] nvidia-uvm: Loaded the UVM driver in 8 mode, major device number 241
[    4.868521] input: HDA NVidia HDMI/DP,pcm=3 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input20
[    4.868572] input: HDA NVidia HDMI/DP,pcm=7 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input21
[    4.868622] input: HDA NVidia HDMI/DP,pcm=8 as /devices/pci0000:00/0000:00:01.0/0000:01:00.1/sound/card1/input22
[   16.823727] nvidia-modeset: Allocated GPU:0 (GPU-6fae1717-190c-1843-3fb8-c3d6cd190739) @ PCI:0000:01:00.0

前述したようにパッケージ版のNVIDIA製ドライバーはデスクトップ環境のパッケージ一式に依存しています。このためUbuntuサーバー上でインストールしようとすると、芋づる式に大量のパッケージがインストールされます。

$ sudo apt install nvidia-375
以下のパッケージが新たにインストールされます:
(とてもたくさんのパッケージリスト)
アップグレード: 0 個、新規インストール: 601 個、削除: 0 個、保留: 0 個。
276 MB のアーカイブを取得する必要があります。
この操作後に追加で 1,261 MB のディスク容量が消費されます。
続行しますか? [Y/n]

推奨パッケージをインストールしない--no-install-recommendsオプションである程度は抑制できますが、それでもそれなりの数の「余計な」パッケージをインストールすることになるでしょう。サーバー環境であれば次のNVIDIA製のインストールスクリプトを利用する手順のほうが、本来は不要なパッケージをインストールしなくてすみます。

NVIDIAのインストールスクリプトを利用する場合

インストールスクリプトはNVIDIAのサイトで利用OSなど必要な情報を入力するか、Unix Driver Archiveのページから直接バージョンを指定してください。拡張子が.runのファイルがひとつだけダウンロードされます。このファイルは前半にオプションパーサーやアーカイブ展開コードが入っているシェルスクリプトで、後半がアーカイブバイナリという構成になっています。

ダウンロードしたファイルは、シェルに渡すか実行権限を付けて実行します。まずは--helpを実行してだいたいの使い方を把握しておきましょう[5]⁠。

$ chmod 755 NVIDIA-Linux-x86_64-375.26.run
$ ./NVIDIA-Linux-x86_64-375.26.run --help

./NVIDIA-Linux-x86_64-375.26.run [options]

This program will install the NVIDIA Accelerated Graphics Driver for
Linux-x86_64 375.26 by unpacking the embedded tarball and executing
the ./nvidia-installer  installation utility.

Below are the most common options; for a complete list use
'--advanced-options'.

--info
  Print embedded info (title, default target directory) and exit.

--check
  Check integrity of the archive and exit.

-x, --extract-only
  Extract the contents of ./NVIDIA-Linux-x86_64-375.26.run, but do not
  run 'nvidia-installer'.


The following arguments will be passed on to the ./nvidia-installer
utility:

  -a, --accept-license
      Bypass the display and prompting for acceptance of the
      NVIDIA Software License Agreement.  By passing this option
      to nvidia-installer, you indicate that you have read and
      accept the License Agreement contained in the file
      'LICENSE' (in the top level directory of the driver
      package).

  --update
      Connect to the NVIDIA FTP server '
      ftp://download.nvidia.com ' and determine the latest
      available driver version.  If there is a more recent driver
      available, automatically download and install it.  Any
      other options given on the commandline will be passed on to
      the downloaded driver package when installing it.

  -v, --version
      Print the nvidia-installer version and exit.

  -h, --help
      Print usage information for the common commandline options
      and exit.

  -A, --advanced-options
      Print usage information for the common commandline options
      as well as the advanced options, and then exit.

--advanced-optionsを渡すと、より細かいオプションも確認できます[6]⁠。--infoはインストーラーの情報を、--listはアーカイブに含まれているファイルのリストを表示します。

$ ./NVIDIA-Linux-x86_64-375.26.run --info

  Identification    : NVIDIA Accelerated Graphics Driver for Linux-x86_64 375.26
  Target directory  : NVIDIA-Linux-x86_64-375.26
  Uncompressed size : 332062 KB
  Compression       : xz
  Date of packaging : Thu Dec  8 19:33:01 PST 2016
  Application run after extraction : ./nvidia-installer

  The directory NVIDIA-Linux-x86_64-375.26 will be removed after extraction.

$ ./NVIDIA-Linux-x86_64-375.26.run --list
Target directory: NVIDIA-Linux-x86_64-375.26
drwxr-xr-x buildmeister/gopher 0 2016-12-09 12:33 ./kernel/
drwxr-xr-x buildmeister/gopher 0 2016-12-09 12:33 ./kernel/nvidia/
-rw-r--r-- buildmeister/gopher 16051512 2016-12-09 11:36 ./kernel/nvidia/nv-kernel.o_binary
-rw-r--r-- buildmeister/gopher   119627 2016-12-09 10:17 ./kernel/nvidia/nv.c
-rw-r--r-- buildmeister/gopher    43866 2016-12-09 10:17 ./kernel/nvidia/nv-acpi.c
-rw-r--r-- buildmeister/gopher      803 2016-12-09 10:17 ./kernel/nvidia/nv-chrdev.c
-rw-r--r-- buildmeister/gopher     7042 2016-12-09 10:17 ./kernel/nvidia/nv-cray.c
-rw-r--r-- buildmeister/gopher    14781 2016-12-09 10:17 ./kernel/nvidia/nv-dma.c
-rw-r--r-- buildmeister/gopher     3112 2016-12-09 10:17 ./kernel/nvidia/nv-gvi.c
-rw-r--r-- buildmeister/gopher     8325 2016-12-09 10:17 ./kernel/nvidia/nv-i2c.c
(中略)
-rwxr-xr-x buildmeister/gopher    46812 2016-12-09 12:27 ./32/libGLESv1_CM_nvidia.so.375.26
-rwxr-xr-x buildmeister/gopher   191848 2016-12-09 12:27 ./32/libnvidia-ifr.so.375.26
-rwxr-xr-x buildmeister/gopher    85628 2016-12-09 11:03 ./32/libnvidia-fbc.so.375.26

実際にインストールスクリプトでインストーラーを実行する前に、まずは必要なパッケージをインストールします。インストール方法にもよりますが、主に必要なのは次の3つです。

  • カーネルのヘッダーファイル
  • ビルドツール
  • DKMS

NVIDIA製ドライバーは、ソースコード部分とプロプライエタリなバイナリ部分にわかれています。ソースコード部分がカーネルモジュールのカーネルとのインターフェース部分です。この部分は使用するカーネルごとにコンパイルする必要があるため、ソースコードとして提供されています。このコンパイルにカーネルのヘッダーファイルとビルドツールが必要になります。また、プロプライエタリなバイナリ部分とコンパイルしたバイナリとは、リンカーで連結します。

また、カーネルのバージョンごとにソースコード部分をコンパイルする必要があるため、カーネルのバージョンアップ時に自動的にリコンパイルするようDKMSも導入しておいたほうが便利です。通常のUbuntuであれば、dkmsパッケージさえインストールしておけば、ヘッダーファイルもビルドツールも一緒にインストールできます[7]⁠。

$ sudo apt install dkms

あとはインストーラーを管理者権限で実行しましょう。NcursesベースのUIが起動しますので、原則として「Yes」「OK」を押していきます。ちなみにインストールスクリプトはnouveauドライバーがロードされている環境では、警告を出してエラー終了します。nouveauドライバーを検知したら、nouveauドライバーを無効化する設定ファイルを/etc/modprobe.d/にインストールするよう--disable-nouveauオプションも付けましょう。もちろんあらかじめnouveauを無効化しているのであれば、このオプションは不要です[8]⁠。

$ sudo ./NVIDIA-Linux-x86_64-375.26.run --disable-nouveau
図5 LICENSE表示では「Accept」を選択
画像
図6 nouveauドライバーを無効化して良いかどうか
画像
図7 無効化スクリプトの場所の通知
画像
図8 DKMSを使ってモジュールを再コンパイルできるようにするかどうか
画像
図9 X Window Systemが見つからないことの通知
画像
図10 32ビット互換ライブラリが見つからないことの通知
画像
図11 インストールの実行中
画像
図12 X Window Systemを起動するたびにnvidia-xconfigを実行するかどうか(ここだけ「No」を選択)
画像
図13 インストールの完了
画像

Ubuntuサーバーの場合はX Window Systemが存在しないため、それに関連した警告が表示されます。そもそもデスクトップ環境を使わないのであれば、Xの設定ファイルを変更するnvidia-xconfigの実行も不要です。また32ビットプログラムも不要なので、32ビット互換ライブラリがなくても問題ありません[9]⁠。

/etc/modprobe.d/にnouveauを無効化するスクリプトがインストールされました。カーネル起動時にこのスクリプトが反映されるよう、update-initramfsコマンドを実行した上で[10]⁠、最後に再起動します。

$ sudo update-initramfs -u
$ sudo reboot

再起動後にnouveauドライバーがロードされていないこと、代わりにnvidiaドライバーがロードされていることを確認します。

$ lsmod | grep -i nouveau
(何も表示されない)

$ lsmod | grep -i nvidia
nvidia_drm             53248  0
nvidia_modeset        790528  1 nvidia_drm
nvidia              11943936  1 nvidia_modeset
drm_kms_helper        155648  2 i915_bpo,nvidia_drm
drm                   364544  4 i915_bpo,drm_kms_helper,nvidia_drm

$ modinfo nvidia
filename:       /lib/modules/4.4.0-59-generic/updates/dkms/nvidia.ko
alias:          char-major-195-*
version:        375.26
supported:      external
license:        NVIDIA
srcversion:     7850503DF85713C6E0D88A3
alias:          pci:v000010DEd00000E00sv*sd*bc04sc80i00*
alias:          pci:v000010DEd*sv*sd*bc03sc02i00*
alias:          pci:v000010DEd*sv*sd*bc03sc00i00*
depends:
vermagic:       4.4.0-59-generic SMP mod_unload modversions
parm:           NVreg_Mobile:int
parm:           NVreg_ResmanDebugLevel:int
parm:           NVreg_RmLogonRC:int
parm:           NVreg_ModifyDeviceFiles:int
parm:           NVreg_DeviceFileUID:int
parm:           NVreg_DeviceFileGID:int
parm:           NVreg_DeviceFileMode:int
parm:           NVreg_UpdateMemoryTypes:int
parm:           NVreg_InitializeSystemMemoryAllocations:int
parm:           NVreg_UsePageAttributeTable:int
parm:           NVreg_MapRegistersEarly:int
parm:           NVreg_RegisterForACPIEvents:int
parm:           NVreg_CheckPCIConfigSpace:int
parm:           NVreg_EnablePCIeGen3:int
parm:           NVreg_EnableMSI:int
parm:           NVreg_TCEBypassMode:int
parm:           NVreg_UseThreadedInterrupts:int
parm:           NVreg_MemoryPoolSize:int
parm:           NVreg_RegistryDwords:charp
parm:           NVreg_RmMsg:charp
parm:           NVreg_AssignGpus:charp

またnvidia-debugdumpコマンドやnvidia-smiコマンドを使えば、デバイスの情報が表示されます。

$ nvidia-debugdump  -l
Found 1 NVIDIA devices
        Device ID:              0
        Device name:            GeForce GTX 1050 Ti
        GPU internal ID:        GPU-6fae1717-190c-1843-3fb8-c3d6cd190739

$ nvidia-smi
Sun Jan 15 02:59:51 2017
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.26                 Driver Version: 375.26                    |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 105...  Off  | 0000:01:00.0     Off |                  N/A |
|  0%   40C    P0    35W /  72W |      0MiB /  4038MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID  Type  Process name                               Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

NVIDIA製のインストーラースクリプトの場合、パッケージ版と違って自動的な更新は行われません。必要に応じて--updateオプションを付けてスクリプトを実行してください。もしくは--latestオプションを付ければ、より新しいバージョンがあるかどうか確認できます。

(最新版の有無を確認する場合:確認時も管理者権限が必要)
$ sudo ./NVIDIA-Linux-x86_64-375.26.run --latest

(ダウンロードして更新する場合)
$ sudo ./NVIDIA-Linux-x86_64-375.26.run --update

おすすめ記事

記事・ニュース一覧