Raspberry Pi 4 の 64bit版と USB Boot

[個人用のホームページ](https://tkyonezu.com/)を作成しました。今後は、そちらの方に整理していきたいと思いますので、よろしくお願いします。

# Raspberry Pi OS (64bit) beta テスト版

- [32bit版](https://www.raspberrypi.org/blog/new-raspberry-pi-os-release-december-2020/) は、[2020/12/02 に更新](https://www.raspberrypi.org/software/operating-systems/#raspberry-pi-os-32-bit)されたけど 64bit はまだまだですね。
- pieeprom-2020-09-03.bin がデフォルトになりました。（2020/10/06)
 bootloader_config から、SD_BOOT_MAX_RETRIES=1 
 と USB_MSD_BOOT_MAX_RETRIES=1 が削除されています。
- pieeprom-2020-09-03.bin が正式版に昇格しました。(2020/09/15)
- stable に pieeprom-2020-09-03.bin が公開されました。 (2020/09/07)
- 2020/08/24 に [2020/08/20版](https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip) のイメージが公開されました。 (2020/08/25)
- 最新版として配布された `/lib/firmware/raspberrypi/bootloader` にある `release-notes.md` に、こんなメッセージが。Raspberry Pi 4B の USB Boot に対応したブートローダーの正式版公開も間近のようです。（2020/07/21）
 > 2020-07-20 Promote 2020-07-16 bootloader and VL805 0138A1 FW to stable - STABLE
 >    * Promote the latest beta to stable as the next production firmware release candidate.
 >     The main difference between this and the previous stable version is the VL805 FW update.
 
- stable に rpi-eeprom-2020-06-15.bin が配布されているので、手動で適用してみました。もちろん、これは必須ではありません。（2020/06/18）

``` bash
$ sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/stable/pieeprom-2020-06-15.bin
$ sudo reboot

$ vcgencmd bootloader_version
Jun 15 2020 14:36:19
version c302dea096cc79f102cec12aeeb51abf392bd781 (release)
timestamp 1592228179
```

- mSD使わないで直接SSDにイメージをコピーする方法を追記しました。mSD不要になって嬉しいかも知れません。（2020/06/15）

- さらにHDMI用のパラメータを追記しなくても7インチのHDMIディスプレイが使えていることを追記しています。(2020/06/15)

- 2020/05/29 付の Raspberry Pi Blog [記事](https://www.raspberrypi.org/blog/latest-raspberry-pi-os-update-may-2020/)を追記しました。（2020/06/01)

## 1. Raspberry Pi 4B 8GB 版

2020/05/28 付けで Raspberry Pi 4B の 8GB 版が発売されました。早速、KSY、スイッチサイエンスからも購入可能になっています。

- 2020/05/28 [8GB Raspberry Pi 4 on sale now at $75](https://www.raspberrypi.org/blog/8gb-raspberry-pi-4-on-sale-now-at-75/) Raspberry Pi Blog

現在、使っている Raspberry Pi 4B のモデルは 4GB メモリ版ですが、こんなレビジョンになっています。

``` bash
$ cat /proc/cpuinfo | sed -n /^Hardware/,\$p
Hardware	: BCM2835
Revision	: c03112
Serial		: 0000000000000000
Model		: Raspberry Pi 4 Model B Rev 1.2
```

シリアルだけ変更しています。

- [Raspberry Pi revision codes](https://www.raspberrypi.org/documentation/hardware/raspberrypi/revision-codes/README.md)


- [Raspberry Pi 4 Tech Specs](https://www.raspberrypi.org/products/raspberry-pi-4-model-b/specifications/)
 - [Raspberry Pi 4 Model B product brief](https://static.raspberrypi.org/files/product-briefs/200521+Raspberry+Pi+4+Product+Brief.pdf) 
 - [Raspberry Pi 4 Model B schematic diagrams](https://www.raspberrypi.org/documentation/hardware/raspberrypi/schematics/rpi_SCH_4b_4p0_reduced.pdf)
 - [Raspberry Pi 4 Model B mechanical drawing](https://www.raspberrypi.org/documentation/hardware/raspberrypi/mechanical/rpi_MECH_4b_4p0.pdf)
 - [Documentation including hardware and configuration](https://www.raspberrypi.org/documentation/)


## 2. Raspberry Pi OS 64bit beta

時期を同じくして、ラズパイ用の 64bit OS のベータ版が公開されました。

- 2020/05/29 [Latest Raspberry Pi OS update - May 2020](https://www.raspberrypi.org/blog/latest-raspberry-pi-os-update-may-2020/) Raspberry Pi Blog [[Youtube]](https://youtu.be/qD67xfSvQrE?t=14)
- 2020/05/28 [Raspberry Pi OS (64bit) beta test version](https://www.raspberrypi.org/forums/viewtopic.php?f=117&t=275370&fbclid=IwAR0YAbnFVdmKMb1of7UMAVWTtksFk5akMTgubS6a2XGzdY0vx9lD7XBDj78) Raspberry Pi Forums

これでラズパイでも 64bit版の OS が手軽に使えるようになります。

OS の正式名称が Raspbian から Raspberry Pi OS に変わりましたので、新しい Raspberry Pi OS 用の[ダウンロードページ](https://www.raspberrypi.org/downloads/raspbian/)です。現在は、正式版として 2020/05/27日付の 32bit 版だけが公開されています。

- （新） [https://www.raspberrypi.org/downloads/raspberry-pi-os/](https://www.raspberrypi.org/downloads/raspberry-pi-os/)
- （旧） [https://www.raspberrypi.org/downloads/raspbian/](https://www.raspberrypi.org/downloads/raspbian/)

ラズパイ用 64bit版 OS の ‘uname` の内容は、こんな感じです。

``` bash
$ uname -a
Linux <ホスト名> 5.4.42-v8+ #1319 SMP PREEMPT Wed May 20 14:18:56 BST 2020 aarch64 GNU/Linux
```

また、`/etc/os-release` ファイルはこんな感じで 32bit版のように ID=`raspbian`ではなく `debian` になっています。

``` bash
$ cat /etc/os-release 
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
```

さらに、やはりベータ版となっていた USB Boot が上記 64bit 版では既に組み込まれています。

- [Pi 4 Bootloader Configuration](https://www.raspberrypi.org/documentation/hardware/raspberrypi/bcm2711_bootloader_config.md)

ちなみにベータ版を手動で適用する場合には、こんな感じです。

```
$ sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-27.bin
```

上記ページの内容で、64bit OS のブートローダを調べてみるとこんな感じです。

``` bash
$ vcgencmd bootloader_version
May 27 2020 18:47:29
version d648db3968cd31d4948341e09cb8a925c49d2ea1 (release)
timestamp 1590601649
$ vcgencmd bootloader_config
[all]
BOOT_UART=0
WAKE_ON_GPIO=1
POWER_OFF_ON_HALT=0
DHCP_TIMEOUT=45000
DHCP_REQ_TIMEOUT=4000
TFTP_FILE_TIMEOUT=30000
ENABLE_SELF_UPDATE=1
DISABLE_HDMI=0
SD_BOOT_MAX_RETRIES=1
USB_MSD_BOOT_MAX_RETRIES=1
BOOT_ORDER=0xf41

```

また `/etc/default/rpi-eeprom-update` は、こうなっています。

``` bash
$ cat /etc/default/rpi-eeprom-update
FIRMWARE_RELEASE_STATUS="critical"
```

そこで、`/lib/firmware/raspberrypi/bootloader` を見ても現時点では、`pieeprom-2020-04-16.bin` ですからベータ版の `pieeprom-2020-05-27.bin` が適用されているようです。

上記の内容から、64bit OS では最初から USB Boot が可能な設定となっています。

## 3. Raspberry Pi OS 64bit版のダウンロードと mSD作成

Raspberry Pi OS 64bit版をダウンロードして Etcher で mSD にコピーします。

実は、mSDにコピーしてからSSDにコピーするのではなく Etcher で直接SSDにイメージをコピーすれば大丈夫です。(2020/06/15 追記）

2020/08/24 に [2020/08/20版](https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip) が公開されました。
最初に公開されたのは、[2020/05/27版](https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip) となっています。

ダウンロードサイト- [https://downloads.raspberrypi.org/](https://downloads.raspberrypi.org/)

- 2020/08/20版 [https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip](https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-08-24/2020-08-20-raspios-buster-arm64.zip)
- 2020/05/27版 [https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip](https://downloads.raspberrypi.org/raspios_arm64/images/raspios_arm64-2020-05-28/2020-05-27-raspios-buster-arm64.zip)


## 4. WiFi設定と ssh の有効化

コピーした mSD の /boot に WiFi 設定と ssh の有効化をしておきます。
直接 SSD にイメージをコピーしている場合には、SSD の /boot になります。（2929/96/15 追記）

具体的には、以下の 2つのファイルを作成します。

``` bash
$ touch boot/ssh
$ vi boot/wpa_supplicant.conf
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
	ssid="<アクセスポイントのSSID>"
	psk="<パスワード>"
}
```

## 5. mSD から起動して初期設定

最初に mSD から起動して、必要な初期設定を実行しておきます。
または直接 SSD にイメージをコピーしている場合には、SSDから起動して必要な初期設定を実行しておきます。（2020/06/15 追記）

## 6. mSD から SSD へのコピー

まず、Raspberry Pi 4 の USB3.0 に SSD を接続しておきます。
先に直接SSDにイメージをコピーしている場合には、この手順は不要です。（2020/06/15 追記）

ラズパイの GUI 画面のメニューから、[アクセサリー] > [SD Card Copier] を選択して SDカードのコピーを実行します。

From で mSD を指定して、To で接続した SSD を指定します。ここで、`New Partition UUIDs` にチェックを入れておきます。

## 7. SSD から起動

シャットダウンして mSD を除去してから、SSD のみの状態で起動します。

現在 7インチの HDMI ディスプレイを使っているので、[LCD-show](https://github.com/goodtft/LCD-show) から 7インチ用の設定を参照して `/boot/config.txt` に設定を追加しています。実際には、Raspberry Pi 4 用としてポート0とポート1の両方に設定しています。

以下の設定を追加しないでも 7インチ HDMI ディスプレイに表示することができています。ただし、条件によって解像度が変更される場合があるようです。（2020/06/15 追記）

- [Video options in config.txt](https://www.raspberrypi.org/documentation/configuration/config-txt/video.md)

``` bash
hdmi_force_hotplug:0=1
hdmi_force_hotplug:1=1

# Copied from LCD7C-show
config_hdmi_boost:0=7
hdmi_group:0=2
hdmi_mode:0=1
hdmi_mode:0=87
hdmi_drive:0=1
hdmi_cvt:0 1024 600 60 6 0 0 0

config_hdmi_boost:1=7
hdmi_group:1=2
hdmi_mode:1=1
hdmi_mode:1=87
hdmi_drive:1=1
hdmi_cvt:1 1024 600 60 6 0 0 0
```

まだベータ版ではありますが、Raspberry Pi 4 でも USB Boot ができて 64bit OS も使えるようになってますます利用の幅が広がりそうです。