Raspberry Pi 3 で Amazon Linux 2

2022年2月2日、Raspberry Pi OS (以前は Raspbian と呼ばれていました) の 64bit 版が発表されました。これにより、BCM2710 を採用している、Raspberry Pi Zero 2、Raspberry Pi 3 と BCM2711 を採用している Raspberry Pi 4 などで AArch64 (arm64) に対応したアプリケーションの実行が可能になりました。

Amazon Web Services では、Graviton という同じく arm64 アーキテクチャのプロセッサを使用した EC2 インスタンスやコンテナ実行環境、同社の FaaS である Lambda 実行環境などがあります。

さらに、AWS からは arm64 アーキテクチャAmazon Linux 2 イメージ (linux/arm64/v8) が公開されています。

そこで、手元にあった Raspberry Pi 3 の OS を 64bit 版に切り替えて、Amazon Linux 2 イメージをコンテナで実行してみることにしました。

メモリ容量の少ない Raspberry Pi 3 でコンテナを実行するために、なるべくオーバーヘッドの少ない実行環境を構築したいという理由から、containerd を使う nerdctl をインストールして使用することにしました。

準備

コンテナの実行を有効にする準備をします。

まず、nerdctl でコンテナイメージを実行する時に、iptables が必要になるため、これをインストールします。

apt-get update
apt-get install -y iptables

次に、/boot/cmdline.txt の行に以下を追加します。これは必ず既存の行にそのまま追記するようにしてください。

cgroup_memory=1 cgroup_enable=memory

追記後は、以下のようになりました。

console=serial0,115200 console=tty1 root=PARTUUID=559b8d0e-02 rootfstype=ext4 fsck.repair=yes rootwait cgroup_memory=1 cgroup_enable=memory

追記後、reboot コマンドを実行して再起動してください。

nerdctl のインストール

nerdctl は、GitHub リポジトリから full バージョンをダウンロードします。

curl -Lo nerdctl-full-linux-arm64.tar.gz https://github.com/containerd/nerdctl/releases/download/v0.16.1/nerdctl-full-0.16.1-linux-arm64.tar.gz

私は、root ユーザでコンテナ実行できるように、/usr/local に展開しました。

sudo tar Cxzvvf /usr/local nerdctl-full-linux-arm64.tar.gz

サービスの有効化

sudo systemctl enable --now containerd

Amazon Linux 2 イメージの実行

nerdctl は、docker コマンド、docker-compose コマンドとほぼ同様に使用できます。

sudo nerdctl run -it --rm amazonlinux:2

まとめ

Apple は、同社の arm64 アーキテクチャプロセッサの Apple silicon を搭載した Mac にシフトしています。またクラウドプロバイダも AWSOutposts も含め arm64 アーキテクチャの採用を推進しているように見えます。arm64 イメージのテストに安価な Raspberry Pi が使用できるようになったことは非常に嬉しいことだと考えています。

参考