自作PCにUbuntu 18.04 LSTをインストール & セットアップ (NVIDIAドライバ関係)

__🌾本記事の概要__
自作PCに`Ubuntu 18.04.04 LST`をインストールした際の手順を残しておきます。
以下目次ですが，全部まとめると長くなりそうなので今回は**太字**までとします。

**＃ マシン構成について
＃ `Ubuntu 18.04.4 LST`のインストール
＃ `NVIDIAドライバ` & `CUDA`の更新 (ログインループ改善)** ← ここまで
＃ `fcitx-mozc`のインストール & 設定
＃ `XKB`によるキーマップ変更 (for HHKB [US])
＃ 適宜追記

## マシン構成について
今回`Ubuntu 18.04.04 LST`をインストールしたマシンの構成は以下の通りです。

| 構成要素              | 購入パーツ名                                 |
|:---------------------|:---------------------------------------|
| マザーボード           | X570 Taichi (BIOS ver. 2.70; ASRock)   |
| CPU                  | Ryzen 7 3700X (AMD)                    |
| CPUクーラー           | 虎徹 Mark II (サイズ)                    |
| グラフィックボード      | GeForce RTX 2080 Ti VENTUS GP OC (MSI) |
| メモリ                | DDR4-3200 16 GB×2 (Crucial)            |
| SSD (OSインストール先) | MX500 500 GB 2.5インチ (Crucial)        |
| HDD (データ保存用)     | WD Red 3 TB 3.5インチ (Western Degital) |
| 電源                  | RM850x 850 W (80PLUS GOLD; Corsair)    |
| ケース                | Define C (Fractal Design)              | 

## Ubuntu 18.04.4 LSTのインストール
事前情報として，**Zen 2アーキテクチャを採用した第三世代RyzenにはRDRAND関係に不具合があり，Ubuntu等がすんなりとインストールできないらしいぞ**，という話を耳にしていました。

が，ビクビクしながらインストールを試みたところ，特になんの障害もなくインストールに成功しました (BIOSがアップデートされた？ Ubuntuにパッチが当たった？)。

ちなみにOSインストールに使用したUSBメモリスティックは，下記の記事を参考に準備しました。
[**『MacでUbuntu 18.04のインストールUSBメモリスティックの作成』**](https://qiita.com/sei1tani/items/d731d1a7165a42c0df65)

## NVIDIAドライバ & CUDAの更新

「特になんの障害もなくインストールできました」と書きましたが，実はインストール後に再起動してログインする際に問題が発生。

パスワードを入力してログインしようとするも，**画面暗転後にログイン画面に戻されてしまいました (ログインループ)。**

調べてみたところ同様のトラブルに見舞われた方も多く，どうやら**インストールの際に古いver.の`NVIDIAドライバー`が適応されることが原因**のようでした。

そこで解決策として，**GUIを介さず仮想コンソールからログイン**し，**新しいver.の`NVIDIAドライバー`をインストール**しなおしました。
以下，その手順です。

ログイン画面で`Control + Alt + Fn2`を押すことで仮想コンソールに入りログインします。ログインできたら，とりあえず`apt update`と`apt upgrade`しておきます。

```.sh
$ sudo apt update
$ sudo apt upgrade
```

次に，現在インストールされている`NVIDIAドライバー`および`CUDA`をアンインストールします。

```.sh
$ sudo apt --purge remove nvidia-*
$ sudo apt --purge remove cuda-*
```

ここで，現在aptでインストールできるドライバを検索してみます。

```.sh
$ apt list nvidia-driver-*
```

すると僕の環境では次のように表示されました (`...`以降は省略)。

```.sh
nvidia-driver-390/...
nvidia-driver-418/...
nvidia-driver-430/...
nvidia-driver-435/...
```

[NVIDIAドライバダウンロード](https://www.nvidia.co.jp/Download/index.aspx?lang=jp)のページで検索すると，本記事作成時では`ver. 440`が推奨されるのですが，とりあえず`nvidia-driver-435`をインストールして再起動します (後からもう一度インストールしなおします)。

```.sh
$ sudo apt install nvidia-driver-435
$ sudo reboot
```

再起動後，無事にGUIからログインすることができました。

もし日本語版のUbuntuをインストールした場合は，ホームディレクトリの中身 (`Desktop`，`Documents`，etc...) が日本語になっていて不便なので，この時点で下記コマンドから設定を変更します。

```.sh
$ LANG=C xdg-user-dirs-gtk-update
```

次に，NVIDIA推奨ドライバである`ver. 440`と`CUDA`をインストールします。

まず，[CUDA Toolkitのページ](https://developer.nvidia.com/cuda-toolkit)から`Download Now`をクリックし，`CUDA Toolkit` (本記事作成時では`ver. 10.2`) のダウンロードページを開きます。

**Operating System：`Linux`**
**Architecture：`x86_64`**
**Distribution：`Ubuntu`**
**Version：`18.04`**
**Installer Type：`deb (network)`**
のように選択することで，表示されるインストールガイドに従い下記のコマンドを実行します (変更される可能性があるのでコピペ厳禁)。

```.sh
$ wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
$ sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
$ sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/7fa2af80.pub
$ sudo add-apt-repository "deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/ /"
$ sudo apt update
```

これで`CUDAリポジトリ`が追加され，最新ver.の`NVIDIAドライバ`が`apt`経由でインストールできるようになります。

```.sh
$ apt list nvidia-driver-*
```

`nvidia-driver-440`がリストに入っていることを確認したら，さきほど仮でインストールした`nvidia-driver-435`をアンインストールし，`nvidia-driver-440`をインストールしてから再起動します。

```.sh
$ sudo apt --purge remove nvidia-*
$ sudo apt --purge remove cuda-*
$ sudo apt install nvidia-driver-440
```

再起動したら念のため (？) `apt update`と`apt upgrade`しておきました (不要かも)。次に`CUDA`もインストールしておきます。

```.sh
$ sudo apt install cuda
```

`nvidia-smi`コマンドで目的の`NVIDIAドライバ`および`CUDA`がインストールされたことを確認します。

```.sh
$ nvidia-smi
Tue Apr 14 22:34:12 2020       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 440.64.00    Driver Version: 440.64.00    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 208...  On   | 00000000:0C:00.0  On |                  N/A |
| 22%   32C    P8    20W / 260W |    552MiB / 11011MiB |      1%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      1169      G   /usr/lib/xorg/Xorg                            18MiB |
|    0      1200      G   /usr/bin/gnome-shell                          57MiB |
|    0      1485      G   /usr/lib/xorg/Xorg                           163MiB |
|    0      1617      G   /usr/bin/gnome-shell                         171MiB |
|    0      2836      G   ...AAAAAAAAAAAACAAAAAAAAAA= --shared-files   131MiB |
|    0      4479      G   gnome-control-center                           6MiB |
+-----------------------------------------------------------------------------+
```

これにて完了です (`CUDA`関係の`PATH`設定は別途必要)。

次回以降は個別のセットアップ (例えばキーマップ変更など) で詰まったところをメモしていこうと思います。