raspberry pi を mstata SSDからbootする

[日本Androidの会秋葉原支部ロボット部 Advent Calendar 2020](https://qiita.com/advent-calendar/2020/akbrobot) 5日目です。

aliexpressで独身セールの時に購入したのが届きました。

https://ja.aliexpress.com/item/4000460533950.html?spm=a2g0s.9042311.0.0.6f694c4d3fva6u

ラズパイに下駄を履かせて msata ssd をつなげる拡張ボートです。
msata ssdも独身セールで購入したのが届いたので、これを使って msata ssdからOSブートさせてみようと思います。


####作業

組み立てはこんな感じです。
取説とかは特についてないですが、直感でわかる思います。

<img width=50%" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146663/5392ff6e-138a-0a56-6a16-caf44816d88a.png">

<img width=50%" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146663/57c62992-b173-f623-8e22-fae067939ba1.png">

<img width=50%" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146663/a74ea110-7bc7-8b32-fd37-1e0a969269a2.png">

この方の記事を参考に作業を行います。
https://alexellisuk.medium.com/upgrade-your-raspberry-pi-4-with-a-nvme-boot-drive-d9ab4e8aa3c2

OSをアップグレードをして再起動します。

```
pi@raspberrypi:~ $ sudo apt update
pi@raspberrypi:~ $ sudo apt upgrade -y
pi@raspberrypi:~ $ sudo reboot
```

bootloaderのVersionは以下になりました。

```
pi@raspberrypi:~ $ sudo vcgencmd bootloader_version
Sep  3 2020 13:11:43
version c305221a6d7e532693cc7ff57fddfc8649def167 (release)
timestamp 1599135103
```

再起動したらraspi-configからAdvanced OptionsからBoot Orderを選択してUSB BootでOKを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/146663/2c19b0f2-0eef-e656-5fb9-0299da184fbe.png)

ddコマンドでsdカードからmsataにコピーします。

```
pi@raspberrypi:~ $ sudo dd if=/dev/mmcblk0 of=/dev/sda bs=1M
```

コピーが終了したらラズパイをシャットダウンしてsdカードを取り外したら電源を入れ直します。
ちゃんとmsataから起動するようになりました :clap:

```
pi@raspberrypi:~ $ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0 59.6G  0 disk
tqsda1   8:1    0  256M  0 part /boot
mqsda2   8:2    0 59.4G  0 part /
pi@raspberrypi:~ $ df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/root        59G  6.3G   50G  12% /
devtmpfs        1.8G     0  1.8G   0% /dev
tmpfs           1.9G     0  1.9G   0% /dev/shm
tmpfs           1.9G  8.5M  1.9G   1% /run
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/sda1       253M   54M  199M  22% /boot
tmpfs           385M     0  385M   0% /run/user/1000
```

####比較

system-analyzeコマンドで起動時間、ddコマンドでwriteの時間を測ってみました。
あくまで参考値ですが起動時間が約半分、writeはざっくり1/8～1/9とsdカードより大幅に向上が得られました :heart_eyes:

・起動時間（sdカード）

```
pi@raspberrypi:~ $ sudo systemd-analyze
Startup finished in 2.543s (kernel) + 33.429s (userspace) = 35.973s
graphical.target reached after 33.047s in userspace
```

・ddコマンド（sdカード）

```
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 43.023 s, 25.0 MB/s
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 111.219 s, 9.7 MB/s
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 52.4544 s, 20.5 MB/s
```

・起動時間（msata）

```
pi@raspberrypi:~ $ systemd-analyze
Startup finished in 1.590s (kernel) + 16.330s (userspace) = 17.921s
graphical.target reached after 16.303s in userspace
```

・ddコマンド（msata）

```
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.95291 s, 180 MB/s
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.73165 s, 187 MB/s
pi@raspberrypi:~ $ dd if=/dev/zero of=/tmp/write.tmp ibs=1M obs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.77155 s, 186 MB/s
```

SSDからbootさせると性能向上が見込まれていいですね。
SATA SSDのボートも買ってるので別途比較してみたいと思います。