今回のエントリは、正式リリースが行われるまでの時間限定的な情報になります。
前回のエントリでは、RaspberryPi 4B
の/rootパーティションのUSBへの配置を行いました。ただ、SDカードメモリは挿しっぱなしになるのであまりスマートとは言えませんでした。
参考
実はベータ版の機能ではありますが、SDカードレスのUSB起動ができるようです。ということで今回はそのベータ版の起動を行ってみたいと思います。 ※(注意)ベータ版の機能になりますので機器の故障などの可能性もありますのでおすすめしません。もし行う場合には自己責任でお願いします。そろそろ正式されるとの噂なので正式リリースを待ったほうがいいと思います。
また、単にRaspberry Pi OS
でUSB起動するのはちょっと物足りないのでOSのほうもRaspberry Pi OS
の64bitイメージでインストールを行っていきたいと思います。
確認は完全にはしていませんが、最新版のRaspberry Pi OS(32bit)
でも同様に行うことはできそうです。(後述するEEPROM
のファイルは存在しています)
Raspberry Pi OS (64 bit) beta test version
はこちらからダウンロードできます。
64bitベータ版なのでライブラリなどのパスなどかなり変わっていることもあるので、うまく行かなくても仕方ないかなと思います。実際にパッケージインストールで対応していないものもありました。
ではインストールを行ってみます。
Raspberry Pi OS (64 bit) beta test version
のインストール
基本的にインストールに関しては通常のOSと同様にRaspberry Pi Imager
を使用して書き込めばOKです。
RaspberryPi 4B
ではRaspberryPi3
までのOTP bootmode
に替わってEEPROM
によるbootが採用されています。
Raspberry Pi 4
にはSPI接続のEEPROM
(4MBits / 512KB)があり、システムを起動するためのコードが埋め込まれています。
SDカードのブートパーティションに以前にあったbootcode.bin
をこのEEPROM
に書き込むことででブートローダーを変更することができます。
ちなみにSDカードのブートパーティションにbootcode.bin
が存在する場合は、EEPROM
ブートローダーの処理は無視されます。
詳細はこちらに出ています。
SDカードに書きこんだ後に起動しました。起動してシステム状態を確認すると、ちゃんと64bit OS(aarch64
であれば64bit)になっていました。
$ sudo apt update $ sudo apt upgrade $ sudo rpi-update $ sudo reboot
再起動したら以下のコマンドを実行(ただし既にインストールされているので実行しなくても大丈夫です。)このrpi-eeprom
ですが、起動を司るEEPROM
の更新を自動で行うサービスとなるようです。EEPROM
の自動書き込みを行いたくない場合にはサービスを停止することも可能のようです。
$ sudo apt install rpi-eeprom
まずは現状のEEPROM
のバージョンを確認します。以下のコマンドでバージョンの確認ができます。
$ vcgencmd bootloader_version
実行後の出力がApr 16 2020 18:11:26
となっていれば、初期状態となっています。では、EEPROM
の更新を行います。
以下を実行して/etc/default/rpi-eeprom-update
を編集します。/etc/default/rpi-eeprom-update
ファイルのFIRMWARE_RELEASE_STATUSパラメータ
を"critical"から"beta"に変更します。
$ sudo vi /etc/default/rpi-eeprom-update
変更前
FIRMWARE_RELEASE_STATUS="critical"
変更後
FIRMWARE_RELEASE_STATUS="beta"
編集が終わったらファイルの保存をして終了させます。続いて、以下のコマンドでpieeprom-2020-05-15.bin
をインストールします。
$ sudo rpi-eeprom-update -d -f /lib/firmware/raspberrypi/bootloader/beta/pieeprom-2020-05-15.bin
インストールしてもEEPROMの書き換えは行われません。再起動後に書き換えを行い、バージョンアップが行われます。
$ sudo reboot
再起動が終わったら、以下のコマンドで使用して、ブートローダーのバージョンを確認します。
$ vcgencmd bootloader_version
コマンドの出力がMay 15 2020 11:05:52
の様に表示されていれば正常に更新されています。
起動するUSBメモリを準備する
EEPROM
に書き込みが終わっているのでSDカードにイメージを書き込んでも良かったのですが、面倒だったのでSDカードの内容をUSBメモリにコピーしました。
ツールとしては前回のエントリーでも使用したSD Card Copier
となります。このあたりの作業もそろそろコマンドラインでやりたいかな~。楽なのはいいのですが。
Copy From Device
(ソース)はSDカードを/dev/mmcblk0
を指定、Copy To Device
(ディスティネーション)は環境にもよりますが/dev/sda
を選択します。
ただし、前回と一部異なることがあります。【New Partition UUIDs】のチェックを入れないようにしてください。入れてしまうとコピー側のUSBのパーティション情報が新たに作成され、コピー側の情報が違うものになってしまうので、このチェックボックスにはチェックを入れてはいけません。
コピーが終了したら、システムをシャットダウンして
$ sudo shutdown -h now
USBメモリを挿したままにして、SDカードを抜き、RaspberryPi
を起動します。
これでOKです。
起動後の確認
起動ができれば基本的には成功していますが、念の為mount
情報を確認します。すると、/bootパーティションも/rootパーティションのどちらも/dev/sda(USBメモリ)
が指定されているのがわかります。
$ mount | grep /dev/sda /dev/sda2 on / type ext4 (rw,noatime) /dev/sda1 on /boot type vfat (rw,relatime,fmask=0022,dmask=0022,codepage=437,iocharset=ascii,shortname=mixed,errors=remount-ro)
一応、64bitおよびUSBメモリ起動(SDカードレス起動)ができるようになりました。
ベンチマークを取ろうとsysbench
をインストールしようと思ったのですが、aptコマンドでインストールしようとするとパッケージが見つからず…ベータ版の64bitOSなので仕方ないかな。
以下からGithub経由でインストールしてもよいのですが、以前インストールしたものとはバージョンが違うようで表示形式が違うので挫折しました。どちらかというと新しいのでこちらに合わせたほうが良さそうではあるのですが。
おわりに
ベータ版の機能というものの特に設定がわかりにくいということもなく、うまくいきました。リリース情報としてはそろそろ正規リリースされるとのことなのでもう少し待てば何もしなくてもUSB起動ができるのかなと思います。ということで、正規リリースされるまでの時限的な情報となりました。
SSDになると更に高速な速度がでるのではないかと思います。早くリリースされるといいですね。
参考