Ubuntu Weekly Recipe

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

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

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

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

$ sudo apt install nvidia-375

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

※4
ubuntu-driversコマンドはubuntu-drivers-commonパッケージが提供しています。デスクトップ版だと最初からインストールされていますが,サーバー版では手動でインストールする必要があります。
$ 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)⁠

※5
インストールスクリプトの使い方は,ダウンロードページの「ADDITIONAL INFORMATION」タブにある「README」のリンクからアクセスできる個々のリリースのドキュメントに掲載されていますバージョン375.26の場合)⁠
$ 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はアーカイブに含まれているファイルのリストを表示します。

※6
セキュアブートシステムでドライバーを利用する場合や複数のマシンに同じモジュールをデプロイする場合に便利なオプションなどが存在します。NVIDIA製ドライバーのインストールを自動化したい場合は,一度高度なオプションも確認しておくと良いでしょう。
$ ./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

著者プロフィール

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

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

コメント

コメントの記入