Raspberry Pi 4でUECS Piを動かす

 こんにちは。虫食いアレッタです。(名前の由来はまたの機会に)

Facebookグループの知人から質問を受けてRaspberry Pi 4 (以下Raspi4)でUECS Pi Basicが動くのかを試してみました。

*「UECS Pi」はアルスプラウト株式会社が提供する汎用DIY環境制御ソフトウェアです。https://www.arsprout.co.jp/products/others/uecs-pi/

*「UECS」は農業用のセンサー機器や制御機器用の通信・動作の共通仕様です。UECS研究会が公開しています。https://www.uecs.jp/outline/outline-index

UECS Pi BasicはRaspiモデルB以上なのでRaspi4の性能は必要ありません。でも昨今の半導体不足のためかRaspiが入手困難で、かろうじて高額のRaspi4が入手できる状況。心配になるのもわかりますよね。

注意)このブログは2022年5月時点の情報に基づいています。当記事はUECS Pi Basicの利用規約やユーザマニュアルの内容を拡張するものではありません。また、何ら保証するものではありませんので自己責任で実施ください。

そのままで動く?

UECS Piの基本機能(無償版)であるUECS Pi Basicはアルスプラウト株式会社のページからファームウエアとしてダウンロードできます。ラズパイでブートできるSDカードのイメージです。Raspi4でそのままブートできるか試してみると。。。。

ダメでしたね~。
画面下から3行目にstart_cd.elf: is not compatible とあります。
ネットでRaspi4のbootエラーの記事を検索してみると、USBからブートできないという問題の解決方法としてstart4cd.elfを最新に更新しろというのがあります。
Raspi4の新しいbootloaderは、USBメモリーやディスク、またはネットワークから起動できるようになったためか、対応するカーネルも更新が必要なようです。
画面上から2行目にあるように、このRaspi4(実は知人からの借り物)のbootloaderの日付は2022/01/23と新しいものになっています。
ちなみにこのbootできないよ画面は手持ちのRaspi3では出てこなくて、この辺も機能追加されているようです。

UECS Pi Basicファームウエアの現状

現在(2022/05時点)アルスプラウト株式会社からダウンロードできるUECS Pi Basicのバージョンはver.20210518。Debianのバージョンは/etc/debian_versionを確認すると9.9。コードネームではstrechです。ちなみにDebianの最新版はバージョン11(bullseye)になります。/boot区画のファイルの日付情報は2019/06/15になっています。アルスプラウト株式会社からはArsprout Piという新しいファームウエアが出されていてますが、「Raspberry Pi 4 Model B では動作いたしません(将来バージョンにて対応予定)」と記載されています。新しいRaspiはこちらでサポートされるかもしれません。(未確定です)
それはともかく、ファームウエアをmicroSDにコピーしてRaspiで起動して確認しますが、問題のboot区画(パーティション)をdf -htコマンドで表示するとこのようになります。

/bootの区画の大きさは、43MBです。ファイルシステムはFAT32になっていてブートできます。残りは1.8GbでExt4です。

Raspi4がbootできるカーネルをコピーする

Raspi4でbootできない問題の解決方法は、最新のカーネルをこの/boot区画にコピーすることです。最新のカーネルは、下記のGitHubからダウンロードできます。

緑のCodeというボタンからDownload zipを選択してダウンロードしましょう。PCの適当なフォルダに解凍します。firmware-masterというフォルダができます。この中からbootというフォルダーの中身をmicroSDの/boot区画にコピーすればいいわけです。
ちなみに/boot区画はFAT32なのでWindows PCからでもアクセスできます。Explorerでビューと上書きコピーすればOK。(なんだ簡単じゃねーか)

あれ!? はいらね~!

さて、ここから苦難の始まりです。先ほど/boot区画が43MBと書きましたが、firmware-masterのbootフォルダーは49MBあります。少しだけ入らない!!
SDカードの/boot区画を大きくしてあげる必要があります。
SDカードの区画を変更する方法は、ネット検索すると大まかには次の方法があります。
 ①Raspberry piでgpartedなどのツールを使って区画を変更する。
 ②WindowsなどのPCの仮想マシンを動かしてgpartedなどのツールで変更する。
 ③Windowsで区画変更ツールを動かして変更する。
①、②でやるのは、今後の勉強のために役に立つけど、とりあえず今回は③でやります。
AOEMI Partition Assistantという便利なツールがあります。
無料のStandard版で間に合います。とりあえず導入して区画を確認してみます。


ちゃんと動きますね。ディスク1というのがSDカードです。

区画の移動・拡張

D:bootを拡張するのですが、すぐ後ろに1.8GBの区画があるのでそのままでは拡張できません。1.8GB区画を後ろにずらす必要があります。画面の操作手順は、後ろの<操作の例>を参照してください。
  1. 1.8GB区画を後ろの未割り当て領域にクローン。この時、後でD:boot区画と1.8GB区画をできるだけ詰めて配置できるようにいったん後ろの方にクローンします。この例では前の未割当領域を4GB作っています。
  2. 元の1.8GB区画を消去します。
  3. D:boot区画を拡張します。firmware-masterのbootフォルダーが入る容量。この例では約98MBにしています。
  4. クローンした1.8GB区画を前方へクローンします。この時D:boot区画との間に少し未割り当て領域を作成してください。ピッタリくっつけるとRaspiでブートできなくなります。(多分セクター境界の関係だと思う)
  5. 後ろの1.8GB区画を削除します。

カーネルのコピー

d:bootが拡張できたのでfirmware-masterのbootフォルダーをコピーします。/boot区画はFAT32なのでWindowsのエクスプローラーでコピーできます。

確認・バックアップ

これでRaspi4で起動できるか確認してください。めでたく稼働したでしょうか?
必要に応じてバックアップします。(Win32 Disk Imagerの場合、Read Only Allocated Partitionsを選択するとイメージファイルは約1.9GBの大きさになります)

<操作の例>

①クローンする区画を選択して左メニューから「パーティションをクローン」を選択

② クローン方法を選択(セクター単位のクローンしか選べない)

③ターゲットパーティションを選択。ディスク1「未割当て」領域を選択。

 

④パーティションサイズを調整(前に4GBの未割り当て領域を作る)


⑤変更内容を確認して、上部メニューの「適用」を実行する。
⑥クローン後の状態
⑦元の1.8GB区画を削除する。区画を選択して「パーティションを削除」。詳細手順は省略します。
⑧D:boot区画を拡張する。区画を選択して「パーティションをリサイズ/移動」を実施。ここでは約98MBに拡張。
⑨1.8GB区画を前方へクローン。前方の未割り当て領域を確保する。ここでは約7.8MBの未割り当て領域を作っている。

⑩後ろの1.8GB区画を削除する。



関連リンク:EzITコンサルティング www.ezitc.dev

コメント

このブログの人気の投稿

Arsprout Piを使ってみた③ ーファームウエアのカストマイズ UECS Piとの相違点ー

Arsprout Piを使ってみた② ー構成定義を中心にUECS Piとの違いを考えるー

Arsprout Piを使ってみた① ーUECS Piからの変更点を中心にー