ライブUSBでUbuntu18.04.5LTSのインストール時にgrubエラーで失敗する．

# はじめに
やっと動いたのでまた遭遇した時のために残しておきます．
参考サイト様のまとめなので，そちらも読んでいただけると幸いです．

## 環境
入れたいOS : Ubuntu18.04.5LTS
ライブUSB：Verbatim16GB

PC（3台）
- cpu : intel core-i5
- ram : 8~16GB
- storage :HDD 500~1,000GB
- 有線マウス，キーボード（なんでもok）

## 遭遇したエラー
2種類
- executing grub-install /dev/sda failed
- The 'grub-efi-amd64-signed' package failed to install target/ 

## 状況
ライブUSBからUbuntuを起動して，パッケージのインストールを始めたが，
上記のエラーが発生しインストールが終了しない．
何回やり直してもエラーで止まってしまう．

## 解決案
このエラーを見ると，
grubっていうUbuntuの起動をしてくれるプログラムがインストールできないよ！
grub-efi-~~ってどこに入れるの？って状態です．

→ ブートローダー（grub）以外を先にインストールして，後にブートローダーを入れる！

## インストール内容

Install
- Normal Installation
- Install Third-Party software for graphics and wi-fi hardware and additional media formats
- Erase Ubuntu 18.04.5 LTS and reinstall(Erase disk install Ubuntuでも大丈夫です．) 

Language：English
Keyboard Layouts：Japanese
Time_zone(where are you?)：Tokyo

##解決手順

①Ubuntuのブートローダー（grub）以外のインストール
②ライブUSBにマウント
③ブートローダー（grub）のインストール
----再起動してgrubに入る場合----
④grubでnormal起動
---normalで起動しない場合---
⑤grubでboot起動

では，1つずつやっていきます．


## ①Ubuntuのインストール
ライブUSBからUbuntuを起動してください．
画面左上のActivitiesからTerminalを起動して，以下の文を実行してください．

```
sudo ubiquity -b
```

これで，見慣れたUbuntuのインストール画面が出てきます．
普段通りに進めて大丈夫です．
インストールの際に,
- Erase Disk（ディスク全て消去）
- Reinstall（中にUbuntu入ってるけど入れ直す）
のどちらでも大丈夫です．

インストール後
```Installation Complete``` が出てきたら
```Countinue Testing```をクリックしてください．
(Restart Nowの方をクリックするとまた最初からです．)

## ②ライブUSBにマウント
ここまでいったら，
ライブUSBの```/mnt``` に Ubuntuがインストールされたディスク（パーティション）をマウントします．

私の環境では，
- Ubuntu（中身）のディスク（パーティション）： /dev/sda2
- EFI（起動ディスクなどの説明書）のディスク（パーティション）： /dev/sda1
となっていました．
どれがどれかわからない場合には， Activities → GPartedで確認できます．


```
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
for i in /dev /dev/pts /proc /sys; do sudo mount -B $i /mnt$i; done
```


## ③ブートローダー（grub）のインスト－ル


```
sudo modprobe efivars
```

grubを入れ直す．

```
sudo apt-get install --reinstall grub-efi-amd64-signed
sudo grub-install --no-nvram --root-directory=/mnt
```

rootに入って，grubをアップデートします．

```
sudo chroot /mnt
update-grub
```

引き続きrootでコマンドを実行します．

```
cd /boot/efi/EFI
cp -R ubuntu/* BOOT/
cd BOOT
cp grubx64.efi bootx64.efi
```

以上ができれば，再起動してください．
（terminalで完結させる場合には，Ctrl+Dでrootから抜けた後に```sudo reboot```で再起動してください．）

また，再起動の時にライブUSBも抜いておくと，正常に動作しているか確認が楽です．

## ④grubに行く場合（Normalで起動）

grubに行ってしまうのは，どこに起動スクリプトがあるのかPC側が認識できていない状態です．
以下では，どこに起動スクリプトがあるか指定し，起動しています．

```
set prefix=(hd0,gpt2)/boot/grub
set root=(hd0,gpt2)
insmod normal
normal 
```

4行目のnormalで勝手に起動すると思います．

起動した場合には，Terminalで

```
sudo update-grub
```
を実行して，起動スクリプトがどこにあるのか記憶させてあげます．

起動しなかった場合には，以下の文をterminalで記入してください．

## ⑤normalで起動しない場合（bootで起動）

引き続きgrub上で，以下を実行してください．

```
insmod linux
linux /vmlinuz root=/dev/sda2
initrd /initrd.img
boot
```

bootでubuntuが起動します．
起動後Terminalで⑤のコマンドを記入して実行してください．


```
sudo update-grub
```

これで，毎回起動時にgrubに入ることなくUbuntuを起動できたと思います．
再起動などを行なって，grubに入らないか確認をお願いします．

# 最後に
基本は②のマウント，ブートローダーのインストールの段階で動いたのですが，
grubに入ってしまう場合があったので，迷宮入りしかけました．

誰かのお役になれば幸いです．


# 参考サイト様
https://qiita.com/Shunmo17/items/d2161a570847bb8b8f74

https://askubuntu.com/questions/1028703/the-grub-efi-amd64-signed-package-failed-to-install-target

https://unix.stackexchange.com/questions/329926/grub-starts-in-command-line-after-reboot

https://unix.stackexchange.com/questions/418401/grub-error-you-need-to-load-kernel-first