ブログ

Armadillo Base OS:量産時にABOS Webで個体毎に異なるトークンを付与する方法(インストールディスクで付与)

at_shinya.matsumoto
2024年8月29日 15時55分

Armadillo Base OS搭載製品ではABOS WebのREST APIを使用して、コンテナ内からアップデートや
ネットワークの変更、コンテナの操作、電源制御などを行う事が可能です。

本ブログでは量産時にREST APIを使用する為のトークンを固有のトークンとして作成する方法を紹介します。

実施手順

1.ABOS Webのトークンを削除

 開発が完了したら量産用にインストールディスクを作成しますが、このまま量産用インストールディスクを
 作成するとトークンが全て同じになります。異なるトークンにしたい場合は一度トークンを削除します。


2.SDカードを入れてインストールディスクを作成

 Armadillo-IoT A6Eの無線LAN搭載版以外はSDカードを挿入した状態でabos-ctrl make-installerコマンドを
 実行すると実機をコピーしたインストールディスクが作成されます。
 その際、第二パーティションを使うか聞かれますので適当なサイズ(最小の16MBで十分です)を指定して
 実行します。

インストールディスク作成

[armadillo]# abos-ctrl make-installer

3.SDカードの第二パーティションに下記スクリプトを配置

 SDカードを見ると第二パーティションが作成されていますので、下記の”installer_overrides.sh ”を配置します。
 実行権限も付けて配置してください。

installer_overrides.sh (下記はSwuView,SwuInstallの権限を与える例)

#installer_overrides.sh 
 
preinstall() {
        : "Preinstall function, run before eMMC is partitionned"
}
postinstall() {
        : "Postinstall function, run after all other steps except sending logs"
    token=$(cat /proc/sys/kernel/random/uuid)
    mkdir -p /target/etc/atmark/abos_web/tokens
    echo '{"permissions":["SwuView","SwuInstall"]}' > "/target/etc/atmark/abos_web/tokens/${token}.token"
}
send_log() {
        : "This function is called after aggregating logs for archival"
}

4.インストールを実行(固有のトークンが書き込まれる)

 SDカードを入れてインストールを実行すると、ABOS Webまたは/etc/atmark/abos_web/tokens/を確認すると
 固有のトークンが作成されている事が分かります。

作成されたトークンの確認
armadillo:~# ls /etc/atmark/abos_web/tokens/
16ac5299-991e-4fdc-8698-a9d405da075a.token

トークンの権限
armadillo:~# cat /etc/atmark/abos_web/tokens/16ac5299-991e-4fdc-8698-a9d405da075a.token
{"permissions":["SwuView","SwuInstall"]}

 コンテナから操作するにはトークンを知る必要がありますが、/etc/atmark/abos_web/tokens/をコンテナの
 コンフィグファイル(app.conf または コンテナ名.conf)でボリュームマウント設定しておくことでコンテナから
 トークンを確認出来ます。
 例) add_volumes /etc/atmark/abos_web/tokens:/vol_tokens

以上で完了です。