Jetson NanoでAzure IoT Edgeを動かす

Jetson Nanoで、Azure IoT Edgeが動くか確認します。

Jetson NanoにOSをセットアップ

こちらの手順に沿って、OSイメージをマイクロSDに書き込んでブートします。

developer.nvidia.com

現時点のOSイメージファイルはjetson-nano-sd-r32.2-2019-07-16.zipでした。

OSバージョンを確認

/etc/os-releaseuname -aで、OSバージョンを確認。

matsujirushi@jetsonnano:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="18.04.2 LTS (Bionic Beaver)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 18.04.2 LTS"
VERSION_ID="18.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=bionic
UBUNTU_CODENAME=bionic
matsujirushi@jetsonnano:~$ uname -a
Linux jetsonnano 4.9.140-tegra #1 SMP PREEMPT Tue Jul 16 17:04:49 PDT 2019 aarch64 aarch64 aarch64 GNU/Linux
matsujirushi@jetsonnano:~$

Ubuntu 18.04.2 LTSaarch64でした。

Azure IoT Edgeのサポート状況

Azure IoT Edgeのサポート状況を確認すると、Ubuntu 18.04 ARM64はTier 1だがPublic preview

f:id:matsujirushix:20190812155313p:plain

Azure IoT Edgeをインストール

Azure IoT Edgeのインストール手順に従って、インストールします。

docs.microsoft.com

Jetson NanoのOSイメージにcurlが入っていなかったのでインストール。

sudo apt update
sudo apt install curl

インストール手順を実施。

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 install moby-engine

エラー発生。

moby-engine (3.0.6) を展開しています...
dpkg: アーカイブ /var/cache/apt/archives/moby-engine_3.0.6_arm64.deb の処理中にエラーが発生しました (--unpack):
 '/usr/bin/docker-proxy' を上書きしようとしています。これはパッケージ docker.io 18.09.2-0ubuntu1~18.04.1 にも 存在します
dpkg-deb: エラー: ペースト subprocess was killed by signal (Broken pipe)
処理中にエラーが発生しました:
 /var/cache/apt/archives/moby-engine_3.0.6_arm64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

あぁ、なるほど。Dockerが既に入っているので、moby-engineでエラーなのか。

mobyの部分はスルーして継続。(マイクロソフトmoby-engineを推奨しているので、今回は推奨外の構成になります。)

sudo apt-get update
sudo apt-get install iotedge
sudo vi /etc/iotedge/config.yaml
sudo systemctl restart iotedge

とりあえず、Runtimeは動いてる感じ。

サンプルのモジュールを動かす

Simulated Temperature Sensorをデプロイしてみて、Azure IoT Hubにメッセージが送られてくるか確認。

f:id:matsujirushix:20190812165827p:plain

ちゃんと動いています。