SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

RaspberryPi 4B で Docker と IoT Edge ランタイムを起動するための準備

one comment

Azure SQL Database Edge は、x64 ならびに ARM64 のデバイス上で動作させることができる、コンテナーの SQL Server となります。

SQL Database Edge を稼働させるための準備として、RaspberryPi 4B (ラズベリーパイ4 / ラズパイ4) を購入したので下準備として Docker と IoT Edge ランタイムを動作させるまでの方法をメモとして残しておきたいと思います。

IoT 関連は全く触ってきておらず、ラズパイを使うのも初めてに近いので、そもそもとして間違っていることがあるかもしれません (

ベース環境の準備

RaspberryPi 4 の OS としては Raspbian Buster を使用することが多いのでしょうかね。
Raspbian Buster ですが、armhf 版での提供となっているようです。

SQL Database Edge には、ARM64 の OS が必要となりますので、この種類の OS を準備する必要があります。
海外では、SQL Database Edge のデモが何回も行われており、SQL Database Edge on Arm Device の動画で使用されているデモ環境が紹介されています。

以下の画像が動画内で紹介されているデモ環境となります。

image

このスペックですが、CPU /  メモリのスペックについては、ラズパイ4 の 4GB モデルと同じかと思います。
以前は、ROCK64 をデモデバイスとして使用していたようですが、最近はラズパイ 4 なのでしょうかね。

このデモでは OS に Ubuntu を使用しているということなので、今回もそれに倣って Ubuntu で環境の構築を行います。

RaspberryPi 向けの Ubuntu については、こちら からダウンロードすることができます。
19.10.1 の ARM64 版のイメージであれば、このイメージを SD カードに書き込めばすぐに起動することができるかと。

19.10 のイメージの時には ラズパイ 4 の 4GB (1/2 かずあき) モデルでは、メモリのサイズを変更しないと USB を認識しないというような問題がありました。

そのため、「/boot/firmware/usercfg.txt」に「total_mem=3072」を記載して、メモリを低い状態で起動して初期のセットアップを USB キーボードで実施してから、設定を戻して SSH で接続して作業をするというような方法か、パッチ適用済みのパッケージを適用してカーネルをアップデートする必要がありました。

現在提供されている 19.10.1 であれば、メモリサイズの変更 / パッチの適用を行わなくても USB を認識しますので、最新のイメージを使用していれば問題はないかと。

今回、イメージの書き込みには Win32 Disk Imager を使用しました。

SD カードにイメージを書き込み、初期ユーザーである ubuntu (パスワードも ubuntu) でログインして、新しいパスワードを入力すれば、ベース環境の準備は完了です。

SSH でつなげるはずですので、移行の作業はリモートで可能となります。

 

Docker のインストール

Docker をインストールする際には、https://github.com/docker/docker-install や、Get Docker Engine – Community for Ubuntu で記載されている作業を実施するのが一般的な導入方法でしょうか。

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh


Ubuntu 19.10 を使用した場合、現時点では「get-docker.sh」ではリポジトリ内にリリースファイルがないということで、インストールできないようなので手動でインストールしていきます。

手動でのインストールについては Docker on Raspberry Pi が参考になります。

ARM64 版については https://download.docker.com/linux/debian/dists/buster/pool/stable/arm64/ でパッケージを確認できますので、ここから必要となるバージョンをインストールします。

ラズパイ 4 で Kubernetes タワーも作りたいので、今回は k8s の v1.16.0 がサポートしている 18.09 をインストールしておこうと思います。

wget https://download.docker.com/linux/debian/dists/buster/pool/stable/arm64/containerd.io_1.2.6-3_arm64.deb
wget https://download.docker.com/linux/debian/dists/buster/pool/stable/arm64/docker-ce-cli_18.09.9\~3-0\~debian-buster_arm64.deb
wget https://download.docker.com/linux/debian/dists/buster/pool/stable/arm64/docker-ce_18.09.9\~3-0\~debian-buster_arm64.deb
sudo dpkg -i containerd.io_1.2.6-3_arm64.deb
sudo dpkg -i docker-ce-cli_18.09.9\~3-0\~debian-buster_arm64.deb
sudo dpkg -i docker-ce_18.09.9\~3-0\~debian-buster_arm64.deb
sudo usermod -a -G docker $USER
sudo reboot


 

インストールが終わって docker コマンドが使用できるようになったら、Hello World を実行して動作確認をしてみます。

docker run --rm hello-world


image

正常に動作しましたので、Docker の準備はこれで完了です。

 

IoT Edge ランタイムのインストール

Azure SQL Database Edge は、Azure IoT Edge の IoT Edge モジュールとして起動されますので、作成した環境に IoT Edge ランタイムをインストールします。

現時点では、IoT Edge ランタイムがサポートしている Ubuntu Server は 16.04 / 18.04 となっており、今回使用した 19.10 は現時点ではサポート対象となっていませんが、今回は動けばいいやということでとりあえず入れます。

(コンテナーエンジンについても Docker CE ではなく、 moby-engine がサポート対象となるようですが、今回は Docker CE がサクッと入ったので、こちらを使用しています)

最初に試したときは、libssl がインストールされていなくてエラーになっていたので、ひとまず IoT Edge ランタイムのインストールと合わせてインストールしています。

wget http://launchpadlibrarian.net/413028781/libssl1.0.0_1.0.2g-1ubuntu4.15_arm64.deb
sudo dpkg -i libssl1.0.0_1.0.2g-1ubuntu4.15_arm64.deb
curl https://packages.microsoft.com/config/ubuntu/18.04/multiarch/prod.list > ./microsoft-prod.list
sudo cp ./microsoft-prod.list /etc/apt/sources.list.d/
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo cp ./microsoft.gpg /etc/apt/trusted.gpg.d/
sudo apt-get update
sudo apt-get -y install iotedge


 

ここまでの作業が終われば セキュリティ デーモンを構成する で接続文字列の設定の作業を実施すれば IoT ハブとの通信ができるようになっているかと思います。

image

この後、SQL Database Edge を実際に試すためには、早期導入プログラム (EAP : Early Adoption Program) の承認を得てから、Azure SQL Database Edge のドキュメントAzure SQL Database Edge プレビューのデプロイ の内容に従って展開を行うことになるかと思います。

Written by masayuki.ozawa

12月 7th, 2019 at 12:40 am

One Response to 'RaspberryPi 4B で Docker と IoT Edge ランタイムを起動するための準備'

Subscribe to comments with RSS or TrackBack to 'RaspberryPi 4B で Docker と IoT Edge ランタイムを起動するための準備'.

Leave a Reply

*