🤪

RaspberryPi OS 32bit armhf / armv7l の Docker Image 作成と起動

2021/03/28に公開

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