NVIDIA RTX3070のDriverインストール (3/17追記)

ASUS TUF Gaming A17 FA706QRにWin10とデュアルブートで[ubuntuインストール](https://qiita.com/IGURA/items/c15862813d4fdf0ecbf2)後、
「設定」→「このシステムについて」の「グラフィック」が
__lvmpipe (LLVM 11.0.0, 256 bits)__
となっており、RTX3070のドライバがインストールされていなかった。

色々なページを参考にしてインストールを試みたが、MOKの設定がうまく行かなかったり、GUIが動かなかったり、最終的には起動後黒画面全く動かないこととなり、初心者にはどうしようもなくなってしまったのでubuntuを再インストールすることとした。

その後、海外のForumで同様の問題のスレッドがあり、その中で解決策が見つかっていたのでそれを参考にRTX3070のドライバインストールを行った。

https://forums.developer.nvidia.com/t/ubuntu-mate-20-04-with-rtx-3070-on-ryzen-5900-black-screen-after-boot/167681/30
https://liamfrappell.medium.com/fixing-black-screen-and-keyboard-shutdown-issues-on-an-asus-rog-strix-scar-2021-laptop-in-ubuntu-20-9ce964bf34d0

#カーネルを最新安定版（5.11.6-051106-generic）に更新
最初に入れたカーネルは5.8.0-44でこれはRyzen 5700やRTX 3070に対応していない様（5.10xから対応）
そこで最新安定版のカーネルに更新する必要がある。
##カーネル更新ファイルダウンロード
 https://kernel.ubuntu.com/~kernel-ppa/mainline/ 
から

`linux-headers-5.11.6-051106-generic_5.11.6-051106.202103111435_amd64.deb
 linux-headers-5.11.6-051106_5.11.6-051106.202103111435_all.deb
 linux-image-unsigned-5.11.6-051106-generic_5.11.6-051106.202103111435_amd64.deb
 linux-modules-5.11.6-051106-generic_5.11.6-051106.202103111435_amd64.deb`
の4つのファイルをダウンロード

##カーネル更新
```sudo dpkg -i *.deb```
でカーネルを更新。再起動

##再起動しない
最新版のカーネルを起動すると、

```
error: /boot/vmlinuz-5.11.6-051106-generic has invalid signature
error: you need to load the kernel first
```

と表示され、更新したカーネルで起動できなかった。
これはセキュアブートが悪さをしているようで、
BIOS（F2キーで起動）から「Fast boot」、「Secure boot」の2つを無効とした。
※[こちらのページ](https://liamfrappell.medium.com/fixing-black-screen-and-keyboard-shutdown-issues-on-an-asus-rog-strix-scar-2021-laptop-in-ubuntu-20-9ce964bf34d0)ではカーネル更新前に無効化するよう書いてあったのに見逃していた。
無効にすることで、最新カーネルとなっていた。

```
$ uname -r
 5.11.6-051106-generic
```



#AMDファームウェア更新
https://people.freedesktop.org/~agd5f/radeon_ucode/gs/
のすべてのファイルをダウンロード

所有者・権限を同じようにして/lib/firmware/amdgpuに移動


```
sudo cp Download/*.bin /lib/firmware/amdgpu
```

権限をチェック

```
ls -l /lib/firmware/amdgpu
```

#先程インストールしたカーネル中のパッチファイルにURLのファイルを追記（詳しくは不明）
```
sudo wget https://raw.githubusercontent.com/torvalds/linux/master/scripts/module.lds.S -O /usr/src/linux-headers-5.11.6-051106-generic/scripts/module.lds
sudo sed -i '$ d' /usr/src/linux-headers-5.11.6-051106-generic/scripts/module.lds
```

上記パッチファイルを有効化するため

```
sudo update-initramfs -u
```

再起動

→システムについてのグラフィックが「AMD RENOIR」に変わった。（CPU内蔵グラフィックか？）

#RTX3070のドライバインストール
[こちらのページ](https://liamfrappell.medium.com/fixing-black-screen-and-keyboard-shutdown-issues-on-an-asus-rog-strix-scar-2021-laptop-in-ubuntu-20-9ce964bf34d0)によると
「ソフトウェアとアップデート」→「追加のドライバー」からインストールできるそう。
![追加のドライバー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1210147/8f33b172-f650-4d5e-82fb-07033fe82ad6.png)
しかし、表示がなかったので端末からインストールすることとした。

```
sudo apt install nvidia-driver-460
```
によりインストール、再起動

##無事インストール完了

```
$ nvidia-smi
Tue Mar 16 12:23:43 2021       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 460.56       Driver Version: 460.56       CUDA Version: 11.2     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|                               |                      |               MIG M. |
|===============================+======================+======================|
|   0  GeForce RTX 307...  Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   47C    P8    10W /  N/A |    148MiB /  7982MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|    0   N/A  N/A      1144      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A      1776      G   /usr/lib/xorg/Xorg                  4MiB |
|    0   N/A  N/A     12915      C   ...ffice/program/soffice.bin      135MiB |
+-----------------------------------------------------------------------------+
```

Windows10についても問題なく起動することを確認。

#追記（3/17）
ドライバは無事インストールできたのだが、実際には動いていなかった。
![システムについて 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1210147/10ce3f08-120e-d183-5333-0c0809156065.png)
グラフィックの部分が
`NVIDIA Coorporation/AMD® Renoir`
となっており、本来ならばGPUの型番が表示されるはずである。


##nvidia-xconfigはダメ
まず`nvidia-xconfig`を`sudo`実行し、`/etc/X11/xorg.conf`を作成した。
しかし再起動すると黒画面となりカーソルが点滅するだけで全く動かなくなってしまった。
GRUBからrecovery modeで起動し、`/etc/X11/xorg.conf`を削除して再起動すると、元通り動くようになるが
結局GPUは稼働していなかった。

##xorg.cof.d内の2つの.confファイルを編集
色々調べた結果
https://unix.stackexchange.com/a/597882
で解決策が提示されていたのでそれを実行したところ、うまく動くようになった。
上記スレッドの3．から行った。

`/usr/share/X11/xorg.conf.d/`には7つの`.conf`ファイルがあり、そのうち
`10-amdgpu.conf`、`10-nvidia.conf`を下記のように編集する。

`10-amdgpu.conf`

```
Section "OutputClass"
　　Identifier "AMDgpu"
　　MatchDriver "amdgpu"
　　Driver "amdgpu"
　　Option "PrimaryGPU" "no"　#追加した構文_
EndSection
```

`10-nvidia.conf`

```
Section "OutputClass"
　　Identifier "nvidia"
　　MatchDriver "nvidia-drm"
　　Driver "nvidia"
　　Option "AllowEmptyInitialConfiguration"
　　Option "PrimaryGPU" "yes"　#追加した構文
　　ModulePath "/usr/lib/x86_64-linux-gnu/nvidia/xorg"
EndSection
```
書き換えたら再起動

##結果
![システムについて 2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1210147/a21aea10-7687-66c1-fd1f-cc9c8081b409.png)