経緯
自作PCでi9-9900k、RTX2080を持っているのにゲームだけではもったいない!!
せや、機械学習用にもできたらいいな!!
と、思いゲーム用に組んだPCにUbuntu及びNvidiaドライバ、CUDAをインストールしようとしたところ
- Ubuntuインストール後、Nvidiaドライバが入っていない状態でUbuntuデフォルトのディスプレイドライバが認識しなく画質が落ちていた。
- 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をインストールしてください。)
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ライフを。。。