Skip to content

Instantly share code, notes, and snippets.

@ryuatarm
Last active June 21, 2021 17:34
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save ryuatarm/b537e12facc80014df126e972cce0810 to your computer and use it in GitHub Desktop.
Save ryuatarm/b537e12facc80014df126e972cce0810 to your computer and use it in GitHub Desktop.
Pelion Edge チュートリアル

1. Pelion Edge チュートリアル

Pelion デバイス管理サービス エッジ

Pelion Edge は、Pelion デバイス管理サービスのエッジゲートウェイ向けソリューションです。

無償で利用可能な評価用のアカウントも用意されています。このドキュメントでは、Pelion Edge の最新バージョンである 2.0.0-rc1 のご紹介およびそのビルドと立ち上げまでの一連の手順をご説明いたします。

2. Pelion Edge 2.0.0-rc1

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 がリリースされました。

3. 準備

4. ビルド

以下、順番に実行していただければビルドできます。

4.1 GitHub との SSH 接続

ホームディレクトリの直下に .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

4.2 Docker インストール

$ 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

4.3 Yocto Linux Essentials のインストール

$ 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

4.4 レポジトリ取得

  • ローカルレポジトリ初期化
$ 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

4.5 ブートストラップ証明書の取得

ブートストラップ証明書とは、IoTデバイス管理のライフサイクルの中でデバイス出荷後に運用を開始する時点で必要となる証明書です。
このチュートリアルでは、イメージがインストールされた時点ですぐに運用を開始するものとして開発者モードの証明書を発行します。

$ cd build-env
$ cp <path-to-file>/mbed_cloud_dev_credentials.c .

4.6 マニフェストツール証明書の取得

マニフェストツール証明書とは、ファームウェアの更新に必要なキャンペーンの登録の際にその真正性を証明するために必要となる証明書です。
このチュートリアルでは、決め打ちの開発者モードで発行します。

$ 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 .

4.7 イメージのビルド

$ make

ビルドマシンの処理能力によりますが、完了まで数時間かかることを想定してください。

5. イメージ書き込み

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 を取り外す

6. Raspberry Pi 3B+

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 デバイスとして緑色で表示されます。

6.1 無線LAN接続

  • 公式にはサポートされていませんが、以下の手順で無線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
@coisme
Copy link

coisme commented Jun 25, 2020

4.1 で ssh -add ~/.ssh/id_rsa とありますが ssh-add ~/.ssh/id_rsa でないとうまくいきませんでした。

@coisme
Copy link

coisme commented Jun 25, 2020

4.2 で次のようなエラーが出ています。何か知見ありますでしょうか? → 「再起動後」というのを見逃してました。再起動したらうまくいきました。

koizumi@parallels-Parallels-Virtual-Platform:~$ sudo groupadd docker
groupadd: group 'docker' already exists
koizumi@parallels-Parallels-Virtual-Platform:~$ sudo usermod -aG docker $USER
koizumi@parallels-Parallels-Virtual-Platform:~$ docker run hello-world
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.
koizumi@parallels-Parallels-Virtual-Platform:~$

@ryuatarm
Copy link
Author

4.1 で ssh -add ~/.ssh/id_rsa とありますが ssh-add ~/.ssh/id_rsa でないとうまくいきませんでした。

ご指摘ありがとうございます。Typo でした。訂正しておきました。

@teddymatayoshi-arm
Copy link

teddymatayoshi-arm commented Jun 26, 2020

仮想マシンにて下記スペックでMakeを成功しました。

PC OS: macOS Catalina 10.15.5
VirtualBox: 6.1.10
CPU: 2 Core
RAM: 8GB
HDD: 70GB(固定)

@ryuatarm
Copy link
Author

ryuatarm commented Jul 2, 2020

昨日、Pelion Edge 2.0.0 が正式にリリースされました。
https://github.com/armPelionEdge/meta-pelion-edge
ローカルレポジトリ初期化で
$ repo init -u ssh://git@github.com/armpelionedge/manifest-pelion-edge.git
とすれば上記手順通りでビルドできます。

@ryuatarm
Copy link
Author

ryuatarm commented Oct 1, 2020

本文にも記入しましたが、2020/09/25 に Pelion Edge 2.1.0 がリリースされました。

Release tag: https://github.com/armPelionEdge/meta-pelion-edge/tree/2.1.0
Release notes updated: https://www.pelion.com/docs/device-management-edge/2.1/release-notes/index.html
Documentation updated: https://www.pelion.com/docs/device-management-edge/2.1/introduction/index.html

Noteworthy features:
-adds Pelion Edge container orchestration feature edge-kubelet to work with Pelion's KAAS
-adds edge-proxy tunneling laying foundation for single-pipe cloud communication
-separates quick start guide for snap-pelion-edge & meta-pelion-edge

手順の変更点は、以下のみです:
$ repo init -u ssh://git@github.com/armpelionedge/manifest-pelion-edge.git -b 2.1-release-into-dev

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment