0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ラズパイ1にGreengrassのnucleus liteをビルドしてインストール

Posted at

先月新しく登場したGreengrass nucleus liteですが、現状ARM64デバイス向けのインストーラーのみが用意されており、CPUアーキテクチャが異なる場合は、自前でビルドする必要があります。

2025年も現役バリバリ(?)のラズパイ1で実際にビルドしてインストールしてみました。

ラズパイ1のスペック

我が家のラズパイ1はRaspberry Pi Model Bと思われます。

image.png

Raspberry Pi OSは最新版の「Raspberry Pi OS Lite」を使用しました。

uname -a
Linux raspberrypi 6.6.51+rpt-rpi-v6 #1 Raspbian 1:6.6.51-1+rpt3 (2024-10-08) armv6l GNU/Linux

armv6lというCPUアーキテクチャのようです。

マネジメントコンソールでコアデバイスを登録

  1. 左メニューの「Greengrassデバイス」の「コアデバイス」を選択します
    「コアデバイスをセットアップ」メニューの「1つのCoreデバイスをセットアップ」を選択します

  2. コアデバイス名とモノのグループの情報を入力します(とりあえずデフォルトでOK)

  3. 「Nucleus Lite」を選択します
    「独自のカスタムビルドでデバイスをセットアップ」を選択します

  4. 「モノを作成」ボタンをクリックします
    「接続キットをダウンロード」をクリックし接続キット({コアデバイス名}-connectionKit.zip)をダウンロードします

    ダウンロード後、画面最下部の「コアデバイスを表示」をクリックします
    (ラズパイ1側の設定が完了するまでは一覧にコアデバイスは表示されません)

