Ryzen2600とrtx2060のPCにubuntu19.04を入れデュアルブートにする

#経緯
ゲームとプログラミングの勉強用に先日自作pcに初挑戦しデュアルブート環境を作成したのだが、予算の関係でいくつか妥協していたところもあり、改めてパーツを買い足した

理想の要求としては

- スペックはミドルクラスで十分、
- なるべく小さくしたいのでmini-itx(今までノートPCだったのでこれでもまだ大きく感じる）
- Intelは脆弱性の話があったので避けたかったのでRyzen
- グラボはレイトレに興味があったのでRTX20Xx
- WindowsとUbuntuを分けて入れるのに2つのnvmeストレージ
- 共有フォルダはどちらのosでも読み書きできてジャーナリングも聞くようnasを利用する、そのためHDDは内蔵せず、詳細は別に記事にする予定。

ところが調べていくと

- Rtx2000シリーズはubuntu18.04だとデフォルトで対応していないためドライバーをインストールするのにはgpu内蔵のCPUがおそらく必須
- 一方でmini-itxのマザーボードでnvmeを2つ付けられるとなると選択肢が少なく、今回用意したAsusのx470-i gamingの場合Gpu内蔵のRyzenだとnvmeの二つ目のスロットが使えない(gpu内蔵していない2600などは使える）

という、いわゆるデッドロック状態であることが発覚

さてどうするか、要求のどこかで妥協するかまだ見ぬryzen3000とx570のマザーに望みをかけて待つかと悩んでいたところ、ちょうどリリースされたubuntu19.04がrtx2000シリーズに対応しているとのことで、改めて挑戦することにした


#目的
- Rtx2060のグラボとgpuを内蔵しないzen+CPUのpcにubuntu19.04を入れられるか試す( Ubuntu18.04では画面が映らず困難だった)
- 2つのnvmeストレージにWindows10とUbuntu19.04をそれぞれ分離した形でデュアルブート環境にする


#手順
##前提
これまではコストの関係でグラボは買わずCpuにgpu内蔵のryzen2400g、ストレージはnvme1つにosを同居させる形で構成していた。そのためゼロからubuntuを入れるのとは手順が異なっていたりする
あと、EFIパーティションとブートローダの関係がいまいちはっきり理解できていないので、そこらへん突っ込みどころが多いかもしれない

##ubuntu19.04のブートUSBの作成
###インストーラーのダウンロード
以下の公式サイトからubuntu19.04 desktop をダウンロード
https://www.ubuntu.com/

###USBメモリにインストーラーを焼く
今回の場合すでにインストールしていたubuntuにある“ブータブルUSBの作成“というアプリケーションを使った。
ダウンロードしたイメージファイルとUsbメモリを選択するだけで簡単だった。
##Windows単一の構成に戻す
自分の場合すでにデュアルブートにしていたので一度windowsのみに戻しておく
正直そこまで必要ではなかったかもしれない
###(windowsのブートローダの復元)
Ubuntuを後から入れるパターンの場合、Windowsのブートローダをいじっているかたちになっているらしいので、修復をしておく必要があるらしい
Ubuntuがうまくインストールできなかった際にWindowsすら起動しないという事態を避けるため一応やったものの、今回のように最終的にまたデュアルブート構成にするのであればそこまでやる必要がなかったかもしれない、 
自分の場合買ったwindows10がusb付きのだったので、それで起動して念のため自動修復してで

###Windowsのみで起動できることを確認
UefiでWindowsのブートローダを最優先にして再起動
問題なくWindowsが開いた

###(Linuxの削除)
実際の工程ではもっと後で削除したのだが、この時点で削除しておいた方がブートローダが余計なもの認識しないで済むのでベターだった気がする
というのも、自分の場合ちゃんとインストールが確認できるまでとっておいた結果結果削除してもUEFIの起動ディスクに表示されていたり、どうも痕跡が残ってしまっている。

##ハードウェア構成の変更
この段階でcpuなど一部入れ替えた
最終的な構成は以下

|  |  |
|:-:|:-:|
| cpu | Ryzen2600 |
|M/B|ASUS X470-i gaming rog strix|
|メモリ|Corsair CMK32GX4M2A2666C16|
|SSD-1|Sandisk SDSSDXPM2-500G-J25|
|SSD‐2|Intel 760P SSDPEKKW256G8XT|
| Gpu | zotac RTX2060 |
| 電源|オウルテック Dagger 600|
|ケース|Raijintek metis plus|

以降すでにwindows10が入っているSSDをSSD-1、今回新名に追加したSSDをSSD-2と表記する

この後一度Windowsの起動の確認した。
## Ubuntuのインストール（一度目）

###Ubuntuのインストーラーの起動を確認
ブータブルUSBを指してUEFIを開き起動をUSB最優先にして再起動

あっさりgrubが開いて一安心
ubuntu18.04と比べて高解像度に対応したのか文字が小さくなってた

###インストール（一度め、やり直したので省略）

###やり直した理由
この時はブートローダが一つめのSSDに入ってしまった。
今回は目的の一つにWindowsのSSDから可能な限り分離したいというのがあったので、 Ubuntuのブートローダもefiパーティションも2つめにいれたかった

efiパーティションを手動で作ればそっちを使ってくれるたのかもしれないが、確証がないのとまだefiパーティションについてよくわかっていない状態で自分でいじるのも不安だったため、SSD-1を外してインストールするという方針に変更した

###やり直しに伴って
とりあえずインストールできることは確認できたのでSSD-1に入っていたUbuntu18.04を削除した
また、この時点ではじめにやったWindowsの修復したのが元どおりになってしまっているっぽかったが、これも同じ理由で再度の修正はしなかった



## Ubuntuのインストール（2度目）
確実に分離した状態でSSD-2にインストールするため、一度SSD-1を外した状態でインストールする

###windowsの入ったSSDを一旦外す


###ubuntuのインストール 
改めてブータブルUSBをさしてUEFIを開き起動をUSB最優先にして再起動

インストール時の選択項目については以下のような感じ

- アップデートとソフトウェア
 - 通常のインストール
 - オプションは両方チェック
- インストールの種類
 - ディスクを削除してインストール
（この時点で Ubuntu用のSSD-2しか刺さっていないのでこの設定にしたが、そうでなければデータが消えてしまうと思われるので要注意）

インストールが終わったら再起動
###Ubuntuの起動
まず Ubuntuを開く

###grubの設定
 Ubuntuで端末を開いて以下のコマンドでwindows10を認識してもらう

```
update-grub
```

なぜか1回目だとWindowsが検出できていなかったがもう一度やったらできた。

あと最初のインストールした時にディスク1のefiがやり直した際にUbuntuが上書きしてそのままになっているらしく、削除したはずの古い方のubuntuも検出していた。不都合はなさそうなのでもう気にしないことにした

これで次からは Ubuntu起動の際にwindowsも選べるようになったはずなのでまた再起動して確認
###動作確認
再起動してuefiでssd-2のブートローダが優先になっていることを確認

再起動して今度はuefiに入らずそのまま進むと無事grubが起動

###grubでwindows10と Ubuntu19.04を開けることを確認

最初windows10開いて再起動した際にuefiの優先順位がwindows優先に書き換えられてた.

再度Ubuntu優先に設定し直して以降はWindows開いた後もubuntuのgrubが起動しているのでとりあえずは問題なさそう、様子見


#参考文献
[Windows10とUbuntu18.04をデュアルブートする。](https://qiita.com/yo_kanyukari/items/2a944a300db22482c696)
[Windows10とUbuntu18.04を別ディスクで簡単デュアルブート](https://qiita.com/udai1532/items/4893af6ea4da3e20b302)
[Ubuntu 18.04 インストール（UEFI） その1 - UEFIのPCにUbuntu 18.04をインストールする（ライブメディアから起動 〜 インストールの種類の選択）](https://kledgeb.blogspot.com/2018/04/ubuntu-1804-uefi-1-uefipcubuntu-1804.html)