Pelion Edge は、Pelion デバイス管理サービスのエッジゲートウェイ向けソリューションです。
無償で利用可能な評価用のアカウントも用意されています。このドキュメントでは、Pelion Edge の最新バージョンである 2.0.0-rc1 のご紹介およびそのビルドと立ち上げまでの一連の手順をご説明いたします。
- ちなみに、後述のブートストラップ証明書を使って AWS IoT Core に接続することもできます。詳しい方法は、こちらの記事をご参照ください。
Pelion Device Management 管理下のマイコンデバイスにおけるデータの分析・可視化とアラート通知
Pelion Edge 2.0.0 は、この記事の執筆時点で 2020年6月末 の正式リリースを目指しておりますが、そのレポジトリは 2.0.0-rc1 として GitHub 上で公開されています。
https://github.com/armPelionEdge/meta-pelion-edge/tree/2.0.0-rc1
2.0 で追加される新しい機能は以下の通りです。
- ゲートウェイを介してBLEで接続されるセンサーデバイスのアップデート
- リモートターミナル
- ゲートウェイのログ
- リモートネットワーク設定
ちなみに、現在準備中の 2.1 では Docker アプリケーションオーケストレーション機能が追加されます。
- エッジのコンテナオーケストレーション:
オフラインコンテナ機能、ゲートウェイトンネリング、永続的なボリューム管理、デバイス管理を使用した統合認証、コンテナ機能を含む再起動とリセットの拡張機能が含まれます。 → 2020/10/01 追記:2020/09/25 に 2.1 がリリースされました。
-
Ubuntu 18.04 をインストールした PC
(仮想マシン環境ではなく、専用のデスクトップPCをご用意いただくことをお勧めします。また、30GB以上のストレージの空きが必要。) -
Pelion アカウントの取得
詳しくは、こちらのリンクをご参照ください。 Pelion Portal Account の取得とサービス利用準備 -
microSD(16GB あれば大丈夫です)
以下、順番に実行していただければビルドできます。
ホームディレクトリの直下に .ssh がないことを確認
$ cd
$ ls -al ~/.ssh
$ ssh-keygen -t rsa -b 4096 -C "<your email address>"
Enter file in which to save the key (...) では、そのままリターンするとデフォルトディレクトリに key file が生成されます。 Enter passphrase では、設定しない場合はそのままリターンします。
$ eval $(ssh-agent -s)
$ ssh-add ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub
id_rsa.pub の出力をクリップボードにコピーします。
- https://github.com にログイン
Settings -> SSH and GPG keys -> New SSH key
新しい SSH key に任意の名称を付け、クリップボードの id_rsa.pub を貼り付け
$ ssh -T git@github.com
$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add --
$ sudo apt-key fingerprint 0EBFCD88
- x86/amd64 マシンの場合、以下を実行
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io
Docker が正しくインストールされたかチェック
$ sudo docker run hello-world
Root権限がなくても Docker を実行できるように設定
$ sudo groupadd docker
$ sudo usermod -aG docker $USER
- Ubuntu を再起動 以下が正常に実行できることを確認できれば完了
$ docker run hello-world
$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm
- ローカルレポジトリ初期化
$ git config --global user.name "<GitHub user name>"
$ git config --global user.email "<GitHub email address>"
$ mkdir ~/bin
$ PATH=~/bin:${PATH}
$ curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
$ chmod a+x ~/bin/repo
$ mkdir build
$ cd build
→ 2021/05/26 編集:2021/05/26 現在の最新版は 2.3 です。
$ repo init -u ssh://git@github.com/armpelionedge/manifest-pelion-edge.git
Enable color display in this user account (y/N)? では y を入力
$ ls -la
ここで.repo ディレクトリがあることを確認
- レポジトリとの同期
$ repo sync -j8
ブートストラップ証明書とは、IoTデバイス管理のライフサイクルの中でデバイス出荷後に運用を開始する時点で必要となる証明書です。
このチュートリアルでは、イメージがインストールされた時点ですぐに運用を開始するものとして開発者モードの証明書を発行します。
-
証明書の取得
Arm Pelion Device Management portal にログイン
デバイスID -> 証明書
"+ 新しい証明書" をクリック -> 開発者証明書の作成
証明書が発行されましたら、右上のダウンロードアイコンをクリックし "mbed_cloud_dev_credentials.c" をダウンロードしてください。
$ cd build-env
$ cp <path-to-file>/mbed_cloud_dev_credentials.c .
マニフェストツール証明書とは、ファームウェアの更新に必要なキャンペーンの登録の際にその真正性を証明するために必要となる証明書です。
このチュートリアルでは、決め打ちの開発者モードで発行します。
- マニフェストツールのインストール
参照リンク
参照リンク - README
$ cd ~/build
$ sudo apt install python-pip
$ pip install manifest-tool --user
$ pip install git+https://github.com/ARMmbed/mbed-cloud-sdk-python.git
$ export PATH=$PATH:~/.local/bin
- 証明書の取得
$ manifest-tool init -V 42fa7b48-1a65-43aa-890f-8c704daade54 -C c56f3a62-b52b-4ef6-95a0-db7a6e3b5b21
In which country is the subject located? では、2 character country code を入力してください。(例:JP)
In which state or province is the subject located? では、都道府県を入力してください。 (例:Kanagawa)
In which city or region is the subject located? では、市町村を入力してください。(例:Yokohama)
What is the name of the subject organization? では、所属組織名を入力してください。(例:Arm)
What is the common name of the subject organization? では、所属組織略称を入力してください。(例:Arm)
How long (in days) should the certificate be valid? [90] では、証明書の有効期間を入力してください。デフォルトは90日ですが、ここで 3650日(約10年)と入力されることをお勧めします。
$ cd ~/build/build-env
$ mv ../update_default_resources.c .
$ make
ビルドマシンの処理能力によりますが、完了まで数時間かかることを想定してください。
PC に microSD を挿入
$ lsblk
- 出力結果に"mmcblk*"があることを確認
microSD を unmount
$ ls /dev/mmcblk* | xargs -n1 umount -l
イメージをホームディレクトリにコピーしてから(しなくても良いですが)microSD に書き込み
$ cd
$ cp ~/build/poky/build/tmp/deploy/images/raspberrypi3/console-image-raspberrypi3-*.wic.gz .
$ gunzip -c console-image-raspberrypi3-xxx.rootfs.wic.gz | sudo dd bs=4M of=/dev/mmcblkx conv=sync status=progress iflag=fullblock oflag=direct
- イメージサイズは 約7GB
microSD を unmount
$ls /dev/mmcblk* | xargs -n1 umount -l
PC から microSD を取り外す
Raspberry Pi 3B+ (以下 RPi) に microSD を挿入
RPi の電源 ON
- ログイン
Raspberrypi3 login: root
Password: redmbed -> ログイン後、パスワード変更が求められます。
RPi を有線LANでインターネットに接続
- インターネットにつながったかどうか確認
$ ifconfig
- Pelion Edge の接続情報を確認
$ info
-
接続の確立は、以下により確認できます。(接続まで少々時間がかかります):
System Information に IPアドレスが表示される
Account ID shows up on Account Information に Account ID が表示される
Account Information の Status が connected と表示される -
また、接続されるとポータル画面に登録済み Gateway デバイスとして緑色で表示されます。
- 公式にはサポートされていませんが、以下の手順で無線LANに接続できる場合があります:
$ mkdir /etc/wpa_supplicant
$ vi /etc/wpa_supplicant/wpa_supplicant-wlan0.conf
無線LANネットワークにセキュリティ保護ありの場合、下記 ssid と passphrase に適切な値を設定してください。
network={
key_mgmt=WPA-PSK
ssid="<ssid>"
psk="<passphrase>"
}
無線LANネットワークが保護されておらず、パスワードが必要ない場合には下記 ssid に適切な値を設定してください。
network={
key_mgmt=NONE
ssid="<ssid>"
}
保存して終了
最後に以下のコマンドで wpa_supplicant service と configure systemd が再起動時にも実行されるように設定します。
$ systemctl enable --now wpa_supplicant@wlan0
$ systemctl restart edge-core
4.2 で次のようなエラーが出ています。何か知見ありますでしょうか?→ 「再起動後」というのを見逃してました。再起動したらうまくいきました。