Raspberry Pi 4BでUbuntuをUSBブートするなら20.04より20.10が良い

最近うちにラズパイがどんどん増えています。家中にラズパイを配置してサーバーを立てまくり、我が家のIoTを支えさせています。
そんなラズパイですが、欠点を挙げるとすればmicroSDで起動していること。ちょっとした用途ならばそれでもいいんですが、Raspberry Pi 4Bの謳い文句 "Your new desktop computer" を実現するには少し心許ない仕様です。
Raspberry Pi 4BをUSBブートする環境も整ってきており、せっかくのデスクトップ環境ということでUbuntuを入れてみたいと思います。

**更新 2021-01-24**
不具合を一つ見つけたので、対処法を下記ページに記しました。
[Raspberry PiのUbuntu 20.10でスリープ解除後にキーボード・マウスを認識しない不具合](https://qiita.com/SogoK/items/0a24df4ac8c22bdfe734)

## やること
Raspberry Pi 4BをSSDを起動ドライブにしてUSBブートすることで、快適なUbuntuデスクトップ環境を作る

## 用意したもの

- Raspberry Pi 4B (8GB)
- SSD ([Crucial BX500; 240GB](https://www.amazon.co.jp/gp/product/B07JDWLBN7/))
- SATA - USB3 アダプタ ([UGREEN製](https://www.amazon.co.jp/gp/product/B07S7PDGKX/); UASP対応とあるものは要注意[^1])
- microSD (一旦microSDで起動してアップデートする必要があります)
- ディスプレイ、キーボード、マウス、microHDMIケーブル

## なぜ20.04 LTSより20.10が良いのか
Ubuntu Server 20.04 LTSからはUbuntuが公式にRapberry Piをサポートしていますが、USBブートをするとなると20.04では sudo apt update / sudo apt upgrade をすると起動しなくなるバグがあり、それはスクリプトを作成して入れておくことで対策ができるのですが、なんか面倒ですね？
幸いなことに20.10ではそのバグは解消されているので、**USBブートをしたいなら20.10を使うのが圧倒的に楽です**。20.04ではServer版のみでしたが、20.10ではDesktop版もあるのでPCとして使うのにぴったりですね。ただし2021年7月までのサポートです。

## 手順
特に難しいことは必要ありません。

### 0. Raspberry Pi OSをmicroSDに書き込み
既に動かしているラズパイがあればこの手順は必要ありません。私は64bit版のRaspberry Pi OSを入れましたが、32bitでやっている人もいるので[^2]どちらでも大丈夫だと思います。
OSイメージの書き込みにはRaspberry Pi Imagerを使うのが楽です。32bit版OSはRaspberry Pi Imagerの中でダウンロードできます。

[Raspberry Pi Imager](https://www.raspberrypi.org/software/)
64bit版を使う場合は[こちらからダウンロード](https://downloads.raspberrypi.org/raspios_arm64/images/)してください。

![スクリーンショット 2021-01-17 12.20.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451958/1572bee8-8d97-7a8c-7fb1-6b67109f4b59.png)


### 1. EEPROMをアップデートする
Raspberry PiにはEEPROMというメモリがあり、そこにbootloaderが入っています。Raspberry Pi 4BでUSBブートをするにはbootloaderのパージョンを`2020-09-03`以降にする必要があります。

```sh
# 現在のバージョンを確認
$ vcgencmd bootloader_version
Apr 16 2020 18:11:26
version a5e1b95f320810c69441557c5f5f0a7f2460dfb8 (release)
timestamp 1587057086

# アップデート
$ sudo apt update
$ sudo apt full-upgrade
$ sudo reboot

# 再起動後にアップデートされたか確認
$ vcgencmd bootloader_version
Sep  3 2020 13:11:43
version c305221a6d7e532693cc7ff57fddfc8649def167 (release)
timestamp 1599135103
```

### 2. 起動ドライブをUSBに変更
`raspi-config`を使います。

```sh
sudo raspi-config
```

`3 Boot Options` > `B4 Boot Order` > `B1 USB Boot`を選択して保存と解説しているページをいくつか見ましたが[^3]、私の環境の場合には`7 Advanced Options`の中にありました。変更が終わったら、次再起動する時にはUSBから起動するようになります。

電源を落としておきます。

```sh
sudo shutdown -h now
```

### 3. UbuntuをSSDに書き込み
まだSSDには何も書き込んでいなかったので、Raspberry Pi Imagerを使ってUbuntu 20.10を書き込みましょう。

[Ubuntuはこちらからダウンロードできますが](https://ubuntu.com/download/raspberry-pi)、自分でダウンロードしなくてもRaspberry Pi Imagerの中でダウンロードできます。
私はUbuntu Desktop 20.10の64bit版を使いました。

![スクリーンショット 2021-01-17 13.37.45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451958/c918ee1c-c24a-dec9-4d9a-8cb8c00e903e.png)


### 4. USBから起動
microSDを抜き、SSDを挿します。電源を入れて起動すれば成功です！

![Screenshot from 2021-01-17 16-31-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/451958/344aaadc-3a79-ee19-64a5-4fe0e5355ff2.png)


でも正直ちょっと重いですね……ｗ
メモリの容量やSSDかどうかというよりもCPUのパワー不足感があります。GNOMEからLubuntu等の軽量デスクトップに変えたらもう少し快適かも？ でもGUIがリッチな方がテンションは上がるし……という葛藤。

とはいえ、総額17,500円程度で2つ目、3つ目のパソコンができるとなれば十分アリだと思います。VScodeなどARM64ビルドを公開するアプリも増えてきているので、今後が結構楽しみです^^

## 参考文献

- [Ubuntu 20.10を搭載したRaspberry Piが完全なLinuxデスクトップとマイクロクラウドを実現](https://jp.ubuntu.com/blog/ubuntu-20-10%E3%82%92%E6%90%AD%E8%BC%89%E3%81%97%E3%81%9Fraspberry-pi%E3%81%8C%E5%AE%8C%E5%85%A8%E3%81%AAlinux%E3%83%87%E3%82%B9%E3%82%AF%E3%83%88%E3%83%83%E3%83%97%E3%81%A8%E3%83%9E%E3%82%A4%E3%82%AF)
- [正式にUbuntuがラズパイ4に対応（Ubuntu 20.10）](https://raspida.com/ubuntu2010-rpi4)
- [Ubuntu 20.10 Desktop USB boot - no modifications needed](https://www.raspberrypi.org/forums/viewtopic.php?p=1741199)
- [RPI4 Direct USB Boot Ubuntu 20.04](https://www.raspberrypi.org/forums/viewtopic.php?t=278791)
- [Ubuntu20.04(64bit)でラズパイ4をファイル共有＆バックアップサーバーにする。その1/3　Ubuntu20.04(64bit)インストール編](https://raspberrypi.mongonta.com/nextcloud-raspi4/)
- [Raspberry Pi 4でUSB接続HDDから64ビットUbuntu 20.04.1を起動してみました](https://denor.jp/raspberry-pi-4%E3%81%A7usb%E6%8E%A5%E7%B6%9Ahdd%E3%81%8B%E3%82%8964%E3%83%93%E3%83%83%E3%83%88ubuntu-20-04-1%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F)
- [raspberry pi 4 でubuntu20.04をusbブートするの巻](https://www.yukkuriikouze.com/2020/10/24/3945/)
- [Raspberry Pi 4 Model B で USB ブート(1)](https://qiita.com/nowlinuxing/items/3c7f61bca6e5ef0d1c47)
- [ラズパイ4をUSB接続のSSDから起動する方法(USBブート)](https://raspida.com/rpi4-ssd-usb-boot)

[^1]: 私は詳しくないので分かりませんが、UASP対応のSATA - USBアダプタは非対応らしいです。ちなみに私が買ったアダプタにもUASP対応とは書いてありました。[参考リンク](https://denor.jp/raspberry-pi-4%E3%81%A7usb%E6%8E%A5%E7%B6%9Ahdd%E3%81%8B%E3%82%8964%E3%83%93%E3%83%83%E3%83%88ubuntu-20-04-1%E3%82%92%E8%B5%B7%E5%8B%95%E3%81%97%E3%81%A6%E3%81%BF%E3%81%BE%E3%81%97%E3%81%9F#USB)
[^2]: 32bit版でEEPROMをアップデートしている人もいました。[参考リンク](https://www.yukkuriikouze.com/2020/10/24/3945/)
[^3]: 例えば[このページ](https://qiita.com/nowlinuxing/items/3c7f61bca6e5ef0d1c47)や[このページ](https://raspida.com/rpi4-ssd-usb-boot)。