Ubuntu Weekly Recipe

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

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

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

ここからは実際のインストール手順を解説します。まず最初に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⁠。

※3
図のドライバーパッケージであるnvidia-375はPPAからインストールしようとしています。nvidia-375は本来はプロプライエタリなのですが,PPAの仕組みの都合上「オープンソース」と表示されてしまっています。

インストールしたいドライバーを選択して「変更の適用」ボタンを押すと,インストールを開始します。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 Japanese Team Member株式会社 創夢所属。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。