Skip to content

Instantly share code, notes, and snippets.

@coisme
Forked from ryuatarm/readme_edge_2.0.0-rc1.md
Created June 25, 2020 01:45
Show Gist options
  • Save coisme/e6b4b0d7c0c41bc0bcd607cf7e44c59d to your computer and use it in GitHub Desktop.
Save coisme/e6b4b0d7c0c41bc0bcd607cf7e44c59d to your computer and use it in GitHub Desktop.
Pelion Edge チュートリアル

1. Pelion Edge チュートリアル

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

Pelion Edge は、Pelion IoT Platform を構成するサービスの一つである Pelion Device Management のエッジゲートウェイ向けソリューションです。

無償で利用可能な評価用のアカウントも用意されています。このドキュメントでは、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 アプリケーションオーケストレーション機能が追加されます。

  • エッジのコンテナオーケストレーション:
    オフラインコンテナ機能、ゲートウェイトンネリング、永続的なボリューム管理、デバイス管理を使用した統合認証、コンテナ機能を含む再起動とリセットの拡張機能が含まれます。

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
$ repo init -u ssh://git@github.com/armpelionedge/manifest-pelion-edge.git -b 2.0.0-rc1

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 ~/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 -> ログイン後は "chpasswd" でパスワード変更をお勧めします

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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment