Edited at

Ubuntu18.04.2 LTSに NVIDIA GeForce GTX 1050 Tiのドライバをインストールする

すんなりいかなかったので記事として残すことにしました。


nouveauの無効化

デフォルトでインストールされているNVIDIAのオープンソースなドライバ。

今回はプロプライエタリなNVIDIAのドライバとそれをインストールして使えるようになるツールでさっとデュアルディスプレイにしたかったので無効化します。


nouveauの存在を確認

$ sudo su -

$ lsmod | grep -l nouveau


/etc/modprobe.d/に.confファイルを作成しnouveauを無効にする設定を書く


blacklist_nouveau.conf

blacklist nouveau

options nouveau modeset=0

blacklistに登録したのでブートイメージファイルに設定を反映させます。

$ update-initramfs -u

initramfsについてはAbout initramfs

Qiitaにある日本語で書かれた記事だとinitramfsについて - Qiitaがわかりやすかったです。


GPUのモデルと推奨されているドライバのバージョンを確認

自動でインストールしてくれるsudo ubuntu-drivers autoinstallが失敗したので、推奨されているドライバーのバージョンを確認してインストールしていきます。

$ ubuntu-drivers devices

== /sys/devices/pci0000:00/0000:00:01.0/0000:01:00.0 ==
modalias : pci:v000010DEd00001C82sv00001043sd0000862Abc03sc00i00
vendor : NVIDIA Corporation
model : GP107 [GeForce GTX 1050 Ti]
driver : nvidia-driver-390 - distro non-free
driver : nvidia-driver-418 - third-party free recommended
driver : nvidia-driver-415 - third-party free
driver : nvidia-driver-396 - third-party free
driver : nvidia-driver-410 - third-party free
driver : xserver-xorg-video-nouveau - distro free builtin

今回は


driver : nvidia-driver-418 - third-party free recommended


nvidia-driver-418をインストールすることにしました。


PPAリポジトリからドライバーのインストール

公式のリポジトリではなくPPA(Personal Package Archive)からインストールします。

PPAという言葉の通り個人やコミュニティにより提供されるソースパッケージを扱うリポジトリなので動作保証や安全性の保証はなく自己責任です。

※参考

How to install the NVIDIA drivers on Ubuntu 18.04 Bionic Beaver Linux - LinuxConfig.org

Nvidiaドライバ(Version 410)の更新 Ubuntu18.04 - Kinaconの技術ブログ

 $ sudo add-apt-repository ppa:graphics-drivers/ppa

$ sudo apt update
$ sudo apt install nvidia-driver-418

E: 問題を解決することができません。壊れた変更禁止パッケージがあります。というエラーメッセージが返ってきました。


aptitudeで壊れた変更禁止パッケージに対処する

aptitudeを使ってインストールしようとすると壊れたパッケージを修正するための改善案を提案してくれます。

ユースケースに応じてこの変更禁止の問題を無視しても問題ないか確認するようにしてください。

私はバックアップした後に、UbuntuをインストールしたPCにSteam game platformを導入するつもりがなかったこと、デュアルディスプレイ以外にグラフィックボードの使用用途がなかったことを理由に、ば変更禁止の問題を無視してaptitudeの提案を受け入れてインストールをすすめることにしました。

sudo apt install aptitude

sudo aptitude install nvidia-driver-418

インストール時にUEFIセキュアブートを有効にしているとインストール後にこのようなメッセージを返します。

Screenshot from 2019-04-13 01-43-38.png

指示に従って、パスワードの入力、sudo reboot、OSの起動前の選択肢のなかからEnroll MOKを選択、先のパスワードを入力、の順に行ってドライバーのインストールを完了します。

1度目、これを読まずにEnroll MOKを選ばず通常のbootをcontinueという選択肢を選んでnvidia-smiと入力すると以下のようなエラーメッセージが返ってきてやり直しになりました。

$ nvidia-smi

NVIDIA-SMI has failed because it couldn't communicate with the NVIDIA driver.
Make sure that the latest NVIDIA driver is installed and running


UEFIセキュアブートを無効にする

セキュアブートは起動時にOSやドライバの署名をチェックしてくれる機能です。コンピュータのBIOS/UEFIのレベルでセキュアブートを有効にすると署名なしのドライバーをカーネルがロードしてくれません。

最後に、私はUbuntuとWindowsのデュアルブート構成ではないので無効にしました。セキュアブートに対応しているWindowsとのデュアルブート構成になっている場合は、ファームウェアごとに対処法が違うとのことなので適宜対応してください。

※参考

ubuntu16でNVIDIAのドライバインストールでハマった時 - Qiita

私の環境でのセキュアブートの無効化の方法

OS起動後BIOS画面に移動して、Advanced Mode > Secure Boot -> OS Type

Windows UEFI modeからOther OSに変更


nvidia-smiで確認

Sat Apr 13 14:52:00 2019       

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.56 Driver Version: 418.56 CUDA Version: 10.1 |
|-------------------------------+----------------------+----------------------+
| 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 | 00000000:01:00.0 On | N/A |
| 30% 26C P8 N/A / 75W | 280MiB / 4036MiB | 16% Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes: GPU Memory |
| GPU PID Type Process name Usage |
|=============================================================================|
| 0 1000 G /usr/lib/xorg/Xorg 145MiB |
| 0 1262 G /usr/bin/gnome-shell 87MiB |
| 0 1869 G ...quest-channel-token=2493526721621155102 45MiB |
+-----------------------------------------------------------------------------+


最後に

適切でない表現やより良い解決の方法があるかと思います。その際はコメントでご指摘いただけるとありがたいです。