UbuntuにRTX2080用のNvidiaドライバのインストールに手こずった


経緯

自作PCでi9-9900k、RTX2080を持っているのにゲームだけではもったいない!!
せや、機械学習用にもできたらいいな!!

と、思いゲーム用に組んだPCにUbuntu及びNvidiaドライバ、CUDAをインストールしようとしたところ
1. Ubuntuインストール後、Nvidiaドライバが入っていない状態でUbuntuデフォルトのディスプレイドライバが認識しなく画質が落ちていた。
2. Nvidia公式サイトから.runファイルをDLしてインストールを試みるが

installing dkms kernel module~~

というところでバーが5%のところで永遠に止まる。
3. Ubuntu18.4の他に16, 19も試すがどちらもだめ。

といった状態でした。

PC構成

  • CPU: Intel Core i9-9900k
  • M/B: ROG MAXIMUS XI HERO (WI-FI)
  • RAM: CORSAIR DDR4 CMK32GX4M2A2666C16
  • ROM
    • WD Red 3TB * 2 (ゲームデータ保存用とその他保存用)
    • Crucial SSD 500GB MX500 CT500MX500SSD1/JP(WindowsOS)
    • Crucial SSD 250GB MX500 CT250MX500SSD1/JP(Ubuntu)
  • GPU: ASUS NVIDIA GeForce RTX 2080 搭載 トリプルファンモデル 8GB ROG-STRIX-RTX2080-O8G-GAMING
  • OS: Windows 10 Enterprise(homeを学校からもらったライセンスでアップデート)

解決策

原因を単刀直入に言うと、

BIOSのセキュアブートが有効になっていた。

でした。
そのため、セキュアブートの無効化からNvidiaドライバのインストールまで解説しようかと思います。

インストール手順

Step.1

Ubuntuをインストール→USBに書き込み
version: ubuntu18.04LTS
Englishでインストールしておく(ISO作成時にトラブルの元になるので)

Step.2

BIOSのセキュアブートを無効化。

カーネルのほうで、署名なしドライバを読み込めるように設定を変える。 → (*)こちら (UEFIからローダ画面に移る際にモードを選択する画面が出るようになる)
https://qiita.com/chiral/items/3105c52fc9fdb528dbd7

こちらの設定ではうまくインストールできなかったためちゃんと無効化しましょう。

ASUSのBIOSではセキュアブートの無効化が特殊です。

Advanced Mode
起動→セキュアブートメニュー→OSタイプを非UEFIモードに設定
&
セキュアブートキーの削除(もとに戻せるので安心して削除)

詳しく

Step.3

必要なものをインストール

sudo apt update
sudo apt upgrade
sudo apt install -y vim gcc make

必要に応じてSSH設定もインストール

sudo apt-get install ssh
systemctl start sshd

参考

Step.4

CUDAのインストール。
一緒にNvidiaドライバも入ってくることがあるため。
(実際入ってこなかった)

CUDA Toolkit 10.1 Download

(必要に応じて違うバージョンのCUDAをインストールしてください。)

Step.5

Nvidiaドライバの入手。
nvidia公式

NVIDIA-Linux-x86_64-vvv.xx.runをダウンロードし、わかり易い場所に保存。
sshで接続している場合は

scp [NVIDIA-Linux-x86_64-vvv.xx.runのpass] [PC-name]@[local-ip]:[保存先のpass]

Step.6

nouveau無効化。

まず、デフォルトで入っていないかもしれないため

lsmod | grep -i nouveau 

を試し、何も表示されなかったらスルーしてOK

以下、無効化

sudo bash -c "echo blacklist nouveau > /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo bash -c "echo options nouveau modeset=0 >> /etc/modprobe.d/blacklist-nvidia-nouveau.conf"
sudo update-initramfs -u
sudo reboot

Step.7

GUIモードからCUIモードに。
(このとき、ユーザー名とPW、Nvidiaドライバの保存先を覚えておく)

sudo telinit 3

ユーザー名→PW
を入力して、

# Nvidiaドライバのあるディレクトリに移動(例はデスクトップに保存した場合)
cd ~/Desktop

Step.8

Nvidiaドライバのインストール。

sudo bash NVIDIA-Linux-x86_64-vvv.xx.run

あとは命令に沿ってインストール。

# 再起動
sudo reboot

最後(正常にインストールできたかの確認)

  • Nvidiaドライバがインストールされたかの確認
nvidia-smi

↓このような画面が表示されればインストール完了。

Sat Feb  1 11:49:41 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.44       Driver Version: 440.44       CUDA Version: 10.2     |
|-------------------------------+----------------------+----------------------+
| 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 RTX 2080    Off  | 00000000:01:00.0 Off |                  N/A |
| 25%   29C    P8    11W / 245W |    204MiB /  7982MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1414      G   /usr/lib/xorg/Xorg                           124MiB |
|    0      1602      G   /usr/bin/gnome-shell                          77MiB |
+-----------------------------------------------------------------------------+
  • CUDAがインストールされたかの確認

BashにCUDAのパスを通した後、

# pathが表示されればOK
which nvcc

# バージョンが表示されればOK
nvcc -V

さいごに

このせいで半年程格闘してました。おのれ、、、セキュアブート、、、、
ちなみにセキュアブート無効化してもWindowsは起動できました。

良い、AIライフを。。。