Ubuntu 18.04 LTSが入っているノートPCをSSDに換装する

メモ程度ですが、参考になれば

## なぜ換装しようと思ったか
ちょうど一年前くらいにUbuntuとWindows10のデュアルブート環境を作成したが、
最近Ubuntuも遅くなってきた気がしていた。
アマゾンで何気なく値段を確認すると、
SSDとメモリ8Gを合わせても1万円以内で購入できることがわかった。
もう換装しなよ。と誰かに言われた気がしたので、挑戦することにした。

## 参考URL
[HDDからSSDへOSごとコピー(ubuntu)](http://gushigo.hatenablog.com/entry/2017/11/06/215402)
[linux環境を複製する方法](http://pyopyopyo.hatenablog.com/entry/20160307/p1)

## トラブル解決用
[ddに頼らずにLinuxのブートドライブをコピーする方法(LVMでもない)](https://qiita.com/204504bySE/items/fb4f0a890766c31b662d)
[Live USB error “you need to load the kernel first”(英語サイト)](https://askubuntu.com/questions/1117391/live-usb-error-you-need-to-load-the-kernel-first)


## 購入したもの

1. SSD 240GB
2. SO-DDIMM DDR3 8GB
3. SATA3-USB変換ケーブル

## 換装方法

### 1. gpartedのインストール

```terminal
$ sudo apt-get install gparted
```


### 2. gpartedでパーティションテーブルを作成
おそらく外付けのSSDはsdbになっているはず。

- パーティションテーブルはgptを選択
- あとはsdaと同じように設定したら良い(容量が違う場合はセンスに任せる)
- 参考サイトでは/homeのみ別のパーティションにしていたので、真似する
- 最低必要なのは起動用パーティション、ルートパーティション、linux-swapパーディションの3つ

↓換装後だけど、作成したパーティション
![Screenshot from 2019-06-30 20-51-45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/277723/5226c28a-1236-c6ec-ba6e-0751e895daba.png)

### 3.マウント

```terminal
$ sudo mkdir /mnt/s1
$ sudo mkdir /mnt/s2
$ sudo mkdir /mnt/s3
$ sudo mkdir /mnt/c1
$ sudo mount /dev/sdb1 /mnt/s1
$ sudo mount /dev/sdb2 /mnt/s2
$ sudo mount /dev/sdb3 /mnt/s3
$ sudo mount --bind -oro / /mnt/c1
```

### 4. データコピー
まずはオプション"n"をつけて内容確認。
といっても時間もそこそこかかるし量が膨大なので途中で打ち切っちゃってもいいかも。
コマンドがOKだったらオプション"n"を外す。
※かなり時間かかります。

```terminal
$ sudo rsync -aDnv /mnt/c1/boot/efi/ /mnt/s1   #しくじりポイント！ 実際にはやらなくて良い
$ sudo rsync -aDv /mnt/c1/boot/efi/ /mnt/s1   #しくじりポイント！ 実際にはやらなくて良い
$ sudo rsync -aDnv --exclude "/mnt/*" --exclude "/home" /mnt/c1/ /mnt/s2
$ sudo rsync -aDv --exclude "/mnt/*" --exclude "/home" /mnt/c1/ /mnt/s2
$ sudo rsync -aDnv /mnt/c1/home/ /mnt/s3
$ sudo rsync -aDv /mnt/c1/home/ /mnt/s3
```

Ubuntuド素人のため、やらかしました。
確認のため/mnt/s1の中身を確認すると空。
詳しくはわからないですが、多分コピー禁止になってる
(誰か教えてください)
[ddに頼らずにLinuxのブートドライブをコピーする方法(LVMでもない)](https://qiita.com/204504bySE/items/fb4f0a890766c31b662d)によると

```terminal
$ sudo mkdir /mnt/o1
$ sudo mount /dev/sda1 /mnt/o1
$ sudo rsync -aHAXxSvP o1/ s1/
```
これで行けるらしい。
中身を再度確認すると、ちゃんとコピーできてた！！

### 5. fstabを修正
参考サイトはemacsで修正していたが、インストールしていないので、viで修正(私だけのしくじりポイント!)

```terminal
$ sudo vi /mnt/s1/etc/fstab
```

UUIDを直す。
UUIDの確認は以下のコマンド。

```terminal
$ ls -l /dev/disk/by-uuid
```

### 6. ブートローダーのインストール

```terminal
$ sudo mount --bind /dev   /mnt/s2/dev
$ sudo mount --bind /proc  /mnt/s2/proc
$ sudo /usr/sbin/chroot /mnt/s2
# /usr/sbin/grub-install /dev/sda2
```

### 7. ブートローダーの設定
```terminal
$ sudo /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg
```

### 8. 実際にHDDとSSDを交換する。ついでにメモリも
DELLのノートPCのSSD換装をしているサイトをみながら、交換する
順調にネジを外し、メモリも交換した。
残すはHDDのみとなったが、
・・・・・・ネジ硬すぎ
全然取れない。二時間戦ったが、手が痛すぎて諦める。
結局電動ドライバを追加で購入しました。。。

### 8. お楽しみの起動
無事(?)SSDの取り付けも終わり、ついにお楽しみの起動！
電源を入れて、F2連打
bootの起動で、EFI/ubuntu/shimx64.efiを追加し、
先頭に持っていってF10を押下。
これで、SSDで起動できるはず。

・・・・・・なにこれ？

```terminal
GNU GRUB version 2.02
Minimal BASH-like line edition is supported. For the first word, TAB lists possible command completions.
grub>
```

どうも起動がうまく行っていないらしい。
[Live USB error “you need to load the kernel first”(英語サイト)](https://askubuntu.com/questions/1117391/live-usb-error-you-need-to-load-the-kernel-first)をみて、bootを行う
※私の環境では英語キーボードになっていたので、いつもとキーの配置が違うことに注意！


```terminal
grub> set root=(hd0,2) # sdb2がルートのため
grub> linux /boot/vmlinuz-4.15.0-52-generic root=/dev/sda2
grub> initrd /boot/initrd.img-4.15.0-52-generic
grub> boot
```

これで起動が走るが、ルートとホームのパーティションが読めないようなメッセージが出てた。
うろ覚えで申し訳ないが、ターミナルのみのリカバリーモードになったと思う。
これまでの手順でパーティションはUUIDで判断していると当たりをつけ、
fstabの中身を確認。
実際のUUIDと比べると、
***UUIDの末尾が英語のものが全て小文字から大文字に変わっていた***

viのコマンドは[i][dd][:wq]ぐらいしか知らない超底辺の私がよくわからずコピペ
して使ったせいか勝手に変換された模様

小文字に修正し直して念の為、ブートローダーの設定をし直す。

```terminal
$ sudo /usr/sbin/grub-mkconfig -o /boot/grub/grub.cfg
```
その後、exitでターミナルを抜けると、正常に起動された！！
念の為、再起動する。すると今度は何も問題なく起動できた！！

## 使用感
もう比べるでもなく、クソ早い。


## 教訓
よく知らないものはしっかりと意味を調べましょう！！