SE の雑記

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

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

with one comment

Azure SQL Database Edge は、x64 ならびに ARM64 のデバイス上で動作させることができる、コンテナーの SQL Server となります。
(SQL Server は、2016 以降は x86 は提供していないため、SQL Database Edge も x64 のみとなります)

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

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

ベース環境の準備

RaspberryPi 4 の OS としては Raspbian Buster を使用することが多いのでしょうかね。

Raspbian Buster ですが、armhf (x86) 版での提供となっているようです。
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 については、ARM/RaspberryPi / Install Ubuntu Server on a Raspberry Pi 2, 3 or 4  からダウンロードすることができます。

19.10.1 の ARM64 版のイメージ (ubuntu-19.10.1-preinstalled-server-arm64+raspi3.img) を使用してみたのですが、このイメージは SD カードに書き込めばすぐに起動することができました。
(現時点の、IoT Edge のサポートは Ubuntu  16.04 / 18.04 になりますので、18.04 を入れたほうがチュートリアルをこなしやすいと思いますが)

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

SD カードにイメージを書き込み、RaspberryPi に差し込み起動します。

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

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

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

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

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

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


moby エンジン(実稼働環境でサポートされているコンテナーランタイム) でインストールする場合は、コンテナー ランタイムをインストールする で記載されている方法を使用します。

Ubuntu 18.04 であれば、Microsoft キーとソフトウェア リポジトリ フィードを登録する で、リポジトリを構成すれば、MS のリポジトリ経由で Moby ランタイムをインストールすることができます。

 

ラズパイ 4 で Kubernetes タワーも作りたいので、今回は Docker エンジン (IoT Edge の実運用環境では非推奨) を、k8s の v1.16.0 がサポートしている 18.09 をインストールしておこうと思います。

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

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

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

 

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 は現時点ではサポート対象となっていませんが、今回は動けばいいやということでとりあえず入れます。

(そして動きました)

 

最初に試したときは、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