Raspberry Piしたい(balenalib)
DockerコンテナーでRaspberry Pi環境をエミュレートして、自作パッケージが実際のハードウェアで動作するかを事前確認できます。
BalenaがDockerHubに公開しているRaspberry Pi OSのイメージを使用します。RPi3/RPi4、Debianバージョン(bullseye/bookworm)などを組み合わせて選択できます。
利用可能なイメージ:
単一バージョンで確認したい
Dockerfile を作成
自作パッケージのインストール手順をDockerfileに記述します。 RPi4/bookwormの組み合わせが動作確認済みです。
1FROM balenalib/raspberrypi4-64-python:bookworm-build-20240429
2
3# システムパッケージの更新
4RUN apt update && \
5 apt upgrade -y && \
6 apt autoremove -y && \
7 apt install -y pipx
8
9# 自作パッケージのインストール例
10RUN pipx install haniwers
11
12# または、ローカルのパッケージをコピーしてインストール
13# COPY . /app
14# WORKDIR /app
15# RUN pip install -e .
16
17ENTRYPOINT ["/bin/bash"]
compose.yaml を作成
# compose.yaml
services:
raspi:
build:
context: .
dockerfile: Dockerfile
container_name: raspi-dev
stdin_open: true
tty: true
起動と実行
# イメージをビルドしてコンテナーを起動
$ docker compose up -d
# コンテナーに接続
$ docker compose exec raspi bash
# ログを確認
$ docker compose logs -f
# 停止
$ docker compose down
複数バージョンで確認したい
異なるRaspberry PiのバージョンやDebianバージョンで同時にテストする場合は、 複数のDockerfileを作成して管理します。
Dockerfileの作成
各バージョン用のDockerfileを作成します。
1# Dockerfile.rpi4-bookworm
2FROM balenalib/raspberrypi4-64-python:bookworm-build-20240429
3RUN apt update && apt upgrade -y && apt autoremove -y && apt install -y pipx
4RUN pipx install haniwers
1# Dockerfile.rpi4-bullseye
2FROM balenalib/raspberrypi4-64-python:bullseye-build-20240429
3RUN apt update && apt upgrade -y && apt autoremove -y && apt install -y pipx
1# Dockerfile.rpi3-bookworm
2FROM balenalib/raspberrypi3-64-python:bookworm-build-20240429
3RUN apt update && apt upgrade -y && apt autoremove -y
compose.yaml を作成
# compose.yaml
services:
rpi4-bookworm:
build:
context: .
dockerfile: Dockerfile.rpi4-bookworm
container_name: raspi-test-rpi4-bookworm
stdin_open: true
tty: true
rpi4-bullseye:
build:
context: .
dockerfile: Dockerfile.rpi4-bullseye
container_name: raspi-test-rpi4-bullseye
stdin_open: true
tty: true
rpi3-bookworm:
build:
context: .
dockerfile: Dockerfile.rpi3-bookworm
container_name: raspi-test-rpi3-bookworm
stdin_open: true
tty: true
起動と実行
# すべてのバージョンをビルド・起動
$ docker compose up -d
# 特定のバージョンに接続
$ docker compose exec rpi4-bookworm bash
# 特定のサービスのログを確認
$ docker compose logs -f rpi4-bookworm
# すべて停止
$ docker compose down
動作確認済み環境
宇宙線測定ツール(haniwers)のインストール検証では、以下の結果が得られました:
OS |
Python |
pipx |
結果 |
エラー |
|---|---|---|---|---|
RPi3 / bullseye |
3.9 |
0.12.3.1 |
❌ 失敗 |
Cargo is not installed |
RPi3 / bookworm |
- |
1.1.0 |
❌ 失敗 |
pip seemed to fail to build pendulum |
RPi4 / bullseye |
3.11.2 |
ない |
⚠️ パッケージなし |
|
RPi4 / bookworm |
3.11.2 |
1.1.0 |
✅ 成功 |
推奨環境:RPi4 / bookworm
Raspberry PiおよびDebianバージョンについて
Raspberry Piのバージョン
モデル |
アーキテクチャ |
ハードウェア |
特徴 |
|---|---|---|---|
RPi3 (Model B+) |
ARMv7 (32/64-bit) |
1.4GHz Cortex-A53 |
古いモデル、制限あり |
RPi4 (Model B) |
ARMv8 (64-bit) |
1.5GHz Cortex-A72 |
推奨、高い互換性 |
RPi5 |
ARMv8 (64-bit) |
2.4GHz Cortex-A76 |
最新モデル、高性能 |
Debianバージョン
コードネーム |
リリース |
サポート終了 |
特徴 |
|---|---|---|---|
bullseye (11) |
2021年8月 |
2026年6月 |
旧バージョン、パッケージ不足の場合あり |
bookworm (12) |
2023年6月 |
2028年6月 |
推奨、modern toolchain対応 |
trixie (13) |
2024年11月 |
2029年6月以降 |
テスト用途 |
推奨構成:RPi4 + bookworm
RPi4とDebianの組み合わせがもっとも安定しており、Rustコンパイラやpipパッケージのビルドで問題が少ないため、本番環境での使用をオススメします。
トラブルシューティング
“Cargo is not installed” エラー
Rustのツールチェーンが必要な場合、RPi3/bullseyeでは動作しません。 RPi4/bookwormの使用をオススメします。
“pip seemed to fail to build pendulum” エラー
C言語コンパイラが不足している可能性があります。 Dockerfileに以下を追加してください:
1RUN apt install -y build-essential python3-dev
Raspberry Piエミュレーションの特徴
メリット
実ハードウェアなしでテスト可能 実Raspberry Piを購入しなくても、Dockerコンテナーで環境をシミュレート可能。
複数バージョン同時テスト RPi3、RPi4、異なるDebianバージョンを同時に検証できる。
開発~本番まで同じイメージで対応 開発環境で検証したイメージをそのまま本番ハードウェアにデプロイできる。
CI/CDパイプラインに統合可能 自動テスト環境として、Raspberry Pi対応のバイナリを事前検証できる。
デメリット
完全な再現ではない GPIO、SPI、I2Cなどのハードウェアインターフェイスはエミュレートできない。
パフォーマンステストは参考値 実ハードウェアとCPU性能が異なるため、ベンチマークとして正確ではない。
一部パッケージが動作しない Rustコンパイラなど、アーキテクチャ依存のツールで問題が発生することがある。
最適な用途
Raspberry Pi用自作パッケージの動作確認。
複数バージョン対応の事前テスト。
CI/CDパイプラインでの自動テスト。
Raspberry Piアプリケーション開発の初期段階。
実ハードウェアがない環境での開発。