🤪
RaspberryPi OS 32bit armhf / armv7l の Docker Image 作成と起動
1. はじめに
x86のマシン上で RaspberryPi OS 32bit の Docker Image を作成して起動します。すぐに終わってしまうのでつまらないです。
2. 環境
- Ubuntu 20.04 x86_64
- Docker version 20.10.5, build 55c4c88
- RaspberryPi OS Buster armhf 2021.03.04
- RaspberryPi OS Bullseye armhf 2022.01.28
3. 手順
3-1. Docker Image の作成
RaspberryPi の公式サイトから最新のルートファイルシステムをダウンロードします。
https://downloads.raspberrypi.org/raspios_lite_armhf
$ wget https://downloads.raspberrypi.org/raspios_lite_armhf/root.tar.xz
Docker にインポートしてイメージを作成します。リポジトリ名 (pinto0309) とタグ名 (2021-03-04_buster) は任意で変更してください。私は Docker Hub にpinto0309というアカウントを作成していますのでリポジトリ名をpinto0309としました。
$ docker image import root.tar.xz pinto0309/raspios_lite_armhf:2021-03-04_buster
sha256:06a8e8313fea7b441c6084ce7ee3aa24991c56b97cd3e60c6ca8446246177b13
生成された Docker Image を確認してみます。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pinto0309/raspios_lite_armhf 2021-03-04_buster ee18ee04b33d 31 seconds ago 1.04GB
3-2. RaspberryPi OS armhf/armv7l Dockerコンテナの起動
QEMUのStaticモジュールを使用して起動します。下記2行のコマンドを実行するだけです。3-1のDocker Imageの作成作業は実施しなくても下記のコマンドだけですぐに利用可能です。
$ docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
$ docker run -it --rm \
-v `pwd`:/workspace \
pinto0309/raspios_lite_armhf:2021-03-04_buster bash
3-3. 起動後の確認 (超適当)
ホストのリソースがそのまま表示されますが、忘れてはいけないのは起動しているのが 32bit OS だということです。 あくまで、 RAM は 4GB までしか利用できない点にご注意ください。
# uname -a
Linux 305141ccd2d1 5.8.0-48-generic #54~20.04.1-Ubuntu SMP \
Sat Mar 20 13:40:25 UTC 2021 armv7l GNU/Linux
# free -h
total used free shared buff/cache available
Mem: 125Gi 3.4Gi 113Gi 524Mi 8.7Gi 120Gi
Swap: 2.0Gi 0B 2.0Gi
# df -h
Filesystem Size Used Avail Use% Mounted on
overlay 1.9T 147G 1.6T 9% /
tmpfs 64M 0 64M 0% /dev
tmpfs 63G 0 63G 0% /sys/fs/cgroup
shm 64M 0 64M 0% /dev/shm
/dev/nvme0n1p2 1.9T 147G 1.6T 9% /workspace
tmpfs 63G 0 63G 0% /proc/asound
tmpfs 63G 0 63G 0% /proc/acpi
tmpfs 63G 0 63G 0% /proc/scsi
tmpfs 63G 0 63G 0% /sys/firmware
作成した Docker Image は私の Docker Hub へ Push 済みです。 Pull すればすぐに利用可能です。
$ docker pull pinto0309/raspios_lite_armhf:2021-03-04_buster
$ docker pull pinto0309/raspios_lite_armhf:2022-06-16_bullseye
Discussion