ラズパイ1にインストールする

  1. ラズパイ1に接続キットを転送します

    scp {コアデバイス名}-connectionKit.zip pi@{ラズパイ1のIPアドレス}:/home/pi
    
  2. ラズパイ1にSSHで接続します

    ssh pi@{ラズパイ1のIPアドレス}
    
  3. ビルドに必要な環境をセットアップします

    sudo apt update
    
    sudo apt install -y libssl-dev libcurl4-openssl-dev libsqlite3-dev libyaml-dev \
      libsystemd-dev liburiparser-dev uuid-dev libevent-dev libzip-dev cgroup-tools
    
    sudo apt install -y build-essential pkg-config cmake git curl
    
  4. Greengrassの動作に必要なユーザーを作成します

    sudo groupadd ggcore
    sudo useradd -Ng ggcore ggcore
    
    sudo groupadd gg_component
    sudo useradd -Ng gg_component gg_component
    
  5. 接続キットを展開します

    unzip {コアデバイス名}-connectionKit.zip
    

    4ファイルほど展開されます。

    tree /home/pi
    /home/pi
    ├── AmazonRootCA1.pem
    ├── config.yaml
    ├── device.pem.crt
    └── private.pem.key
    
  6. 証明書を所定の位置に配置します

    sudo mkdir /ggcredentials
    sudo cp AmazonRootCA1.pem device.pem.crt private.pem.key /ggcredentials/
    sudo chown -R ggcore:ggcore /ggcredentials
    
  7. 設定ファイルを一部書き換えます

    展開したconfig.yamlは以下のような内容となっています。

    ---
    system:
      certificateFilePath: "{{config_dir}}/device.pem.crt"
      privateKeyPath: "{{config_dir}}/private.pem.key"
      rootCaPath: "{{config_dir}}/AmazonRootCA1.pem"
      thingName: "GreengrassQuickStartCore-19420944fac"
    services:
      {{nucleus_component}}:
        componentType: "NUCLEUS"
        configuration:
          awsRegion: "us-east-1"
          iotRoleAlias: "GreengrassV2TokenExchangeCoreDeviceRoleAlias"
          iotDataEndpoint: "**********-ats.iot.us-east-1.amazonaws.com"
          iotCredEndpoint: "**********.credentials.iot.us-east-1.amazonaws.com"
    

    まずはこちらを参考に{{config_dir}}{{nucleus_component}}を置換します。

    sed -i -e s:{{config_dir}}:\/ggcredentials:g -e s:{{data_dir}}:\/var\/lib\/greengrass:g -e s:{{nucleus_component}}:aws.greengrass.NucleusLite:g config.yaml
    

    rootCaPaththingNameの間にrootPathを追加します

        system:
          certificateFilePath: "/ggcredentials/device.pem.crt"
          privateKeyPath: "/ggcredentials/private.pem.key"
          rootCaPath: "/ggcredentials/AmazonRootCA1.pem"
    +     rootPath: "/var/lib/greengrass"
          thingName: "GreengrassQuickStartCore-19420944fac"
        services:
    
  8. 設定ファイルを所定の位置に配置します

    sudo mkdir -p /etc/greengrass
    sudo cp config.yaml /etc/greengrass/config.yaml
    sudo chown -R ggcore:ggcore /etc/greengrass
    
  9. Greengrass nucleus liteを取得します

    git clone https://github.com/aws-greengrass/aws-greengrass-lite.git
    cd aws-greengrass-lite
    
  10. ビルドします

    cmake -B build -D CMAKE_BUILD_TYPE=MinSizeRel -D GGL_LOG_LEVEL=DEBUG
    make -C build -j$(nproc)
    sudo make -C build install
    
    インストールログ(一部抜粋)
    Install the project...
    -- Install configuration: "MinSizeRel"
    -- Installing: /usr/local/bin/ggl-cli
    -- Installing: /usr/local/lib/systemd/system/ggl.core.ggipcd.service
    -- Installing: /usr/local/lib/systemd/system/ggl.gg-ipc.socket.socket
    -- Installing: /usr/local/lib/systemd/system/ggl.ipc_component.socket
    -- Installing: /usr/local/bin/ggipcd
    -- Installing: /usr/local/lib/systemd/system/ggl.core.ggconfigd.service
    -- Installing: /usr/local/lib/systemd/system/ggl.gg_config.socket
    -- Installing: /usr/local/bin/ggconfigd
    -- Installing: /usr/local/lib/systemd/system/ggl.core.gghealthd.service
    -- Installing: /usr/local/lib/systemd/system/ggl.gg_health.socket
    -- Installing: /usr/local/bin/gghealthd
    -- Installing: /usr/local/lib/systemd/system/ggl.aws_iot_mqtt.socket
    -- Installing: /usr/local/lib/systemd/system/ggl.core.iotcored.service
    -- Installing: /usr/local/bin/iotcored
    -- Installing: /usr/local/lib/systemd/system/ggl.core.ggpubsubd.service
    -- Installing: /usr/local/lib/systemd/system/ggl.gg_pubsub.socket
    -- Installing: /usr/local/bin/ggpubsubd
    -- Installing: /usr/local/lib/systemd/system/ggl.core.ggdeploymentd.service
    -- Installing: /usr/local/lib/systemd/system/ggl.gg_deployment.socket
    -- Installing: /usr/local/bin/ggdeploymentd
    -- Installing: /usr/local/lib/systemd/system/ggl.core.gg-fleet-statusd.service
    -- Installing: /usr/local/lib/systemd/system/ggl.gg_fleet_status.socket
    -- Installing: /usr/local/bin/gg-fleet-statusd
    -- Installing: /usr/local/lib/systemd/system/ggl.aws_iot_tes.socket
    -- Installing: /usr/local/lib/systemd/system/ggl.core.tesd.service
    -- Installing: /usr/local/bin/tesd
    -- Installing: /usr/local/bin/fleet-provisioning
    -- Installing: /usr/local/bin/ggl-config-init
    -- Installing: /usr/local/bin/recipe-runner
    -- Installing: /usr/local/lib/systemd/system/ggl.aws.greengrass.TokenExchangeService.service
    -- Installing: /usr/local/bin/tes-serverd
    -- Installing: /usr/local/lib/systemd/system/greengrass-lite.target
    -- Installing: /usr/local/lib/tmpfiles.d/greengrass_dir.conf
    -- Installing: /usr/local/bin/echo-server
    -- Installing: /usr/local/bin/example-client
    -- Installing: /usr/local/bin/mqtt-client
    -- Installing: /usr/local/bin/deployment-client
    -- Installing: /usr/local/bin/status-monitor-client
    -- Installing: /usr/local/bin/configtest
    -- Installing: /usr/local/bin/s3-get-test
    -- Installing: /usr/local/bin/tesd-test
    -- Installing: /usr/local/bin/recipe2unit-test
    -- Installing: /usr/local/bin/ggconfigd-test
    -- Installing: /usr/local/bin/semver-test
    make: Leaving directory '/home/pi/aws-greengrass-lite/build'
    

    トータルで20分ぐらいで完了します

  11. サービスを有効化し、起動します
    systemctl enablesystemctl startをするだけなのですが、モジュールごとに有効化する必要があるのでスクリプトで実行すると楽ちんです)

    sudo ./misc/run_nucleus 
    

うまく設定ができると、マネジメントコンソール上に表示されます。
(GreengrassQuickStartCore-19420944facが今回追加したコアデバイスです)

参考

https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/INSTALL.md
https://github.com/aws-greengrass/aws-greengrass-lite/blob/main/docs/SETUP.md
https://qiita.com/sparkgene/items/a6d4710e8d192b87e292

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?